SDA和SCL是IIC/I2C中用到的两个线,一根是数据线,一根是时钟线。SPI也是一种通讯方式,一般为三线或者四线制。IIC和SPI都是非常常用的近距离通讯总线,一般芯片的通讯接口以IIC和SPI居多,例如ADS1115系列采样芯片的通讯总线就是IIC;而气压传感器BMP280则是IIC和SPI可选的,这两种通讯接口都是用在芯片之间近距离通讯的,并且相互独立,不能共用。
但是,这两种通讯方式有比较特别,都是可以通过
单片机的GPIO口来模拟实现的。题目中的芯片是IIC的,所以,如果单片机没有硬件IIC的片上资源的话,可以使用GPIO口来模拟实现IIC,只要单片机的引脚能配置为输入/输出就可以当作IIC来用,哪怕是该引脚具有SPI功能。
所以,单片机的普通GPIO如何来实现IIC功能了,不需要考虑SPI了。IIC具有数据线SDA和时钟线SCL等两根线。其中SCL是作为输出引脚使用的,所以将单片机的SCL配置为输出功能;而SDA既能输出又能输入,所以需要根据IIC的时需配置为输入或者输出功能。
IIC通讯在编程的时候需要参考器件的时序图,时序图是编程的基础。比如,IIC通讯中需要用到起始信号和终止信号。通过查看时许可以发现,起始信号时需要将SCL时钟线拉高,SDA数据线为下降沿;而终止信号中SCL是高电平,而SDA是上升沿。所以,用单片机的GPIO口来模拟这个过程即可。起始信号的C程序如下图所示。
如果芯片的通讯接口为IIC,就要设计IIC
威廉希尔官方网站
和单片机进行通讯;如果芯片的通讯接口为SPI就要设计SPI威廉希尔官方网站
和单片机进行通讯。IIC和SPI都是可以通过普通的IO口来实现的,不一定需要单片机具有该两种硬件片上资源。