其实关于协议,最好的学习方法是直观的看波形图,这也是我这篇文章的主要演示形式。
使用某种协议,无法与某个器件成功通信,这并不是什么大问题,最不济拿到一个逻辑分析仪抓一下波形,最终就能找到问题所在。
1. IIC
iic的串行数据是在时钟线高电平时候读取,高电平期间,不允许sda发生电平改变。iic的两根线分别是时钟线和数据线,因为只有一根数据线,所以读写是互斥的,所以属于半双工通信。对器件操作,需要先发送器件地址,8bit数据的前7位标识器件地址。最后一位0表示写,1表示读。

2. SPI

根据配置spi的时钟空闲时候的默认状态和读取时机,有四种不同配置,使用spi时候需要查看器件的芯片手册,确定spi的方式,在单片机上配置为相同模式才能够正常通信。
当clk配置为空闲高电平时候,还需要选择,奇数边沿还是偶数边沿采样。当高电平奇数采样,那就是下降沿采样。否则如果是高电平偶数采样,那就是上升沿采样了。
空闲低电平同理,不做累述。
spi的数据线是sclk,miso,mosi,片选线cs。iic有发送器件地址的机制,来选中总线上众多器件中的一个。spi则使用简单的片选线cs,拉低标识选中。
至于d/c,rst这些控制线一般是对于一些特殊器件,比如tft屏,并不属于spi内容。
spi发送的串行数据宽度可以选择8bit、16bit。

3. intel 8080
8080协议多用于并口屏,相比于iic或者spi的串口单线,8080支持8bit,16bit等。速度自然会快很多。
拿st7789v做例子。



4. IIS

5. UART

版权声明:本文为shuiyihang0981原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。