在嵌入式开发中,怎么开发SPIIIC的驱动程序

更新时间:02-08 教程 由 南鸢 分享

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口模拟,也可以使用单片机的片上资源,开始信号的实现代码如下所示。

程序的实现没法细细解释,只能自己去编代码,可以自己对着时序图去编写,也可以从网上参考代码。

如果有具体的问题可以再次在悟空提问。

以上就是这个问题的回答,感谢留言、评论、转发。更多电子设计、硬件设计、单片机等内容请关注本:玩转嵌入式。感谢大家。

声明:关于《在嵌入式开发中,怎么开发SPIIIC的驱动程序》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2273650.html