IIC协议配置
本文只是提供一种配置IIC的思路,原理上是可以实现的,但在下才疏学浅,加上之前还有别的事,所以还没有调通代码,待将来有机会,真正在板子上实现之后,再来跟大家分享心得。如果各位看官有好的建议,或者发现了错误,希望能够在评论区留言,答主感激不尽!接下来进入正题。
1. IIC协议原理
众所周知,IIC是一种广泛用于主机与从机通信的协议。其大致分为 “写”操作 和 “读”操作,都是通过一根数据线(位宽1bit)和一根时钟线传输,所有的数据都是一个比特一个比特传输,在数据线上,“写”和“读”是共用的。但为了编程方便,规定以字节(8bit)的形式来描述通信过程。
1.1 “写”操作
- 第一步,主机首先发送从机地址(可以有多个从机)来确定是与哪一个从机进行通信。
其过程类似于打电话,从机地址相当于对方家里的电话号码,若是对方收到了你发出的请求,会告诉你一声,而在IIC配置过程中,有个对应的信号,叫“ACK”(1bit),这个信号是从机通过数据线发出的,主机只有收到这个信号,才会进行下一步动作。 - 第二步,从机发送“ACK”应答信号。
- 第三步,主机再发送相应寄存器地址。
如果从机收到这个地址,并确认有这个寄存器,会再发一个“ACK”信号,意思是告知主机,可以对此寄