从无锁机是什么意思啊啊

查看: 6527|回复: 13
I2C从机问题
之前做项目,MCU都是I2C主机,而且多是访问24C系列的EEPROM,认为I2C编程超级简单,而且用GPIO就可以模拟得到
但是有一天我想实现一块24C的EEP的功能,再用一块MCU作为主机访问它,却碰到了很多问题(主要是从机的编程),最终实现了,总结一下咯,里面有很多个人的理解,如果不对请高人纠正~~~
首先模拟GPIO是不可能了,因为要捕获到start信号就够你折腾的,于是我开启了I2C的从机下的接收和发送中断。
我先说说对于从记下的接收和发送中断的理解(从机的I2C地址为:读-0xA1,写-0xA0)
接收中断,只响应0xA0的写指令,也就是说主机只有先发送了0xA0之后,再发送的数据才能进入接收中断,并且I2C模块自动过滤这个命令,也就是说在接收中断中读取接收寄存器的第一个字节是跟在0xA0后面的第一个字节。
发送中断,首先从机的发送需要主机的clk来驱动,当把要发送的数据填入到发送寄存器的时候并不是像uart那样直接就会发送,而是需要等待主机的clk来驱动,因此从机是不知道何时数据被发送出去的,但是却可以知道当前的发送fifo中空了,因此当检测到fifo空了可以产生发送中断(准确的说应该是发送完成中断),而这个中断时需要0xA1这个指令来激活的,也就是说从机只有先接收到了0xA1之后才能在主机的clk的激励下发送数据。
下面是我的实现思路:
1。主机写模式
start + I2C addr (wr) + memory addr + data 1 ... data n + stop
这个比较简单,这要在接收中断中判断第一次接收,记录下来,这个就是memory addr,后面的data每接收一次,记录的同时把memory addr + 1 (当然要考虑回卷问题)
2。主机随机读模式
start + I2C addr (wr) + memory addr +&&stop + I2C addr (rd) + ... + stop
我首先在接收中断中判断第一次,记录下来,这个就是memory addr,并且把该地址下的数据预先填入发送寄存器(注意填入不代表发送,请看以上说明),然后主机会接着发送I2C addr (rd)并且继续要clk来激励,因为我已经预先填入了一个数据,所以发送完成后会触发发送中断,在发送中断中我让memory addr+1,并且继续填入要发送的数据。
整个过程就是这样,关键就是接收中断中要预先填入要发送的数据,尽管下一次指令不一定是0xA1(读取指令)
改一个错误:
2。主机随机读模式
start + I2C addr (wr) + memory addr +&&stop + start + I2C addr (rd) + ... + stop
少了个start
good&&good
回复【楼主位】LitePuter_uvn
-----------------------------------------------------------------------
楼主用的是哪款IC,我现在用的是430F249的单片机,但是这个硬件I2C模式,但是他的操作过程我一直都没怎么弄明白,楼对这快熟的话能不能给我解释一下这快!
回复【楼主位】LitePuter_uvn
-----------------------------------------------------------------------
另外I2C的模式,不是一直都有一个应答位,怎么没有看到资料介绍这个应答位在硬I2C中是如何给出去的???也没有看到有判断I2C中是如何判断接受到了应答位的?
回复【1楼】LitePuter_uvn&&
之前做项目,MCU都是I2C主机,而且多是访问24C系列的EEPROM,认为I2C编程超级简单,而且用GPIO就可以模拟得到
但是有一天我想实现一块24C的EEP的功能,再用一块MCU作为主机访问它,却碰到了很多问题(主要是从机的编程),
-----------------------------------------------------------------------
楼主之前的项目不也是访问24C,后面怎么又说24C的EEP的功能遇到问题呢?搞不懂楼主的问题。。。
回复【6楼】brownheart
-----------------------------------------------------------------------
呵呵,你还是不明白什么意思,之前的项目是mcu访问24c,现在我想要用mcu做一个24c,让别的mcu来访问,第一个mcu是主模式,访问24c这个从设备,第二个mcu是从模式,让别的mcu来访问……
回复【4楼】tianyaxtujxlg
回复【楼主位】liteputer_uvn&&
-----------------------------------------------------------------------
楼主用的是哪款ic,我现在用的是430f249的单片机,但是这个硬件i2c模式,但是他的操作过程我一直都没怎么弄明白,楼对这快熟的话能不能给我解释一下这快!
-----------------------------------------------------------------------
我用的是adi的基于arm7tdmi内核的芯片
硬件i2c模式基本都是一个样子,全部是中断
回复【5楼】tianyaxtujxlg&&
回复【楼主位】liteputer_uvn& &
-----------------------------------------------------------------------&&
另外i2c的模式,不是一直都有一个应答位,怎么没有看到资料介绍这个应答位在硬i2c中是如何给出去的???也没有看到有判断i2c中是如何判断接受到了应答位的?
-----------------------------------------------------------------------
这个是硬件i2c自动答复的,如果连这种应答都需要软件介入的话,那和用gpio模拟没什么区别了,建议你还是仔细看一下它的datasheet,基本上硬件发送和接收应答,stop,这种信号虽然不需要软件接入,但都会产生一个中断的,你只需要关心各个中断怎么处理即可
回复【10楼】LitePuter_uvn
-----------------------------------------------------------------------
我用AVR做主机,430做从机,主机的开始为和地址以及数据都正常发送出来了,但是从机接受到地址和数据后并不做响应,按理来,我只有配置好从机的I2C模式,只要主机有信号发送过来,地址匹配上了起码硬件会自动给出这个应答位!另外作为主机是不是一定要等待从机响应后才能进行下一步的操作???
回复【楼主位】LitePuter_uvn
-----------------------------------------------------------------------
楼主的思路很好,我也想做这个。
请教:你的思路是不用查询用中断,这非常好,避免长时间等待,如果丢失了还容易死循环。
1.你说的用从机的发送和接收中断,那你用的就是串口中断了,而且模式似乎只能用0模式了,那如何判断起始和停止标志?
2.从机不管发送还是接收,包括起始和停止标志,它的CLK都是主机给的,从机中断模式如何接收CLK,特别是发送。
3.如果从机还要完成其它功能,如果用查询方式来接收和发送数据,如何保证超时跳出还不能漏检测信号?
不知道我说明白了没有,万分感谢!
谢谢提供思路 可以试着搞搞...
阿莫电子论坛, 原"中国电子开发网"
, 原www.ourdev.cn, 原www.ouravr.com21ic官方微信-->
SPI中主机和从机模式的区别
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
那么主机和从机模式到底有哪些区别呢?
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
弄懂SPI接口& & & &&&
SPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用。
SPI接口经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。如图1所示,其使用的4条信号线分别为:
1) SCLK:串行时钟,用来同步数据传输,由主机输出;
2) MOSI:主机输出从机输入数据线;
3) MISO:主机输入从机输出数据线;
4) SS:片选线,低电平有效,由主机输出。
在SPI总线上,某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机。这就要求从机的MISO口具有三态特性,使得该口线在器件未被选通时表现为高阻抗。
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
2. 数据传输
在一个SPI时钟周期内,会完成如下操作:
1) 主机通过MOSI线发送1位数据,从机通过该线读取这1位数据;
2) 从机通过MISO线发送1位数据,主机通过该线读取这1位数据。
这是通过移位寄存器来实现的。如图2所示,主机和从机各有一个移位寄存器,且二者连接成环。随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
3. 时钟极性和时钟相位
在SPI操作中,最重要的两项设置就是时钟极性(CPOL或UCCKPL)和时钟相位(CPHA或UCCKPH)。时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。
主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和时钟相位。
举例来说,分别选取MSP430控制器和OLED驱动SH1101A为主从机,图3和图4为它们的SPI时序。由图4可知,SH1101A的SPI时钟空闲时为高电平,并且在后时钟沿接收数据,则MSP430控制器SPI的设置应与此保持一致。从图3中可以看出,要使得时钟在空闲时为高电平,应将UCCKPL置1;要使得在后时钟沿接收数据,应将UCCKPH清零。
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
SPI接口具有如下优点:
1) 支持全双工操作;
2) 操作简单;
3) 数据传输速率较高。
同时,它也具有如下缺点:
1) 需要占用主机较多的口线(每个从机都需要一根片选线);
2) 只支持单个主机。
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
高级工程师, 积分 6323, 距离下一级还需 1677 积分
从上面来看,那么就很容易知道问题了,主机和从机模式的区别就在于:
主模式就是SPI主机,简单说就是提供SCK的那方.
而从模式,就是被动接受SCK的那方.
高级工程师, 积分 5287, 距离下一级还需 2713 积分
高级工程师, 积分 5287, 距离下一级还需 2713 积分
高级工程师, 积分 5287, 距离下一级还需 2713 积分
高级工程师, 积分 5287, 距离下一级还需 2713 积分
提供时钟信号的是主控。就跟那个外挂个SPI的存储芯片一样,那个芯片肯定是不会提供时钟的。
中级工程师, 积分 3664, 距离下一级还需 1336 积分
中级工程师, 积分 3664, 距离下一级还需 1336 积分
中级工程师, 积分 3664, 距离下一级还需 1336 积分
中级工程师, 积分 3664, 距离下一级还需 1336 积分
主从模式的区别就在于是谁主动提供时钟信号,因为时钟信号是数字 通信的载体。
高级工程师, 积分 5287, 距离下一级还需 2713 积分
高级工程师, 积分 5287, 距离下一级还需 2713 积分
高级工程师, 积分 5287, 距离下一级还需 2713 积分
高级工程师, 积分 5287, 距离下一级还需 2713 积分
如果只是点到点的通信,那就可以省略SS这个接口了。
中级工程师, 积分 3741, 距离下一级还需 1259 积分
中级工程师, 积分 3741, 距离下一级还需 1259 积分
中级工程师, 积分 3741, 距离下一级还需 1259 积分
中级工程师, 积分 3741, 距离下一级还需 1259 积分
时钟信号是控制通信的凭证,谁提供这个信号谁就是主机。
高级工程师, 积分 6803, 距离下一级还需 1197 积分
高级工程师, 积分 6803, 距离下一级还需 1197 积分
高级工程师, 积分 6803, 距离下一级还需 1197 积分
高级工程师, 积分 6803, 距离下一级还需 1197 积分
片选这个不应该单独弄个,其实可以用普通的IO来做就行了。
高级工程师, 积分 5398, 距离下一级还需 2602 积分
高级工程师, 积分 5398, 距离下一级还需 2602 积分
高级工程师, 积分 5398, 距离下一级还需 2602 积分
高级工程师, 积分 5398, 距离下一级还需 2602 积分
弄清楚什么是主,什么是次,就是掌握主动权的。
高级工程师, 积分 6517, 距离下一级还需 1483 积分
高级工程师, 积分 6517, 距离下一级还需 1483 积分
高级工程师, 积分 6517, 距离下一级还需 1483 积分
高级工程师, 积分 6517, 距离下一级还需 1483 积分
随便看个官方的库函数,或者例程,你会发现主机是配置时钟信号的,从机是读取时钟信号的。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖蓝牙主机和从机有什么区别?_百度知道
蓝牙主机和从机有什么区别?
我有更好的答案
从机能与各种带蓝牙功能的电脑、蓝牙主机、大部分带蓝牙的手机、PDA、PSP等智能终端配对,从机之间不能配对。
采纳率:50%
为您推荐:
其他类似问题
您可能关注的内容
蓝牙的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。当前位置: &
求翻译:该产品有主机、从机之分是什么意思?
该产品有主机、从机之分
问题补充:
Host of the product from the machine sub-
This product is one of the host, from a
This product has the main engine, from machine the division
The host of products, from machine
正在翻译,请等待...
我来回答:
参考资料:
* 验证码:
登录后回答可以获得积分奖励,并可以查看和管理所有的回答。 |
我要翻译和提问
请输入您需要翻译的文本!卸载程序和删除程序有什么区别啊?
删除是把当前你看到的和序删除了,但其还是在你的电脑中,卸载 就是把这个和序从机算机中彻底删除了
一个意思啊!你指的删除不会是说直接删除文件夹吧?
类似问题换一批
图片广告我们见的可多了,生活中有车身广告、广告牌、广告灯、网络中有网站图片广告位等等这些广告都是用图片设计出来的,很多公司或个人都用大价钱购买广告位来投放广告,这样的宣传方式投资大、效果也不是很好,而且网民不统一,效果不显著,所以我想出新一代图片营销方式,这样的图片广告在社区论坛叫灌水,在群聊叫娱乐,而且网络世界中大部分网民都在使用QQ、UC这些聊天软件、还有网民结中的QQ群,不管是正规企业群,还是学数交流群或是网络主流群,他们都会在聊天时发几张图片搞一下,这样可以增加群的活跃度。一张好的图片会被高速转载到网络每一个角落,但是一个广告图片是不会被转载的,所以我们就要用会被转载的图片做广告,这种方式、这些图片就是要说的主题——图片营销。
有问题 @ 爱问Powered by iask.com
举报原因(必选):
广告或垃圾信息
不雅词句或人身攻击
激进时政或意识形态话题
侵犯他人隐私
其它违法和不良信息}

我要回帖

更多关于 蓝牙都有主机吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信