個人筆記_EEPROM在微控STM32F1外設IIC控制下的操作細節總結

EEPROM種類很多,基本上採用的都是IIC通信協議。具體的接口細節網上資料很多,用到的時候隨便去哪個論壇都可以下載到,這裏對開發的時候遇到的幾個小問題做自問自答式的小總結。


自問自答:

1、IIC總線支持多個通訊主機怎麼理解(支持多個通信從機好理解)?仲裁方式具體指什麼?
答:IIC總線是支持在同一個總線系統中添加多個主機的,當出現衝突的時候只需要按仲裁方式處理就可以避免問題; 仲裁方式的核心實現思想是"線與"和"在發送1位數據後,比較總線上所呈現的數據與自己發送的是否一致",因爲SCL和SDA都被上拉處理,所以一般沒有操作的時候總線處於高電平,假設出現了兩主機同時控制總線的情況,這個時候由於兩臺主機的SCL線的"線與"基本上同步,這個時候沒有仲裁結果,只能通過SDA線的"線與"來處理,當某一臺檢測到某一位電平和自己的不一樣就退出。同時就有兩個需要注意的地方:A-這兩個主機之間如果衝突的時候某一個主機同時想給另一個主機發送數據時數據也會丟失!B-兩個主機發送的數據一樣時SDA線的變化情況一樣同樣會有矛盾,這個處理機制不知道是怎麼回事?《《《<疑問待大神解答,抱拳>

參考網址:http://www.cnblogs.com/wangxianzhen/archive/2013/04/09/3011140.html


2、雙向串行數據線(SDA)在微控STM32中相應引腳該配置成什麼模式?
答:SCL和SDA都被配置成了開漏輸出模式。參考STM32中文參考手冊中第111頁表24可以得知該配置方法(圖1)。至於是什麼原理就不太清楚了,只知道"由於SDA、SCL爲漏極開路結構,藉助於外部的上拉電阻實現了信號的“線與”邏輯",寫軟件其實知道這些就夠了。《《《<疑問待大神解答,抱拳>


3、連接到相同總線的IC數量受到總線的最大電容400pF限制怎麼理解,(雖然一般只有一個設備)?
答:IIC設備本身有寄身電容,同時制板走線也會有電容,當總線上掛載的設備越多,電容也就越大,當電容達到一定值就會影響信號的完整性,影響方波的上下沿斜率,這個時候再通信數據就不太可靠,也就沒啥意義了。(寫軟件就理解到這就不需要深究了)


4、從機地址可以是7位或10位 與 24C0系列存儲芯片的字地址長度8-13位兩個怎麼理解,該處從某論壇工程中 看到(圖2)?
答:答不上來!《《《<疑問待大神解答,抱拳>


5、EEPROM的地址怎麼設置?
EEPROM一般會有3個bit位來區分不同的地址,共7位,高4位爲1010,低3位有外部高低電平決定,所以地址理論值爲0x5N,但是實際操作的時候我們通常會和讀/寫控制位一起發送,且先發地址,再發讀寫控制位,所以會有讀地址和寫地址兩個地址,0xAN(0x5N左移1位)。根據以往工作,我在別的類型的IIC設備中也發現這個特點(一些IIC控制的數字電位計),地址的處理方式也是相同的。

6、多字節寫入時怎麼節省時間,提高實時性?
答:由於IIC通信協議比較簡單,在一些時候如果我們的引腳不夠用的時候可以用普通IO腳直接模擬,而EEPROM手冊中有說明,每寫一個字節需要有5-10us延時,這個我也親自測試過,4us還可以,3us就不行了。如果我們每次寫入的時候都是按字節處理的,那就無所謂了,但是如果我們是按協議處理的,假設每次存儲40個,每個延時6us,那對於工程來說總是有240us的延時總是不是太好,這個時候需要有個FIFO,來在程序輪詢的過程將數據丟出去。
如果我們用的是芯片的外設,根據以往前輩們的操作經驗,就算是按照協議存儲,也是利用硬件外設直接將一長串數據丟到外設緩衝中,至於什麼時候發完我們就不需要管了,反正很快,具體能達到多快沒有親測過,如果將來工作中遇到了會進一步去測,目前沒這個必要(圖3)。


提示:

1、通信過程分三類:寫數據、讀數據、讀和寫數據(複合過程);

2、STM32的IIC外設可以做從機,且每個IIC外設支持兩個IIC設備地址!

3、數據讀寫需要分頁,每次最多能讀寫一頁!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章