IIC 通訊協議

2021-10-03 03:55:46 字數 1805 閱讀 5823

簡要過程:

主機傳送起始位,這會通知匯流排上的所有裝置傳輸開始了,接下來主機傳送裝置位址+讀/寫訊號,與這一位址匹配的從裝置將成為從機並與主機進行傳輸,而其它從裝置將會退出此次通訊。

主機匹配到從機後,主機傳送它所要讀取或寫入的從機的內部暫存器位址;然後傳送資料;資料傳送完畢後,傳送停止位。

詳細過程:

簡要過程:

主機先向從機寫入其想要讀取從機內部暫存器的位址,再從從機中讀取資料。

詳細過程:

基於stm32f407zet6

//初始化iic

void

iic_init

(void

)

scl高電平期間,sda由高電平向低電平的轉換。

//產生iic起始訊號

void

iic_start

(void

)

scl高電平期間,sda線由低電平到高電平的轉換。

//產生iic停止訊號

void

iic_stop

(void

)

接收器在第9個時鐘脈衝之前的低電平期間將sda線拉低,並且確保在該時鐘scl的高電平期間為穩定的低電平。

//產生ack應答

void

iic_ack

(void

)

接收器在第9個時鐘脈衝之前的低電平期間將sda線拉高,並且確保在該時鐘scl的高電平期間為穩定的低電平。

//不產生ack應答		    

void

iic_nack

(void

)

//等待應答訊號到來

//返回值:1,接收應答失敗

// 0,接收應答成功

u8 iic_wait_ack

(void)}

iic_scl=0;

//釋放scl,等待下個指令的時鐘訊號

return0;

}

//傳送乙個位元組			  

void

iic_send_byte

(u8 txd)

}

//讀1個位元組,ack=1時,傳送ack,ack=0,傳送nack   

u8 iic_read_byte

(unsigned

char ack)if(

!ack)

iic_nack()

;//傳送nack

else

iic_ack()

;//傳送ack

return receive;

//返回讀取的值 receive

}

IIC 通訊協議

原文 i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有在時鐘線上的訊號為低電平期間,資料線上的高電平或低電平狀態才允許變化。起始和終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電平的變化表示終止...

IIC 通訊協議

i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有在時鐘線上的訊號為低電平期間,資料線上的高電平或低電平狀態才允許變化。起始和終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電平的變化表示終止訊號。...

IIC通訊協議

i2c是一種同步通訊,以半雙工方式傳送的序列匯流排。由資料線sda和時鐘scl構成的,可傳送和接收資料。在cpu與被控ic之間 ic與ic之間進行雙向傳送,高速iic匯流排一般可達400kbps以上。1.讀資料 指mcu從器件的資料匯流排上根據一定的時序來讀取器件的資料。一般而言,mcu提供乙個邊沿...