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