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口來實現的,不一定需要微控制器具有該兩種硬體片上資源。
如果用微控制器內建硬體通訊應該不能,一個spi一個i2c,不相容。但是i2c速度不高,可以把微控制器埠配置成gpio用軟體方式通訊。
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口來實現的,不一定需要微控制器具有該兩種硬體片上資源。