SPI和IIC都是比较常用的短距离通讯方式,主要用在PCB板间或者芯片之间实现近距离通信。比如AT24C02就是通过IIC和单片机实现数据通信的,BMP280即可以通过IIC又可以通过SPI和单片机进行数据通信。
这两种通信方式都有着各自的时序图,在编程时需要认真研究时序图,根据时序图编写程序,下面举例子。
SPI通讯时序介绍
SPI是比较高速的通讯方式,具有三线制和四线制之分,四线制有CS,SCK,MISO,MOSI等。SPI具有四种工作模式,并且时钟极性CPOL和时钟相位CPHA可以配置,这个在编程序时需要注意:如果CPOL=0,则空闲状态为低电平;如果CPOL=1,则空闲状态为高电平。CPHA决定着在哪个边沿进行数据采集。如果 CPHA=0,则在第一个跳变沿进行数据采样;如果CPHA=1,则在第二个跳变沿进行数据采样。
对于具体程序代码的编写,可以根据时序图慢慢研究,或者参考别人的代码和时序图进行对比。
IIC通讯时序介绍
IIC只有两根线,分别为SCL和SDA。主从式结构,一个主机可以接多个主机,典型的拓扑结构图如下所示。
IIC在通讯时,需要需要有三个过程/信号:开始信号、应答信号和结束信号。每种信号都有严格的时序要求。以起始和结束为例介绍一下,时序图如下所示。
在SCL为高电平期间,如果SDA出现下降沿则为起始信号;如果SCL为高电平期间,SDA为上升沿,则为结束信号。在编程时就要依据这个时序图。IIC可以使用普通GPIO口模拟,也可以使用单片机的片上资源,开始信号的实现代码如下所示。
程序的实现没法细细解释,只能自己去编代码,可以自己对着时序图去编写,也可以从网上参考代码。
如果有具体的问题可以再次在悟空提问。
以上就是这个问题的回答,感谢留言、评论、转发。更多电子设计、硬件设计、单片机等内容请关注本头条号:玩转嵌入式。感谢大家。