汗,本來是想寫IIC教程的,結果發現IIC好像沒有什麼要寫的東西,看看官方的例程,基本的IIC也就出來,難道要我再造輪子? 於是想寫一下注意點。
一般IIC都是用於傳感器的通信的,發現官方的板子自帶的溫度傳感器是SMBUS通信協議的,SMBUS是可以用IIC通信,但是有點小區別,具體的區別自己可以google下。
背景:
N天以前,有個同學說,他用IIC去獲取陀螺儀的數據,結果怎麼都不成功。剛好我在N天前有用過IIC,知道了CC3200的IIC跟我們平常用的IIC有點不太一樣(平常我用的是軟件的IIC),一眼就知道問題出現在哪裏,然後跟他講了好多IIC的東西,唉,有些代碼可能會誤導那些對IIC協議不太懂的同學。
像stm32的硬件IIC是比較特別的,所以基本上都是用軟件的IIC。什麼是軟件的IIC:軟件控制IO的電平,模仿出IIC的時序圖。在這個過程中需要軟件去控制電平。
當時如果是硬件IIC的話,就不需要軟件去控制電平了,芯片自己會幫我們做了。
IIC協議:如果有不懂的話,請自己先GOOGLE下,花幾分鐘去詳細瞭解它。哥哥在這裏就介紹重點。
IIC分成主機和從機,從機都需要一個地址,這個地址是7BIT的,假設
設備地址是 0b1100 111 ------7bit -------在CC3200的IIC中,我們只關心這個
主機向從機發送數據時的地址是 0b1100 1110 -----8bit -------在CC3200的IIC中,我們不關心這個
從機向主機發送數據時的地址是 0b1100 1111 -----8bit -------在CC3200的IIC中,我們不關心這個
地址的最低bit是用來標識數據的傳輸方向,所以當我們用軟件的IIC,這個bit是需要我們去控制的。
如果我們是用軟件的IIC,一般給出的就是 寫地址==0b1010 1110 和 讀地址== 0b1100 1111 ,8bit總比7bit看的順眼吧.
如果是硬件的IIC,地址就是 0b1100 111 ,至於是寫或者是讀,都是由CC3200幫我們做了。所以我們給CC3200的設備地址是7bit。