IIC總線是飛利浦公司上世紀80年代設計出來的一種總線通信方式,主要用來連接整體電路,它可以一個總線結構上連接多個設備。
很多人聽到IIC總線、SPI總線、485總線什么的就會暈,其實,數據傳輸的接線方式,大體上就是兩種:一種是并行接口,一種是串行接口。 并行接口是什么?用并行方式來傳輸數據的接口。假如我想傳輸幾個8位的數據,那好,單片機上用8個IO傳送數據,每次就能傳送一個。假如想傳輸幾個16位的數據呢?那就要用16個IO!優點是速度快,缺點是占用的IO太多了。 串行接口是什么?是指數據在有限的幾個IO上按照順序,一位一位的進行傳輸。這類有很多:UART、IIC、SPI、CAN、USB等等,只要是串行傳輸的接口,都是串口的一種。但是由于早期人們都習慣把UART口稱為串口,導致很多人都習慣了說串口的時候特指UART口。就好像很多人把晶體和晶振都統稱為晶振一樣,但實際上這兩種器件是有區別的。 什么是時序?時序是串行接口或者并行接口在進行數據傳輸的時候,傳輸線必須要遵守的時間的順序!如果不按照時序來,數據傳輸肯定是會有問題的。 最明顯的體現就是,有串行接口的器件的datasheet里面經常會有時序圖。以昨天提到的PCF8591為例,下圖是位傳輸的時序圖: 下圖是開始信號和結束信號的時序圖: 下圖是應答信號的時序圖: 發送機在發送完一個8位數據字節后,會把DATA線拉高,接收機會在第九個時鐘高電平到來前把DATA線拉低,SCL線拉低后,DATA線置一,完成應答的流程。 以上,就是一個IIC總線傳輸的時序要求,大家可以對照昨天的代碼,分別去看開始信號、結束信號、應答信號還是數據傳輸的時序,理解了,這些知識才變成自己的。 我是理科男,最怕的就是寫作文。1、我寫的不生動,2、字數寫不夠。所以上學的時候每次寫作文都是拼命的湊字數。這導致我早期看datasheet的時候,也是挑挑揀揀的看,從來沒認真研究過時序圖。 但是,廠家給我們提供datasheet不是當作擺設的,真的是有太多重要的信息在里面。我的作文里有一半多都是廢話,但是datasheet里面幾乎句句都有用。因為他們是想用最簡單的語言完成最全面的描述,無論是表格還是圖形,出現在這里都是有理由的! 可能我已經說了很多遍了,但還是要重復一下:一定要學會看datasheet! 然后,就是這套日志的事,不知不覺寫了十多天,開始的很突然,準備的很倉促,由于工作原因,每天就那些時間去準備,有些地方沒達到我想要的效果,不過總算把51內部的東西寫完了。外設多種多樣,而且我手里沒有太多實物,講起來云里霧里,大家會覺得聽天書,所以今天,要劃上一個句號了。 但是,學習的思路都已經包含在這套日志里面了,認真看的人自然就會懂了。后面的日子,會更正日志里的一些錯誤,豐滿一些內容,再豐富一下自己的大腦。 奮斗吧,少年們!
|