在谈IIC前,我们先将IIC的通信分为三步,准备、通信、结束阶段
1. 通信准备
IIC通信至少要两条通道,一条时钟线SCL,一条数据线SDA,而这两条线可以连接很多的设备。虽然IIC连接着很多的设备,但是在IIC没有与各个设备通信时,IIC均处于休眠状态,这时候就需要通过主机来唤醒设备了。
我们首先看时序图,怎么开始IIC的动作,及怎么结束II:
然后再看代码(somenop()为延时函数,延时时间主要是看单片的时钟周期,我所使用的单片机芯片是IAP15F2K6102)
void somenop(void)
{
uchar t;
_nop_();
_nop_();
t = 12;
while(--t);
}
void IIC_Start(void)
{
SDA = 1;SCL = 1;
somenop();
SDA = 0;
somenop();
SCL = 0;
}
void IIC_Stop(void)
{
SDA = 0; SCL = 1;
somenop();
SDA = 1;
somenop();
}
当我们启动IIC后,下一步就是寻找设备了,于是我们发送一个地址,像PCF8591,唤醒它的地址就是0x90(二进制数1001 0000),唤醒AT24C02的地址则是0xa0(二进制数1010 0000)这时候需要设备给一个响应来说明设备收到消息了,然后由单片机接受即可,所以设备与单片机达成通信的条件了,然后两边建立了通信通道后,单片机就开始选用所需设备的功能端口地址了。
如:选择PCF8591的A0、A1、A2、A3通道的话,就可以分别发送0x00、0x01、0x10、0x11;选择AT24C02的A0、A1、A2通道的话,就可以分别发送对应地址(因为AT24C02还带有读/写地址,该地址是在最后一位,这里就不详细谈了)。
在IIC开始,选择设备地址以及,选择使用那个通道以及选择读数据还是写数据后,通信准备阶段完成。
2. 开始通信
首先我们要知道IIC是半双工通信,同一时刻只有一个设备发送数据个另一个设备,两个设备开始通信时,主机一直控制SCL时钟线并由它来产生出时钟信号(也就是脉冲信号),然后,两设备通过SDA线发送数据来互相通信。
当主机接受从机数据时(也就是主机读取从机数据),时钟信号的电平为低的时间内,从机通过数据线发出高低电平的信号;当时钟信号为高电平期时,主机读取读取信号,此时数据线的电平不能改变。发送八位数据后,主机会收到从机的应答,也就是第九个脉冲的时候是应答时间,从机将SDA数据线置为低电平,此时被主机检测到。于是一个数据就传输成功了,主机收到的数据是一个二进制,数据如果为00101101,转换十六进制是0x2D,然后多做几个这样的步骤,数据就读取到了。
同理从机接受主机的数据时(主机写数据给从机),时钟信号还是主机产生的,然后数据是由从机发给主机,发送8位数据后,主机发给从机应答信号,此时一个数据也就成功发送了。
3. 结束通信
主机再数据发送完后(即应答时间内)给从机一个非应答信号(主机将SDA电平拉高)后解释IIC,这时候IIC通信告一段落了,最后也就完成了一次通信,数据传输进行完毕。
4. 注意点
IIC开始、结束及SCL的时钟周期是必须合适的,一般都大于5us就可以了(这个时间也可能和设备有关)。时间太短会导致数据传输有问题,或者从机来不急应答;时间太长的话……可能数据传输太慢吧(知识盲区了)。
以上就是我对IIC的理解了,这也仅仅是我个人的理解,避免不了错误之处,也希望诸位指正
上一篇:STM8L101F3P6 TIM4 实现呼吸灯效果(1)
下一篇:stm8s开发(三) UART的使用:串口通信!
推荐阅读
史海拾趣
随着业务的不断发展,AVX开始在美国本土进行大规模扩张。它在多个州设立了生产基地和销售网络,进一步提升了公司的产能和市场覆盖率。同时,AVX还积极开拓国际市场,与全球各地的客户建立了紧密的合作关系。这种全球化布局使AVX能够更好地满足客户需求,提升公司的竞争力。
AVX一直致力于绿色技术的研发与应用。在数十年的深入研发支持下,AVX的产品为各种绿色技术提供了关键的支持,如风能、太阳能和水力发电等领域。这些技术的应用旨在节省现有能源并创建可靠、价格合理的电子系统,为可持续发展做出了积极贡献。AVX在这一领域的持续投入和创新,使其在绿色技术领域取得了显著成果。
近年来,随着环保意识的提高,BH Electronics积极响应国家绿色发展的号召,开始了绿色转型之路。公司加大了对环保技术的研发和应用力度,推出了一系列绿色环保产品。同时,BH Electronics还优化了生产流程,减少了能源消耗和废物排放。这些举措不仅提升了公司的环保形象,也为公司的可持续发展注入了新的动力。
这五个故事只是BH Electronics发展历程中的一部分,但它们却生动地展现了这家公司在电子行业中的崛起之路。从初创时期的筚路蓝缕,到技术创新的突破;从国际化战略的拓展,到品质管理的提升;再到绿色发展的转型,BH Electronics始终保持着敏锐的市场洞察力和不懈的创新精神。正是这些因素的共同作用,使得BH Electronics能够在激烈的市场竞争中脱颖而出,成为电子行业中的佼佼者。
在快速发展的过程中,BH Electronics始终注重产品品质的提升。公司引入了先进的品质管理体系,对生产过程中的每一个环节进行严格把控。同时,BH Electronics还加强了与供应商的合作,确保原材料的质量符合公司要求。这些措施有效提升了产品的整体品质,赢得了客户的信任和好评。
随着云计算、大数据等技术的兴起,传统EDA行业面临着前所未有的挑战。为了应对这些挑战,EDAL公司积极转型升级,将云计算、大数据等技术与EDA工具相结合,推出了更加高效、智能的云端EDA服务。这一创新的服务模式不仅提升了客户的设计效率,还降低了成本,赢得了市场的广泛认可。
随着技术的不断进步,Aearo Technologies在能量控制领域取得了重大突破。公司研发的新型材料不仅能够有效控制噪声和振动,还能提高产品的耐用性和可靠性。这些技术优势使得公司的产品在航空航天、军用防护以及消费电子等多个领域得到了广泛应用。通过不断拓展市场,Aearo Technologies逐渐成为了能量控制技术的领导者。
尊敬的工程师: 感谢您对NI长期以来的支持,2009第五届NI测控前沿技术论坛即将拉开帷幕。 作为广受好评的年度盛会,您不仅可以通过资深工程师的讲解了解最新前沿技术,还可以亲自投票选择自己感兴趣的专题内容。 NI诚邀您参与第五届测控前 ...… 查看全部问答∨ |
|
1.电磁流量计与PLC之间的数据如何取得和编程 2.A/D,D/A模块与压力传感器和变频器之间的建立 3.PLC与上位机之间的通讯,也就是条码扫描仪连触摸屏,触摸屏连PLC,将数据送到PLC来控制动作。 有时间帮忙想想,看如何来实现 … 查看全部问答∨ |
在PocketPC中安装了SqlServer CE, 但是断电后安装过的东西消失,该怎么解决阿? 在PocketPC中安装了SqlServer CE, 但是断电后安装过的东西消失,该怎么解决阿?是不是安装时候可以设置成永久保存呢?或者有什么特别的方法把他安装在SDMMC或HDD或Flash上,永久保存,而且注册表中也会在断电后还存在?… 查看全部问答∨ |
本帖最后由 651076842 于 2013-12-28 11:55 编辑 大神们,这是什么问题啊,我的仿真器是MSP-FET430UIF power灯和mode灯都是亮的,第一次用仿真器.连接没问题,在connection中出现了com连接,破解的时候也是用管理员身份破解的,win7旗舰版系统 … 查看全部问答∨ |