導航:首頁 > 操作系統 > 單片機iic硬體驅動實例

單片機iic硬體驅動實例

發布時間:2022-10-03 01:39:31

Ⅰ MSP430單片機硬體IIC問題

應該不是的,好歹也是大公司的產品。我用的是STM32+IIC+AT24C256,用的是IIC匯流排,操作很正常,因此,應該是IIC匯流排的配置問題,包括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協議都是如此。
希望能幫助到你。

Ⅲ 單片機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門,注意這個特點,應用很靈活。

Ⅳ 單片機iic是做什麼的

與使用IIC協議的晶元連接通信。單片機的IIC一般是指的單片機能夠通過編程實現硬體IIC。你說的是STM32單片機吧?
硬體IIC比模擬IIC速度更快,但是介面固定,並不是一個好選擇。用來學習還是不錯。

Ⅳ 51單片機軟體實現iic通信的應答程序

呵呵不知道你是從哪裡看的?這個應答是肯定有用的。在進行寫操作的時候,一定需要檢測應答信號來判斷是否寫入有效?在進行讀的時候,也要發送應答信號繼續和非應答信號停止讀寫。

Ⅵ 哪些單片機具備I2C匯流排介面

IIC一般用模擬的較多,就是用普通IO口來模擬IIC時序,網上可以很容易找到相應的代碼。但是有很多單片機還是有IIC硬體模塊的,比如AVR系列的單片機是自帶基於狀態機的IIC模塊。stm32也有IIC硬體模塊。TI的msp430系列單片機也具有IIC模塊。有IIC的的單片機有很多。你要選型的話建議你根據單片機的處理能力來選擇,然後找到技術文檔來查看是否有IIC介面。

Ⅶ 單片機iic程序不懂給分析下啊

貼個程序給你看看,,,單片機沒有I2C匯流排介面,只能靠軟體模擬
/*程序的I2C從器件地址為1010,片選地址為000*/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SDA=P1^7;
sbit SCL=P1^6;

void Delay(uint us)
{
for(us;us>0;us--);
}

void start_iic() // 啟動I2C匯流排
{
SDA=1; // 發送起始條件數據信號,啟動時,
SCL=1; // 必需使數據線、時鍾信號線處於高電平(空閑態)
Delay(10); // 使用I2C匯流排必需考慮保持時間和建立時間,故延時
SDA=0; //產生下降沿,發送起始信號
Delay(10);
SCL=0;
}

void stop_iic()
{
SDA=0; //為產生上跳沿做准備
SCL=1; //打開時鍾線
Delay(10);
SDA=1; //產生停止信號(上跳沿有效)
Delay(10);
SCL=0; //時鍾線恢復無效態//
}

void ack_iic()
{
SDA=0; // 接受器件發送應答信號
SCL=1;
Delay(10);
SCL=0;
SDA=1; //應答信號低電平有效,故需將其重新置高電平
}

void nack_iic()
{
SDA=1; //主器件發非應答信號,通知AT24C08不再發送數據
SCL=1;
Delay(10);
SCL=0;
SDA=0; //非應答信號高電平有效,故需將其重新置低電平
}

Write_byte(uchar c)
{
uchar i;
for(i=0;i<8;i++)
{
if(c&0x80)SDA=1;
else SDA=0;
SCL=1;
Delay(10);
SCL=0; //因為當時鍾線有效是,數據線必須保持穩定的電平,
c=c<<1; //要改變SDA電平,應先將SCL拉低
}
SDA=1; //釋放I2C匯流排,准備接受應答信號
SCL=1;
Delay(10);
if(SDA==1)F0=0; //沒有接到應答位
else F0=1;
SCL=0;
}

uchar Read_byte()
{
uchar i;
uchar r=0;
SDA=1; //置數據線為輸入方式
for(i=0;i<8;i++)
{
r=r<<1;
SCL=1;
Delay(10); //保證一定的電平保持時間
if(SDA==1)r++; //從高位開始,一位一位的讀
SCL=0;
}
return r;
}

main()
{
uchar slave=0xa0; //I2C匯流排從器件地址(注意:硬體電路的接法要是片選地址為0,否則不能工作)
uchar Rslave=slave+1; //主器件發送讀控制字位元組
uchar addre=0x20; // 指定的寫數據地址
uchar wbuf=0x23; //將要寫進addre的數據
uchar rbuf; //存放讀出的數據的臨時變數
start_iic(); //產生起始信號
Write_byte(slave); //發送從器件地址
if(F0==0)return 0; //檢查應答位
Write_byte(addre); //發送目的地址
if(F0==0)return 0;
Write_byte(wbuf); //發送8為數據
if(F0==0)return 0;
stop_iic(); //停止信號

/*8位的數據發送完畢*/

Delay(1000);
start_iic();
Write_byte(slave);
if(F0==0)return 0;
Write_byte(addre);
if(F0==0)return 0;

start_iic(); //再次產生起始信號,不能少
Write_byte(Rslave); //送讀控制字
if(F0==0)return 0;
rbuf=Read_byte(); //讀出指定單元的內容
nack_iic(); //非應答信號
stop_iic();

/*8位的數據讀取完畢*/

TMOD=0x20; //串口調試
TL1=0xfd;
TH1=0xfd;
SCON=0x40;
PCON=0x00;
TR1=1;
while(1)
{
SBUF=rbuf; //放入緩沖
while(TI==0);
TI=0;
Delay(10000);
}

}

Ⅷ 為什麼單片機模擬IIC驅動SH1106刷新和顯示慢呢

能把程序放上來! 這樣可以幫你看看原因! 有時候不一定是IIC協議的問題。模擬的IIC雖然慢 但是速度也不至於肉眼可見的閃爍。

Ⅸ BMP085與單片機STC12C5A60S2用IIC電路圖怎麼連接(新人一枚,求指教)

IIC匯流排的兩根數據線隨便接到單片機的普通IO口就行,然後在軟體里把那兩個IO引腳模擬成IIC操作。驅動力不夠的話再上拉兩個電阻

閱讀全文

與單片機iic硬體驅動實例相關的資料

熱點內容
非科班程序員自學 瀏覽:799
壓縮泡沫鞋底底材 瀏覽:217
程序員職場第一課2正確的溝通 瀏覽:677
遇到不合法app應該怎麼辦 瀏覽:90
匯編程序編譯後的文件 瀏覽:77
大智慧均線源碼 瀏覽:371
單片機排阻的作用 瀏覽:213
滴滴金融app被下架如何還款 瀏覽:210
jpg轉換成pdf免費軟體 瀏覽:741
范里安pdf 瀏覽:443
偽造pdf 瀏覽:75
能刪除android文件夾嗎 瀏覽:446
LINUX使用V2ray 瀏覽:797
找人幫忙注冊app推廣是什麼 瀏覽:820
獨立伺服器如何恢復初始化 瀏覽:11
優秀到不能被忽視pdf 瀏覽:316
導遊程序員家政 瀏覽:586
22乘28的快速演算法 瀏覽:338
軟通動力程序員節2021 瀏覽:847
安卓系統如何卸載安裝包 瀏覽:871