【C8051F数字湿度计专题五】——认识IIC,读写SHT21
[复制链接]
经过大家不断努力和高效的工作能力,不论是51版还是C8051版的数字湿度计都已经做得差不多了,感谢大家这一个多月来的不断参与和努力。
那么,是否你已经搞清楚了整个湿度计设计流程?是否你已经搞清楚了程序设计的方方面面?是否你从自己亲手制作体验中学到了新知识新思想?是否你到现在还对其中某些方面一知半解?
我打算在本次活动临近尾声的时候,再给大家说说IIC相关的知识吧,给那些还在一知半解的未来新星们。
IIC原理简介。
IIC是一种广播传播式的通讯方式,好像是飞利浦最先发明的吧。。。。那么什么是广播传输方式呢?
我们知道,串口一般是单对单的,就是说连接的两端都只有一个设备,如果要增加更多的设备连接需要增加识别线,两根线是无法做到多器件连接的。在IIC的网络里不是这样,它可以一对一,也可以一对多,一对多有什么好处?
一对多,好比是让你一个主器件,通过IIC去控制更多的从器件。广播的含义其实就是,传输的任何信息都是没有方向性的,在IIC网络中的任何一个器件都能收到,好比不就是一个喇叭广播出去了,大家的耳朵就都听到了,至于广播的内容是否和自己息息相关?需要收听者自己辨别。
如何辨别?
发送者发送独一无二的地址信息,各个接受者判断是否是呼叫的自己,是,那就敞开大门收发信息呗,不是,那就当耳旁风过了就是了。、
IIC其实结构很简单,一根时钟线SCK,一根数据线SDA
见下图:
这是最简单的IIC传输方式图,图中几个状态,道出了IIC的“天机”。
状态1:当SCL高电平,SDA由高转入低电平时,主器件通知各从器件,开始通讯了。
状态2:在接下来的7个时钟周期内,主器件播出从器件的识别地址,由从器件判断是否呼叫的是自己。地址判断位为7位,还有一位是读写识别位。
状态3:主器件播出读写识别位,告诉从器件主器件是要读它还是写它。
状态4:当对应的从器件识别出地址标志和读写确认后,反馈给主器件一个应答位ACK,告诉主器件,从器件已经准备好接受主器件相应操作和数据传输了。
状态5:当主器件收到从器件发出的确认位ACK后,发出数据,交由从器件来接受处理。、
状态6:任何一次数据传输,都应该由从器件发出接受确认电平ACK,如果未被确认,那么将出现未确认信号NACK,则表示传输不成功,不被从器件所确认。
状态7:表示通讯结束标志位的判断方法,当任何一个NACK出现后的下一个时钟周期高电平时,SDA信号电平由低转高时,都将表示通讯结束。
数字湿度计SHT21读写原理简介。
SHT21就是利用IIC和主器件进行通讯操作传输数据的。
整个通讯过程就如上所述。我们在编写IIC通讯部分驱动代码的时候,掌握好几个关键点,那么程序写起来还是比较惬意的。
首先,是时钟信号的确定。
其次,保证在特定的时钟周期内,响应的数据传输操作都能够及时完成。避免信号“错位”,造成“误解”。
再次,确定特定从器件的广播地址,如SHT21的广播地址为0X80(最后一位为读写识别位)。
最后,掌握所需控制和使用的相关从器件上的寄存器等等之类,不要搞混即可。
[ 本帖最后由 drjloveyou 于 2010-8-28 16:57 编辑 ]
|