一種I2C設備控制方法的設計和實現
為了快速讀寫數據,本文采用頁面寫的方式將數據寫入AT24C08;采用隨機讀和順序讀相結合的方式讀取AT24C08數據。
3 軟件設計
3.1 TWI初始化程序的設計
根據TWI的功能特點,TWI初始化的初始化包括以下4步:
(1)配置PIO控制器使復用管腳驅動TWI信號;
(2)配置PMC使TWI時鐘處于工作狀態(tài);
(3)配置TWI為主工作模式。本文CPU為主設備,日歷和存儲芯片為從設備;
(4)設置數據傳輸速率,配置TWI時鐘波形發(fā)生器寄存器。
3.2 PCF8563驅動程序的設計
為了控制PCF8563的工作方式,需要對其寫入控制字;為了得到PCF8563輸出的時間信息,需要對其進行讀操作,讀/寫數據的流程如圖3所示。
本文設計編寫如下讀函數和寫函數:
其中,pTwi是結構體指針,指向的結構體中存放TWI的寄存器,通過pTwi即可訪問各TWI寄存器;address表示設備地址;im_address表示設備內部地址;data代表讀寫數據的變量指針。
因此,若使PCF8563工作于普通模式,并讀時數據,可用以下代碼實現:
3.3 AT24C08驅動程序的設計
由于AT24C08由4個具有不同設備地址的頁組成,且采用連續(xù)讀寫數據的操作方式,所以AT24C08的讀寫與PCF8563讀寫有以下幾點區(qū)別。
(1)先設置TWI_CR的起始標志,之后通過TWI_RHR和TWI_THR讀/寫TWI接口的數據;發(fā)送最后一個數據之前,再設置TWI_CR的停止標志。
(2)對于多字節(jié)數據的讀寫,全部數據若沒有傳輸完畢,便不發(fā)送停止信號,所以需通過判斷TWI_SR寄存器中的TXRDY和RXRDY決定是否讀TWI_RHR和寫TWI_THR,而將是否出現停止信號作為是否停止發(fā)送和接收的判斷依據。
(3)由于數據量和起始單元均是隨機的,所以有可能出現一頁寫不下的情況,因此針對給定的數據量和起始單元參數需要計算出共需幾頁,以便在進行頁面切換時更換設備地址。
本文設計編寫了如下讀函數和寫函數。
3.4 軟件的調試與運行
本文采用IAR開發(fā)環(huán)境和J-LINK仿真器進行軟件的在線調試和加載運行。調用函數完成以下程序設計:首先從PCF8563連續(xù)讀出若干數據并寫入AT24C08;其次,將AT24C08中的數據讀至數組變量中。在程序中的讀完AT24C08數據后設置斷點,觀測數組中存放的數據,從而驗證驅動程序的正確性。
4 結 語
本文介紹了PCF8563和AT24C08的使用方法,通過分析基于ARM核的AT91SAM7X256的TWI接口控制方法,設計PCF8563和AT24C08的驅動程序,實現時鐘數據的讀取和存儲。
本文設計的驅動模塊已成功地用于智能煤礦分站實驗系統(tǒng)中,完成了歷史時間數據的記錄功能,同時本文為ARM控制多個I2C設備提供了可以借鑒的方法。
評論