當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]采用串行總線技術(shù)可以使系統(tǒng)的硬件設(shè)計(jì)大大簡(jiǎn)化,系統(tǒng)的體積減小,可靠性提高,同時(shí)系統(tǒng)更容易更改和擴(kuò)充。常用的串行擴(kuò)展總線有:I2c總線,單總線,SPI總線,以及microwire、Plus等等

采用串行總線技術(shù)可以使系統(tǒng)的硬件設(shè)計(jì)大大簡(jiǎn)化,系統(tǒng)的體積減小,可靠性提高,同時(shí)系統(tǒng)更容易更改和擴(kuò)充

常用的串行擴(kuò)展總線有:I2c總線,單總線,SPI總線,以及microwire、Plus等等

I2c總線只有兩根雙向信號(hào)線,一根是數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL

 

I2c總線通過(guò)上拉電阻接正電源。因此I2C總線的設(shè)備都要接上拉電阻

當(dāng)總線閑置的時(shí)候,兩根線均為高電平,連接到總線上的任何一個(gè)器件輸出的低電平,都將使得總線得到信號(hào)變低,及各個(gè)器件的SDA和SCL都是線與的關(guān)系

每個(gè)接入到I2C總線都有唯一的地址,主機(jī)與其他器件間的數(shù)據(jù)傳送可以是由主機(jī)發(fā)送數(shù)據(jù)到其他器件,這時(shí)主機(jī)即是發(fā)送器,由總線上接收數(shù)據(jù)的器件稱(chēng)為是接收器。

在多主機(jī)系統(tǒng)中,可能同時(shí)由幾個(gè)主機(jī)企圖啟動(dòng)總線傳送數(shù)據(jù),為了避免混亂,I2C總線要通過(guò)總線仲裁,已決定由哪臺(tái)主機(jī)控制總線

數(shù)據(jù)位的有效性

I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平和低電平狀態(tài)才允許變化

 

起始信號(hào)和終止信號(hào)

SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào),SCL線為高電平期間,SDA線由低電平向高電平變化表示終止信號(hào)

 

數(shù)據(jù)傳送的格式

(1)字節(jié)傳送與應(yīng)答

每一個(gè)字節(jié)必須保證是8位長(zhǎng)度,數(shù)據(jù)傳送時(shí),先傳送的是最高位(MSB),每一個(gè)被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位,即(一幀共有9位),應(yīng)答信號(hào)由從機(jī)發(fā)送給主機(jī)

 

每次數(shù)據(jù)傳送總是由主機(jī)產(chǎn)生的終止信號(hào)結(jié)束,但是若主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號(hào),馬上再次發(fā)出起始信號(hào)對(duì)另一個(gè)從機(jī)進(jìn)行尋址

在總線的一個(gè)數(shù)據(jù)傳上過(guò)程中,可以有一下幾種傳送方式的組合方式

a,主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送的方向在整個(gè)傳送過(guò)程中不變

 

A表示應(yīng)答,A非表示非應(yīng)答,s表示其實(shí)信號(hào),p表示終止信號(hào)

主機(jī)發(fā)送地址時(shí),總線上的每一個(gè)從機(jī)都將這7位地址碼與自己的地址進(jìn)行比較,如果相同,則認(rèn)為自己正在被主機(jī)尋址,根據(jù)R/T位將自己確定為發(fā)送器或接收器

從機(jī)地址由固定部分和可編程部分組成,可編程的部分決定了可接入總線該器件的最大數(shù)目。

 

由操作時(shí)序可知要進(jìn)行必要的延時(shí)

起始操作示例代碼:

void T2CStart(void)

{

SDA = 1;

SomeNop();//大于微秒級(jí)別

SCL = 1;

SomeNop();

SDA = 0;

SomeNop();

}

終止指令:

void I2CStop(void)

{

SDA = 0;//data由0變到1為終止指令

SomeNop();

SCL = 1;

SomeNop();

SDA = 1;

SomeNop();

}

I2C總線擴(kuò)展

串行E2PROM的擴(kuò)展

(2)寫(xiě)入過(guò)程:AT24CEEPROM的固定地址為1010,A2,A1A0引腳接入高低電平可以得到確定的3位編碼,形成的7位編碼即為該器件的地址碼

單片機(jī)進(jìn)行寫(xiě)操作的時(shí)候,首先

發(fā)送該器件的7位地址嗎和寫(xiě)方向的方向碼0,發(fā)送完以后釋放SDA線并在SCL線上產(chǎn)生第九個(gè)時(shí)鐘信號(hào),被選中的存儲(chǔ)器再確認(rèn)自己的地址后,在SDA上產(chǎn)生一個(gè)應(yīng)答信號(hào)作為響應(yīng)

