SPI通讯协议
传送门:https://www.cnblogs.com/deng-tao/p/6004280.html
个人觉得这个是网上比较详细的SPI通讯协议详解了;
IIC通讯协议
IIC协议
总线信号 :
SDA :串行数据线
SCL :串行时钟
总线空闲状态 :
SDA :高电平
SCL :高电平
起始位:SCL为高电平期间 SDA出现下降沿
终止位:SCL为高电平期间 SDA出现上升沿
数据传输 :SDA的数据在SCL高电平期间被写入从机。所以SDA的数据变化要发生在SCL低电平期间。
应答信号
每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据,从机应答主机所需要的时钟仍是主机提供的,应答出现在每一次主机完成8个数据位传输后紧跟着的时钟周期,低电平0表示应答,1表示非应答。
IIC写时序
-
产生start位
-
传送器件地址ID_Address。器件地址的最后一位为数据的传输方向位,R/W,低电平0表示主机往从机写数据(W),1表示主机从从机读数据(R)。ACK应答,应答是从机发送给主机的应答,这里不用管。
-
传送写入器件寄存器地址,即数据要写入的位置。同样ACK应答不用管。
-
传送要写入的数据。ACK应答不用管
-
产生stop信号。
IIC连续写时序
多数据写时序,写入器件地址,写入寄存器地址,连续写入数据。
IIC读时序
-
产生start信号
-
传送器件地址(写ID_Address),ACK。
-
传送字地址(写REG_Address),ACK。
-
再次产生start信号。
-
再传送一次器件地址,ACK。
-
读取一个字节的数据,读数据最后结束前无应答ACK信号。
-
产生stop信号。
IIC连续读时序
多数据读时序,写入器件地址,写入寄存器地址,,然后再次写入器件地址,连续写入数据。读数据最后结束前无应答ACK信号。