實際注意
iic也有叫i2c,是半雙工的,不能同時收發,有sda和clk兩條線,一條匯流排上可以掛載多個從裝置,要求從裝置位址不同。
下面以bosh的gsensor的bma253為例,來講解iic。
從bma253的datasheet可知,通過io接gnd還是vdd可以得到不同的iic位址,我實際是連線到gnd,所以位址是0x18;
具體iic時序要求參考:注意有4us和4.7us兩個時間
參考**讀取bma253的chip id,在寫bma253的暫存器進行晶元初始化;
參考**不介紹硬體的io設定,比如設定io輸入輸出等;
if
(bma253_rd_reg
(bma2x2_chip_id_addr)
==0xfa
)
下圖是bma253_rd_reg的實現,使用iic讀取乙個char,我使用的是msp430,主頻1mhz,乙個機器週期就5us多,所以沒有使用delay;
unsigned
char
bma253_rd_reg
(unsigned
char addr)
void
bma253_wr_reg
(unsigned
char addr,
unsigned
char val)
對於ack需要做超時處理,防止從機故障沒有回應,造成主機卡死; 模擬IIC匯流排協議
模擬iic 簡單講iic匯流排通訊就像你在和你物件打 講道理,步驟幾乎完全一致。回憶一下自己打 的過程。你 撥號 你物件 喂?你 巴拉巴拉 你物件 哦 你 巴拉巴拉 你物件 哦 你 掛啦,麼麼噠 你物件 哦 你 掛 通話結束 iic匯流排時序 那現在來看一下iic匯流排通訊過程 對於你來說,你是打 ...
模擬IIC匯流排協議
簡單講iic匯流排通訊就像你在和你物件打 講道理,步驟幾乎完全一致。回憶一下自己打 的過程。你 撥號 你物件 喂?你 巴拉巴拉 你物件 哦 你 巴拉巴拉 你物件 哦 你 掛啦,麼麼噠 你物件 哦 你 掛 通話結束 那現在來看一下iic匯流排通訊過程 對於你來說,你是打 的,屬於主動方,首先該你寫入資...
軟體模擬IIC驅動搭建
通過mcu和tm1680的通訊,簡要概述iic通訊協議 ic通過iic通訊的幾個基本概念 1,iic的初始化 軟體模擬iic需要兩個可程式設計io口,分別對應資料和時序匯流排。初始化iic時,將兩個gpio分別設為輸出 雙向io口 並將電平拉高 產生下降沿,做起始訊號 2,iic的起始訊號 iic的...