,單片機(jī)接收到信號(hào)就可以傳送數(shù)據(jù)了

傳送數(shù)據(jù)時(shí),單片機(jī)首先發(fā)送一個(gè)字節(jié)的被寫(xiě)入器件的存儲(chǔ)區(qū)的首地址,收到存儲(chǔ)器器件的應(yīng)答后,單片機(jī)就逐個(gè)發(fā)送各個(gè)數(shù)據(jù)的字節(jié),但是每次發(fā)送一個(gè)字節(jié)后都要等待應(yīng)答

收到每個(gè)字節(jié)的地址后,芯片上的地址會(huì)自動(dòng)加一

寫(xiě)入n個(gè)字節(jié)的數(shù)據(jù)格式

 

讀出過(guò)程

單片機(jī)首先發(fā)送該器件的7位地址碼和寫(xiě)方向位0(偽寫(xiě)),發(fā)送完后釋放SDA線并在SCL線上產(chǎn)生9個(gè)時(shí)鐘信號(hào),被選中的存儲(chǔ)器器件在確認(rèn)自己的地址之后,在SDA上產(chǎn)生一個(gè)應(yīng)答信號(hào)作為回應(yīng)

然后在發(fā)送一個(gè)字節(jié)的要讀出存儲(chǔ)去的首地址,收到應(yīng)答,單片機(jī)要重復(fù)一次起始信號(hào)并發(fā)出器件地址的讀方向位(1),收到器件應(yīng)答就可以讀出字節(jié),每次讀出一個(gè)字節(jié),單片機(jī)都要回復(fù)一個(gè)應(yīng)答信號(hào),但最后讀出一個(gè)字節(jié),單片機(jī)應(yīng)返回非應(yīng)答信號(hào)(高電平)并發(fā)出終止信號(hào)以結(jié)束讀出操作

 

示例代碼:

#include

#define uchar unsigned char

#define uint unsigned int

sbit sda = P2^3;

sbit scl = P2^2;

sbit wp = P2^1;

void delay()//微妙級(jí)別的延時(shí)函數(shù)

{;;}

void start()//開(kāi)始信號(hào)

{

sda = 1;

delay();

scl = 1;

delay();

sda = 0;

delay();

}

void stop()//停止信號(hào)

{

sda = 0;

delay();

scl = 1;

delay();

sda = 1;

delay();

}

void respons()//應(yīng)答信號(hào)

{

uchar i;

scl = 1;

delay();

while((sda ==1)&&(i<250))//等到第九個(gè)時(shí)鐘周期的時(shí)候,還沒(méi)有變?yōu)?,

//那么scl將自動(dòng)的變?yōu)?,表示收到信號(hào)

{

i++;

}

scl = 0;

}

void init()

{

sda = 1;

scl = 1;//把線全部釋放

}

void write_byte(uchar date)

{

uchar i,temp;

temp = date;

scl = 0;

delay();

for(i = 0;i<8;i++)//寫(xiě)8次

{

temp = temp<<1;//表示將temp左移1位,將最高位移入psw寄存器中的cy位,

//然后將最高位賦值給sda,送走數(shù)據(jù)

scl = 1;//數(shù)據(jù)穩(wěn)定了

delay();

sda = CY;

delay();

scl = 0;//讀走數(shù)據(jù)

delay();

}

sda = 1;//注意養(yǎng)成釋放總線的習(xí)慣

delay();

}

uchar read_byte()

{

uchar i,j,k;

scl = 0;

delay();

sda = 1;//釋放數(shù)據(jù)總線

delay();

for(i=0;i<8;i++)

{

scl = 1;

delay();

j = sda ;//讀取數(shù)據(jù)

k =(k<<1)|j;

scl = 0;

delay();

}

return k;

}

uchar read_add(uchar address)

{

uchar date;

start();

write_byte(0xa0);//表示寫(xiě)入器件的地址

respons();

write_byte(address);

respons();

start();

write_byte(0xa1);

respons();

date=read_byte();

stop();

return date;

}

void write_add(uchar address,uchar date)

{

init();//初始化信號(hào)總線和地址總線

start();//啟動(dòng)信號(hào)

write_byte(0xa0);//表示寫(xiě)入器件的地址

respons();

write_byte(address);//表示往這個(gè)器件內(nèi)部的第三個(gè)地址處寫(xiě)入地址

respons();

write_byte(date);//表示器件內(nèi)部的數(shù)據(jù)

respons();

stop();

}

void delay1(uint z)

{

uint x,y;

for(x= z;x>0;x--)

for(y=110;y>0;y--);

}

void main()

{

init();

write_add(23,125);

delay1(100);

P1=read_add(23);

while(1);

}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