最近在用树莓派搞一个摄像头小车,买了一个云台,用的是PCA9685控制,之前没有接触过,现在开始学习。它用的是I2C通信,所以写了这篇博客记录学习。
I2C通信:Inter-Integrated Circuit两线式串行总线
1.组成:
SDA数据线和SCL时钟信号线
2.通信方式:主从式通信,通信过程完全由主设备决定
开始通信:SCL处于高电平,SDA下降/下沿,通信开始
结束通信:SCL处于高电平,SDA上升/上沿,通信结束
3.数据传输:
1)地址:
I2C通信往往是一个主设备,在总线上挂载有很多从设备,那么如何区分从设备?——地址
在开始信号结束后就会准备发送地址信号:大多数地址是七位的,再在最低位添加一个用于表示信号传输方向
图中ADDRESS就是地址信号
I2C通信一个必须注意的点就是,在传送地址信息时,都是从高位开始传送
2)应答:
从设备是否接受到信息?——ack应答:通过总线发送一个信号,但是我们只有一条总线,那么怎么发送呢?所以先要释放总线,让总线处于空闲状态:即两条信号线同时处于高电平状态。
3)数据传输:
数据传输以字节为单位。主设备在SCL线上产生每个时钟脉冲的过程中将在SDA线上传输一个数据位,当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位, 此时才认为一个字节真正的被传输完成。
所以向指定设备传输数据的格式为9位(8位内容+1位ACK应答),其中地址数据包括一位方向
这就是完整的一份数据
引用:
https://www.cnblogs.com/aaronLinux/p/6218660.html
https://blog.51cto.com/chen0547/1963879