您的位置 首页 芯闻

IIC总线协议

IIC总线的协议并总结在此:处理器和芯片间的通信可以形象的比喻成两个人讲话:1、你说的别人得能听懂:双方约定信号的协议。2、你的语速别

IIC总线的协议并总结在此:

处理器和芯片间的通讯能够形象的比方成两个人说话:1、你说的他人得能听懂:两边约好信号的协议。2、你的语速他人得能承受:两边满意时序要求。

看IIC协议先:两条线能够挂多个设备。IIC设备(略微有点智能的)里有个固化的地址。只要在两条线上传输的值等于我(IIC设备)的地址时,我才作出呼应。

开端信号:处理器让SCL时钟坚持高电平,然后让SDA数据信号由高变低就表明一个开端信号。一起IIC总线上的设备检测到这个开端信号它就知道处理器要发送数据了。

中止信号:处理器让SCL时钟坚持高电平,然后让SDA数据信号由低变高就表明一个中止信号。一起IIC总线上的设备检测到这个中止信号它就知道处理器现已完毕了数据传输,咱们就能够各忙各个的了,如休眠等。

再看数据怎样传:SDA上传输的数据必须在SCL为高电平期间坚持稳定:由于外接IIC设备在SCL为高电平的期间收集数据方知SDA是高或低电平。SDA上的数据只能在SCL为低电平期间翻转改变。

呼应信号(ACK):处理器把数据发给外接IIC设备,怎么知道IIC设备数据现已收到呢?就需要外接IIC设备回应一个信号给处理器。处理器发完8bit数据后就不再驱动总线了(SDA引脚变输入),而SDA和SDL硬件规划时都有上拉电阻,所以这时分SDA变成高电平。那么在第8个数据位,假如外接IIC设备能收到信号的话接着在第9个周期把SDA拉低,那么处理器检测到SDA拉低就能知道外接IIC设备数据现已收到。

IIC数据从最高位开端传输。

再进一步说:IIC总线是答应挂载多个设备的,怎么拜访其间一个设备而不影响其他设备呢?

用7bit表明从地址,那么能够挂载的从设备数是2的7次方128个。处理器想写的话:先发送开始位,再发一个8bit数据:前7bit表明从地址,第8bit表明读或许写。0write是处理器往IIC从设备发,1read是I%&&&&&%从设备往处理器发。第9个时钟周期回复呼应信号。

下面就以AT24Cxx为例具体阐明一下:

首要宣布一个start信号,从设备地址,R/W(0,写),回应ACK表明有这个从设备存在。这时分是处理器从指定的从设备读数据的从设备里8bit存储地址的指定。所以这儿R/W是0为写。ACK回应有这个设备的话,处理器把要拜访的从设备里的8bit存储地址写好。ACK对方回应。持续一个start信号+从设备地址,最低位是高电平表明读数据,回应ACK表明有这个从设备存在。在读数据的时分,每宣布一个时钟,处理器会SDA上的数据存起来。那么宣布8个时钟后处理器就能得到8位的数据。这时分若想接连读就不断回应ACK信号不然就宣布中止信号。

读的进程:start信号,从设备地址,写,待读取存储地址,再一个start信号,从设备地址,读,8个时钟,从设备就把对应的数据反馈给处理器。

start信号,哪一个设备地址,写,紧跟接连两个字节的数据:要写的地址,对方收到8bit地址后回应ACK,再8bit数据发给从设备,对方收到8bit数据后回应ACK,处理器写完后发送中止信号。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/234687.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部