IIC方式讀驅動AT24C16晶元

2021-08-26 18:11:16 字數 2006 閱讀 7024

閒來無事,找了塊msp430的板子編寫了個iic驅動at24c16的程式。

iic作是一種簡單,雙向,同步的二進位制匯流排,由sda資料線和scl時鐘線組成,所有接到iic匯流排上的各裝置的sda資料線都連線到匯流排的sda資料線上,用來進行資料的傳輸;所有接到iic匯流排上的各裝置的scl時鐘線都連線到匯流排的scl時鐘線上,用來同意時鐘。以下是iic的各個狀態:

當匯流排是空閒狀態時,都為scl和sda都為高片平。

iic的啟動狀態為:scl為高電平期間,sda由高電平變為低電平

iic的主機傳送資料方式:當scl為高電平期間,sda的資料由主機寫入從機,當scl為低電平期間,主機傳送的sda資料線上的資料才能發生變化。當sda上的的8位資料或者命令傳送出去後(8位資料傳送是先傳送高位,再傳送低位),sda線會被設定為輸入,此時scl依舊是高電平,等待從機的應答訊號,如果從機有應答訊號,則主機會在sda線上收到低電平應答,沒有應答則為高電平,主機在接收到應答後可以繼續傳送位元組或者結束iic資料傳輸。

iic的主機接收資料:當主機接收資料時,會先把scl線置位高電平,sda設為輸入,等待資料到來,主機通過iic方式每讀取乙個位元組就要返回乙個應答給從機(讀取最後乙個位元組不需要返回應答,如果只讀取乙個位元組,也不需要應答),每個位元組都是從高位開始接收,全部接收完畢後,可以結束iic資料傳輸。

iic的結束狀態為:scl為高電平期間,sda由低電平變為高電平,即恢復到空閒狀態。

接下來是at24c16的儲存:

at24c16晶元儲存空間位16kbit,也就是能儲存2m位元組,at24c16的讀取方式是iic方式。

以下是包括at24c16在內的at24cxx系列的資料手冊,是英文版的:

寫驅動就是要看資料手冊,而絕大多數手冊都是英文的,因此,學好英語真的很重要啊。

我們先看memory organization部分,這裡主要講不同晶元的儲存區域劃分,直接看at24c16部分:

由於iic已經講過了,這裡我們可以直接看device addressing部分,這一章大體上講的是晶元的a2,a1,a0對於不同晶元的作用,

這裡講到atc16晶元的a2,a1,a0不起作用,也就是不用管這三個引腳。

接下來我們來看write operations和read operations部分,這兩部分大體上講的是at24c16的位址是11位資料,但是由於iic每次只能寫入乙個位元組,也就是8位資料,因此主機通過iic與at24c16通訊時的位址要分兩次寫入。

接下來我們直接看通過iic向at24c16如何寫入和讀取資料:

首先將位址分成兩個位元組,at24c16的位址範圍為0x000-0x7ff,剛好是2048個位元組。假如我要向第三頁的第乙個位址寫入資料,則位址為0x031,這裡的高兩個位元組表示頁位址,如0x03表示第三頁,低乙個位元組表示該頁的第幾個位址,如0x1表示第乙個位址。將11位的位址分為兩個部分,高三位和1010和讀/寫狀態位組合成乙個位元組,組合方式為10100000+高三位<<1+0(0表示寫,1表示讀,如果是寫資料則用0,讀資料則用1),構成乙個高位址位元組,低八位構成乙個低位址位元組。

主機向at24c16寫入資料流程為:啟動iic-->傳送寫裝置位址(高位址位元組)-->等待響應-->傳送字位址(低位址位元組)-->等待應答-->向at24c16寫入資料-->等待應答-->繼續寫入,等待答覆......直到寫完最後乙個資料並收到答覆-->--->停止iic

主機向at24c16讀取資料流程為:

啟動iic-->傳送寫裝置位址(高位址位元組)-->等待響應-->傳送字位址(低位址位址)-->等待應答-->重新啟動iic-->傳送讀裝置位址(高位址位元組)-->等待應答-->每接受乙個資料就要傳送乙個應答給從機,但是最後乙個資料不需要傳送應答-->停止iic

以上就是iic讀取和寫入at24c16資料的過程,以下是本人今天用msp430f2418的iic讀取和寫入at24c16晶元的程式,可直接呼叫裡面的函式:

模擬iic和硬體iic驅動的區別

所謂硬體i2c對應晶元上的i2c外設,有相應i2c驅動電路,其所使用的i2c管腳也是專用的 軟體i2c一般是用gpio管腳,用軟體控制管腳狀態以模擬i2c通訊波形。硬體i2c的效率要遠高於軟體的,而軟體i2c由於不受管腳限制,介面比較靈活。模擬i2c 是通過gpio,軟體模擬暫存器的工作方式,而硬體...

軟體模擬IIC驅動搭建

通過mcu和tm1680的通訊,簡要概述iic通訊協議 ic通過iic通訊的幾個基本概念 1,iic的初始化 軟體模擬iic需要兩個可程式設計io口,分別對應資料和時序匯流排。初始化iic時,將兩個gpio分別設為輸出 雙向io口 並將電平拉高 產生下降沿,做起始訊號 2,iic的起始訊號 iic的...

九 IIC驅動原理分析

學習目標 學習iic驅動原理 一 iic匯流排協議 iic序列匯流排包括一條資料線 sda 和一條時鐘線 scl 支援 一主多從 和 多主機 模式 每個從機裝置都有唯一的位址來識別。圖 1 iic 主從結構 二 iic訊號和時序 iic匯流排有3種型別訊號 1 開始訊號s scl為高電平,sda由高...