因为最近有一个关于PAJ7620的手势传感器的小任务,这个传感器需要IIC通信,所以想先学习一下IIC再回头去补充学习通用定时器。
IIC简介
IIC(Inter-Intergrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线。
有SDA和SCL构成的串行总线。
IIC在传输信号时有三种信号
开始信号:SCL为高点平,SDA由高向低电平跳变,开始传送数据。
结束信号:SCL为高点平,SDA由低向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
起始信号是必须的,结束信号和应答信号都可以不要。IIC总线的时序图如下:
这次学习用软件模拟IIC接口。
关于IIC的几个问题:
1,怎么给从机的寄存器赋值?
看了一下关于IIC的代码,是这样一个步骤,寄存器的地址是16位的,但是IIC每次只能发8bit数据,一个16bit的地址,要分两次发送,即:先发高八位,再发低八位数据。就可以访问从机的地址,然后再发送8位数据。用正点的例程24C02IIC通信举个例子。
2,怎么从从机中读取数据?
也是先向从机中写寄存器的地址,然后读取数据。恩,就这么简单。用正点的例程24C02IIC通信举个例子。
剩下的,就是查看相关从机的DATASHEET了。