㈠ 求教:兩個51單片機之間的IIC通訊
這個要看你選的51單片機有沒有IIC功能,如果有的話,按要求設置就可以通信,沒有就要自己模擬一個IIC通信了,一個單片機發送,一個單片機接收,一般8位數據一條線,時鍾脈沖一條線
㈡ 兩個51單片機如何通過i2c通訊
一般情況下,要進行I2C通訊,你最起碼其中有一個晶元要本身就帶有I2C通訊介面,用這個帶有I2C介面的晶元來作從器件,這樣就相對好處理一點。你要是兩個都不帶這個介面,來模擬的話,很有難度。除非你對I2C協議很清楚,不過從樓主的提問來看,估計就不怎麼熟悉這種協議。
所以建議還是用別的通訊方式吧,比如用SPI,相對會好處理一點,用其中一個晶元的INTx來模擬CS介面,作為從器件在中斷中來處理,另外一個就模擬主器件來控制從器件,這樣或許會好弄點。如果樓主確實需要通訊,還是趕快換個思路吧,要是卡在一個地方動不了,會耽誤你的進程的,祝你好運!
㈢ 兩個STM8S103單片機如何用iic匯流排通訊
STM8是st公司的8位單片機。 1、STM8的程序是直接從flash中讀出並執行的,所以是Nor Flash。 2、STM8的指令集是自己的,可以到ST的官網上找到指令集的詳細解釋。 3、STM8的RAM是SRAM,不是DRAM,具體多大要看是哪顆晶元,不同的晶元是不一樣的,你還是到官網上找晶元的數據手冊看看吧,或者給個郵箱我發給你幾個。 這種8位機啟動比較簡單,直接從flash的起始地址讀代碼執行,沒有boot之類的東西。
㈣ 如何實現雙單片機模擬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協議都是如此。
希望能幫助到你。
㈤ 單片機程序中SPI匯流排和IIC匯流排可以同時存在嗎
首先,單片機程序 和SPI匯流排I2C匯流排不是一個范疇的概念
SPI匯流排和I2C匯流排是硬體匯流排,其存在性只能在硬體范疇中體現,
一些型號的單片機本身就同時具有以上兩種匯流排,有的存在其中一種,有的則沒有。對於有硬體匯流排的,可通過寄存器直接操作,沒有的,可以通過IO模擬。
你可以在程序中操作相關匯流排,甚至可以同時操作,這和他們的存在性是兩碼事兒。
「我想問的是我有兩個感測器一個用SPI寫,一個用IIC寫這樣行不行」
互不影響,完全可以!
㈥ 單片機如何一個I2C匯流排連接2個I2C器件
從地址一般是固化的(有些晶元可以通過硬體設定,但不可隨意更改為你說的0或者11) 相同的從地址器件在同一I2C裡面只能掛一個
㈦ 單片機iic匯流排問題
I2C匯流排理解上的難點就是在於
ACK和NACK的使用上,估計你就沒看明白I2C協議。簡要的給你說下:ACK的時候,SCL=1,表示時鍾拉高,增加Delay是為了等待SDA的數據回傳(這時master的SDA是輸入態,slave的SDA是輸出態,SDA==0
即表示Slave響應正確)。ACK主要出現在Command、Address、Data數據傳輸時。
而NACK主要是在讀數據後,結束位前出現,這時Master的SDA為輸出,Slave的SDA為輸入,SDA需要輸出『1』,告知Slave即將讀操作結束。
反觀你的代碼,ACK中強加Delay不是不行,但很難做的通用兼容。建議考慮判斷Sda狀態,同時需要有錯誤退出機制。
最後,你還是再看下I2C
Specification
吧,另外,I2C匯流排是OC門,注意這個特點,應用很靈活。
㈧ 請問I2C匯流排如何實現與單片機的應用
IIC只是一個通信協議,只要兩個終端符合這個協議就可以實現數據的交換,有的單片機已經集成了IIC的外設,用起來比較簡單,還有一部分並沒有這樣的外設,就要用IO口來模擬出IIC的兩條線,一樣可以實現通信,祝成功~