在使用軟件模擬iic通信時,要將SDA線配置為開漏輸出,既然配置為開漏輸出,為什么程序還可以通過SDA線讀取數據?
查閱手冊:
只說了結論:在開樓模式下,對輸入數據寄存器的讀訪問可以得到IO狀態
來看輸出配置這個框圖結構:
我將其分為了A路 和? B路,A路和B路在IO引腳處有交點
在輸出模式下,若想要某位引腳為低電平,需要在B路上對輸出數據寄存器進行配置后經過輸出控制,將電平信號傳遞到IO引腳,由于A路和B路是相連的,在傳遞到IO引腳的同時,也會傳遞到A路上的輸入數據寄存器,這樣便解釋了為什么在輸出模式下我們依然可以讀取引腳。
實驗:
IDR :輸入寄存器
ODR:輸出寄存器
讀取函數:
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
官網給的解釋:Reads the specified output data port bit. 讀取指定的輸出數據端口位。
可以理解為 獲取引腳的狀態,更適合本文的理解