用單片機的I/O口模擬I2C協(xié)議
I2C用IO模擬程序網(wǎng)上范例最多的就是51的程序了,這些范例的正確性無需懷疑.但是如果直接以它為藍本將它"AVR化",一不留神,就會有點問題了.
這要從I2C的硬件規(guī)范和AVR及51單片機的IO口說起.I2C要求SCL,SDA二線都有 線與 功能,即I2C驅(qū)動口應(yīng)該是 漏極開路 電路,其高電平的維持是靠上拉電阻來實現(xiàn)的, 而低電平則需要驅(qū)動口的強下拉能力.
51單片機IO口正好完全符合這個特性.寫起I2C驅(qū)動頗為得心應(yīng)手.但是AVR的IO口強大了,它輸出的高電平是實實在在的高電平,而不是靠什么上拉電阻來提供,只有10mA都不到的電流!于是如果直接使用 PORTB_Bit0 = 1這樣的操作,就不能滿足I2C的線與功能了,如果此時有別的設(shè)備要將SCL或者SDA拉低,那么結(jié)果就是二個IO口打架,誰贏誰輸不得而知,時間長了,多半是兩敗俱傷,芯片發(fā)熱吧.
當(dāng)然AVR的IO口自然有辦法滿足I2C的電氣特性要求,不就是不能輸出1么,那么用它的高阻狀態(tài)即可(DDRB_Bit0=0,PORTB_Bit0=0即可),要輸出0么(DDRB_Bit0=1,PORTB_Bit0=0).
標(biāo)簽:
I2C
AVR
程序
范例
上傳時間:
2016-07-19
上傳用戶:gxrui1991
SQLite 2.8.6 源代碼,用來在Linux/Unix/Windows上編譯安裝.它是一個小型的數(shù)據(jù)庫,但是非常好用,速度也快,一般的數(shù)據(jù)庫查詢之類的操作據(jù)統(tǒng)計比MySQL,PostgreSQL都快,PHP5中直接綁定了它.最大可訪問的數(shù)據(jù)量是2T.不需要安裝,解壓縮之后就可以用了.在命令行中輸入 sqlite **,其中的**是文件名,如果不存在,會自動創(chuàng)建,這個文件就是數(shù)據(jù)庫文件,它代表了一個數(shù)據(jù)庫.
標(biāo)簽:
PostgreSQL
Windows
SQLite
Linux
上傳時間:
2014-11-26
上傳用戶:tzl1975