1.簡述
剛學fpga的時候做過ov7725攝像頭的驅動,包括iic,跟着視頻教程做的,最終實現了。現在馬上要工作了,私下聯繫了主管,他給我安排了任務,年前期末的事了,現在才做,真是慚愧。讓我做iic slave接口,當時心想做過啊,簡單。後來仔細去做的時候發現,我以前做的是master接口,不能直接用,而且仿真激勵還得用到iic master,突然覺得主管不愧是主管,看似簡單,東西挺多的啊。他後面給了NXP的iic手冊,研究了一下,確實詳細,比網上資料好很多,還能鍛鍊英文。今天先總結下。
2.正文
1.摘要
- iic只有兩個總線,SCL和SDA。
- 四種模式
- 標準模式 100Kb/s
- 快速模式 400Kb/s
- 快速Plus模式 1Mb/s
- 高速模式 3.4Mb/s
- 超高速模式 5Mb/s
2.修訂歷史
3.特性表
- 這裏面說三種情況:單主機、多主機和從機。
- M:必有 O:可選 n/a:不適用。實現的時候我們要遵循這個標準。
4.邏輯電平
由於做ic所以要關注邏輯電平。可以看出iic總線的電平不是固定的,取決於參考輸入電平(VDD)。
- 30%VDD及以下 爲低電平;
- 70%VDD及以上 爲高電平
5.數據有效
- 當SCL 爲高時SDA數據爲有效的,所以這個時候SDA數據必須穩定;
- SDA數據在SCL爲低電平的時候變化;
- 一個SCL時鐘傳輸1bit的SDA數據。
6.開始和停止信號
- 開始信號 當SCL爲高時,SDA由高變低;
- 停止信號 當SCL爲高時,SDA由低變高;
7.傳輸格式
- SDA必須爲8bit數據一組傳輸,也就是傳輸一個字節;
- 傳輸的字節數據沒有限制;
- 傳輸每個字節後面都得有ack。
8.ACK和NACK
ACK和NACK是接收端發出的應答信號,ACK表示有效,可以繼續傳輸。NACK表示有問題,傳輸暫停,原因文檔列了五條,我不做解釋了。
- ACK SCL時鐘有效,SDA爲低;
- NACK SCL時鐘有效,SDA爲高;
9.從機地址和讀寫位
這個圖很容易看明白iic時序了,不難理解。
- 1-7bit 是地址
- 第8bit 是讀或寫位
- 0 寫
- 1 讀
- 數據傳輸是從高位到地位傳輸。
3.總結
其實看了這些,只是iic理想情況下的,還沒涉及到多機傳輸衝突、幾種傳輸模式實際運用等等,就類似高中和大學學習,全都是忽略很多實際問題的理想情況。今天就看了這麼多,明天繼續吧,深入挖掘。