① 51單片機模擬IIC匯流排問題
IIC的地址你可以自己定義的
在硬體上提供過IIC地址的你可以直接選擇他的地址進行發送
像你這種情況的話可以自己定義地址:
假設你有兩台或者以上的S3C2410,單片機作為主機,然後單片機發送數據,所有S3C接收(接收的前提是他的接收埠上獲得IIC的開始信號,你可以選擇利用中斷進行檢測),然後你在軟體里可以預先設置好每台S3C的地址,即接收單片機的前8BIT,然後對照地址,一樣的話就開始接收接下來的信息,沒有就放棄這個通信,這樣的話8BIT就可以控制256台S3C了
其實IIC也只是一種通信方式,你可以選擇自己的協議,以IIC為基礎,比如地址位選擇16BIT甚至更多,如果從機是S3C這種32位的RAM9的話,數據位的傳輸可以32位的傳。所謂的開始信號跟終止信號也只是雙方默認的方式而已,就像是「點頭YES,搖頭NO」,你也可以選擇相反的方式,只要兩台通信的機子能懂就好。
不過最好是採用大家一起的,這樣在軟體移植的時候會有幫助,也方便別人看懂。當大家在某一領域都用一種方式的時候也就形成所謂的協議,比如TCP/IP,UART,IIC等等。
② 【關於51單片機的模擬IIC匯流排電路的上拉電阻】
單片機輸出高電平的時候,基本沒有輸出電流的能力,上拉電阻,是用來輔助輸出電流的。
4K7,在很多的說明材料中,都用了這個數值。
它應該是「「為IIC器件提供所需要電流」」的最合理數值。
③ C51單片機模擬IIC匯流排,應答函數的疑問
應答是接收設別自動產生的,不一定是從機。在IIC上除了開始,停止和重復開始外,所有數據都在在時鍾的低電平變化的,也就是為高後,數據就應該穩定了。所以如果是模擬匯流排,應先有下降沿,再設為輸入,然後讀ACK,如果是從機的應答,是自動產生的,是作為數據通信正確的判斷標志,為了可靠,是要判斷的。主機的應答一般是程序控制的,如果要結束匯流排,可以給也可以不給應答;如果要繼續讀數據,就必須給出應答。
④ 51單片機IIC匯流排模擬
首先要聲明的是,如果你使用I2C時序的話,一般來說只能實現I2C主器件。
如果有電平檢測中斷倒是有可能實現從模塊,不過也會相當復雜的。
發送一個位元組,跟發送多個位元組其實沒多大差別。
I2C時序首先執行開始時序,然後發送從模塊地址還有讀寫命令。
接著發送數據位元組,如果你要發送多位元組,就不要馬上執行I2C結束時序,
繼續發送你要數據,等數據發送完成後再執行結束時序。
當然,也要有響應信號的處理。
程序如下:
void sendstr(uchar addr)
{
start_i2c();
send_byte(addr);
reply();
send_byte(dat1);
reply();
send_byte(dat2);
reply();
send_byte(dat3);
reply();
stop_i2c();
}
篇幅有限,只能提供大致思路,各時序子程序還需自行思考。
希望對你有幫助。
⑤ 為什麼單片機模擬IIC驅動SH1106刷新和顯示慢呢
能把程序放上來! 這樣可以幫你看看原因! 有時候不一定是IIC協議的問題。模擬的IIC雖然慢 但是速度也不至於肉眼可見的閃爍。
⑥ 如何實現雙單片機模擬iic通信
對於疑問1:for循環已經把數據從主器件發送到從器件,沒錯,後面加那幾句是為了釋放數據匯流排,這是晶元協議已經規定了的,為什麼是scl=0;而sda=1呢,應該匯流排SCL與SDA都是線與關系,任意一個器件輸出低電平,都使該匯流排的信號變低,你可能會這么想:為什麼不是scl=1;delay();sda=1;delay();呢?那是因為當scl=1;sda=1;這是終止信號。對吧,這樣寫的話IIC將會停止工作。
對於疑問2:加這幾句也一樣,是晶元現已規定:無論是寫數據還是讀數據,寫完讀完之後需釋放匯流排,for循環語句的意思是:
for(i=0;i<8;i++)
{
scl=1; //拉高時鍾匯流排,開始讀數據
delay();
k=(k<<1)|sda; // 將讀取到的sda數據存放到k中,這里你可能有點無法理解,我舉個例子:剛開始k=0x00(系統默認),當讀取到的sda數據為1時,k=0x01;對吧,反之當讀取到的sda數據為0時,k=0x00;
scl=0;// 讀取完一個數據,拉低時鍾匯流排
delay();
}
就這樣循環8次,這樣一個位元組的數據就從主器件讀到了從器件了。對吧。
如果那個釋放匯流排你理解不了,你就記住,這是晶元協議規定,讀完或寫完都必須釋放匯流排。iic協議都是如此。
希望能幫助到你。
⑦ 在89C51單片機中如何使用I/O口模擬IIC總
89C51中任何IO口都可以模擬IIC匯流排通訊,典型的應用就是DS18B20溫度檢測,AT24C02的存儲等等。
⑧ 51單片機 iic 匯流排程序,用IO口模擬和用自帶IIC口有什麼不同
其實程序是一模一樣的,唯一的區別是模擬IIC需要CPU運算,這樣就增加了單片機的運算時間,而帶IIC介面的單片機,程序還是需要的,但是IIC的運算通過集成在單片機裡面的寄存器硬體電路來運算,就像定時器電路一樣自己會運算,這樣就不要cpu來運算過程了,從而節省了時間,使cpu運算的更快。當然這樣就的多付出經濟成本哦
⑨ 單片機模擬IIC匯流排通信的速率是標准還是快速還是高速模式最高速率能達到多大
I2C匯流排的工作速度分為 3 種版本:S(標准模式) 測量與控制場合;F(快速模式) ,速率為 400kb/s;Hs(高速模式) ,速率為 3.4Mb/s。
具體要用多快的速度這個要看你用的是什麼器件了。找器件手冊上面會有標明最高速率只要不超過最高速就行了。單片機一般是400K或以下的常用。
⑩ 單片機模擬IIC匯流排的應答信號問題
1.應答信號SDA是在SCL的上升沿變化為0的;
2.讀操作的應答信號和寫操作的應答信號都由從設備驅動。
可參考「I2C匯流排協議規范」,網上搜一下即可。