下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、st9+系列單片機(jī)i2c總線驅(qū)動(dòng)程序?qū)崿F(xiàn)串行擴(kuò)展 st9+ 總線驅(qū)動(dòng)串行擴(kuò)展總線技術(shù)是新一代技術(shù)進(jìn)展的一個(gè)顯著特點(diǎn),其中philips公司推出的i2c總線最為聞名。i2c總線最顯著的特點(diǎn)是規(guī)范的完整性、結(jié)構(gòu)的自立性和用戶用法時(shí)的容易化。i2c總線有嚴(yán)格的規(guī)范,如接口的電氣特性、信號(hào)時(shí)序、信號(hào)傳輸?shù)亩x、總線狀態(tài)設(shè)置、總線管理規(guī)章及總線狀態(tài)處理等。與并行擴(kuò)展總線相比,串行擴(kuò)展總線有突出的優(yōu)點(diǎn):結(jié)構(gòu)容易,程序編寫便利,易于實(shí)現(xiàn)用戶系統(tǒng)軟硬件的模塊化、標(biāo)準(zhǔn)化等。目前i2c總線技術(shù)已為許多聞名公司所采納,并廣泛應(yīng)用于視頻、音頻系統(tǒng)中。推廣i2c總線技術(shù)將有助于提高我國(guó)單片機(jī)應(yīng)用開(kāi)發(fā)水平。公司(sgs-
2、thomson)是全球十大創(chuàng)造商之一,其率先單片機(jī)產(chǎn)品st9+系列是目前功能比較全面且支持通信協(xié)議較多的一款產(chǎn)品,支持包括i2c、在內(nèi)的多種通信協(xié)議。本文以st9+系列單片機(jī)中的st92163為例,闡述其對(duì)i2c總線的支持方式,并給出在st92163單片機(jī)上實(shí)現(xiàn)i2c總線協(xié)議的程序流程和辦法。1 st9+系列單片機(jī)結(jié)構(gòu)及其對(duì)i2c總線的支持1.1 st9+系列單片機(jī)的結(jié)構(gòu)和特點(diǎn)st92163單片機(jī)是st9+系列單片機(jī)中的典型產(chǎn)品,1所示。本文以該款單片機(jī)為例介紹st9+系列產(chǎn)品。該產(chǎn)品為8位/16位兼容單片機(jī),片內(nèi)含20kb的rom和2 kb的ram,主頻24 mhz,擁有256個(gè)寄存器,最大
3、內(nèi)存尋址4mb,支持i2c、spi以及usb在內(nèi)的多種串行通信協(xié)議,在視頻、音頻等方面具有廣泛的應(yīng)用。其256個(gè)寄存器分為224個(gè)通用寄存器、16個(gè)系統(tǒng)寄存器和16個(gè)頁(yè)寄存器。其中16個(gè)頁(yè)寄存器對(duì)應(yīng)64頁(yè),可通過(guò)轉(zhuǎn)變當(dāng)前頁(yè)來(lái)切換不同功能的16個(gè)頁(yè)寄存器。1.2 st9+系列單片機(jī)對(duì)i2c總線的支持st9+支持2種模式的i2c總線,包括100 khz的標(biāo)準(zhǔn)i2c模式和400khz的迅速i2c模式。同時(shí)st9+系列單片機(jī)也支持7位和10位2種長(zhǎng)度的地址碼,并采納dma的方式使對(duì)單片機(jī)處理時(shí)光的占用降到最小。除此之外,st9+為支持i2c總線協(xié)議還具備以下特征:內(nèi)部并行總線與i2c串行總線的轉(zhuǎn)換、總
4、線上多主器件的支持和接收或者發(fā)送標(biāo)記產(chǎn)生、發(fā)送或接收數(shù)據(jù)完畢標(biāo)記產(chǎn)生、發(fā)送過(guò)程中錯(cuò)誤檢測(cè)以及支持錯(cuò)誤發(fā)生后產(chǎn)生中斷等。針對(duì)主器件模式,st9+系列單片機(jī)還增強(qiáng)了總線時(shí)鐘產(chǎn)生、總線忙標(biāo)記產(chǎn)生、開(kāi)頭位標(biāo)記檢測(cè)、總線仲裁走失標(biāo)記產(chǎn)生以及開(kāi)頭和結(jié)束標(biāo)記產(chǎn)生等特征。而針對(duì)從設(shè)備,st9+也有相關(guān)特征支持,包括有停止位標(biāo)記檢測(cè)、設(shè)備地址編程、發(fā)送錯(cuò)誤檢測(cè)、數(shù)據(jù)發(fā)送或接收完畢標(biāo)記產(chǎn)生和開(kāi)頭或結(jié)束錯(cuò)位檢測(cè)等特征。st9+系列單片機(jī)中實(shí)現(xiàn)i2c總線協(xié)議的寄存器共有16個(gè),2所示。其中初始化寄存器6個(gè),包括i2c自地址寄存器i2coar1和i2coar2、地址調(diào)用寄存器i2cadr、時(shí)鐘控制寄存器i2cccr和i
5、2ceccr以及控制寄存器i2ccr;數(shù)據(jù)發(fā)送和接收寄存器4個(gè),包括數(shù)據(jù)寄存器i2cdr、控制寄存器i2ccr、狀態(tài)寄存器i2csr1和i2csr2;i2c相關(guān)中斷和dma寄存器7個(gè),包括中斷狀態(tài)寄存器i2cisr、中斷掩碼寄存器i2cimr、中斷向量寄存器i2civr、接收dma地址指針寄存器i2crdap、接收dma事務(wù)計(jì)數(shù)寄存器i2crdc、發(fā)送dma地址指針寄存器i2ctdap以及發(fā)送dma事務(wù)計(jì)數(shù)寄存器i2ctda。這16個(gè)寄存器均為頁(yè)寄存器,并放在同一頁(yè)中。以上寄存器中,數(shù)據(jù)寄存器i2cdr、控制寄存器i2ccr、狀態(tài)寄存器i21和i2csr2是最基本的4個(gè)寄存器,通過(guò)這4個(gè)寄存器
6、的設(shè)置可以實(shí)現(xiàn)基本的發(fā)送和接收數(shù)據(jù)的功能。這4個(gè)寄存器的詳細(xì)狀況3、4、5所示。pe為外設(shè)使能位,engc為從設(shè)備模式使能位,start為開(kāi)頭標(biāo)記使能位,ack為響應(yīng)使能位,stop為結(jié)束標(biāo)記使能位,ite為中斷使能位。evf為大事標(biāo)記位,add10為10位長(zhǎng)度地址位,tra為區(qū)分發(fā)送或接收狀態(tài)位,busy為總線忙標(biāo)記位,btf為數(shù)據(jù)傳輸結(jié)束標(biāo)記位,adsl為從設(shè)備地址匹配標(biāo)記位,m/sl為區(qū)分主從設(shè)備位,sb為開(kāi)頭標(biāo)記位。addtx為地址應(yīng)答標(biāo)記位,af為應(yīng)答失敗標(biāo)記位,stopf為從設(shè)備檢測(cè)到停止標(biāo)記位,arlo為總線仲裁走失標(biāo)記位,berr為總線忙錯(cuò)誤標(biāo)記位,gcal為一般地址調(diào)用匹配標(biāo)
7、記位。i2c數(shù)據(jù)寄存器i2cdr為存放待發(fā)數(shù)據(jù)或接收到數(shù)據(jù)的緩沖區(qū),在下一個(gè)要發(fā)送或者接收的字節(jié)數(shù)據(jù)到來(lái)之前必需清空。2 程序?qū)崿F(xiàn)2.1 編譯工具st9+系列單片機(jī)i2c總線協(xié)議驅(qū)動(dòng)程序采納ansi 編寫,用法gnu組織的gcc編譯器編譯、鏈接生成所需要的十六進(jìn)制文件。gcc編譯器是自由軟件組織發(fā)布的多平臺(tái)支持的c語(yǔ)言編譯器,st9+系列單片機(jī)編程用法的gcc9版本,包括了用于c語(yǔ)言編譯的cc9、用于匯編語(yǔ)言編譯的gas9、用于鏈接的ld9和宏匯編說(shuō)明器tr9等模塊。圖6 為gcc9編譯、鏈接流程圖。2.2 程序設(shè)計(jì)及流程為了實(shí)現(xiàn)容易的數(shù)據(jù)發(fā)送和接收功能,定義以下幾個(gè)函數(shù):對(duì)i2c主要寄存器初
8、始化的i2c_init函數(shù)、發(fā)送數(shù)據(jù)的i2c_tx函數(shù)、接收數(shù)據(jù)的i2c_rx函數(shù)、發(fā)送從設(shè)備地址的i2c_send_deviceid函數(shù)以及開(kāi)頭標(biāo)記i2c_start函數(shù)和結(jié)束標(biāo)記i2c_stop函數(shù)。i2c_init函數(shù)中主要完成i2c控制寄存器i2ccr的設(shè)置。i2c數(shù)據(jù)寄存器i2cdr的清空以及i2c時(shí)鐘寄存器i2cccr的i2c工作頻率設(shè)置等工作,以挑選所需要的i2c工作模式。i2c_start函數(shù)中主要完成對(duì)i2c控制寄存器i2ccr的start位的置位,并等待i2c狀態(tài)寄存器i2csr1的start標(biāo)記位被系統(tǒng)置位。i2c_stop函數(shù)中主要完成對(duì)i2c控制寄存器i2ccr的stop位的置位,以允許當(dāng)數(shù)據(jù)發(fā)送完畢后系統(tǒng)對(duì)i2c狀態(tài)寄存器i2csr1的stop標(biāo)記位置位。i2c_tx函數(shù)則是把需要發(fā)送的數(shù)據(jù)放入i2c數(shù)據(jù)寄存器i2cdr中發(fā)送,并在系統(tǒng)對(duì)i2c狀態(tài)寄存器i2csr1的btf標(biāo)記位置位后退出此函數(shù)。同理,i2c_rx函數(shù)則從i2c數(shù)據(jù)寄存器i2cdr中取出通過(guò)i2c總線接收到的數(shù)據(jù),在系統(tǒng)對(duì)i2c狀態(tài)寄存器i2csr1的btf標(biāo)記位置位后退出此函數(shù)。i2c_send_deviceid函數(shù)目的在于發(fā)送從設(shè)備地址,并打算是接收數(shù)據(jù)還是發(fā)送數(shù)據(jù)。圖7為i2c發(fā)送、接收程序流程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度首付分期購(gòu)房借款合同范本規(guī)定6篇
- 年度線性低密度聚乙烯產(chǎn)業(yè)分析報(bào)告
- 年度吸污車產(chǎn)業(yè)分析報(bào)告
- 2025年度樓房建筑工程合同糾紛解決協(xié)議4篇
- 二零二四年養(yǎng)老社區(qū)三方物業(yè)服務(wù)委托合同文本3篇
- 二零二五年度船舶租賃船運(yùn)輸協(xié)議合同3篇
- 二零二五年酒店客房家具更新?lián)Q代合同3篇
- 2025年度智能交通信號(hào)系統(tǒng)安裝與維護(hù)承包協(xié)議合同范本3篇
- 二零二五版教育培訓(xùn)機(jī)構(gòu)合同標(biāo)的課程開(kāi)發(fā)與教學(xué)質(zhì)量承諾3篇
- 2025年度生物質(zhì)能發(fā)電項(xiàng)目合作協(xié)議合同范本
- GB/T 33688-2017選煤磁選設(shè)備工藝效果評(píng)定方法
- GB/T 304.3-2002關(guān)節(jié)軸承配合
- 漆畫漆藝 第三章
- CB/T 615-1995船底吸入格柵
- 光伏逆變器一課件
- 貨物供應(yīng)、運(yùn)輸、包裝說(shuō)明方案
- (完整版)英語(yǔ)高頻詞匯800詞
- 《基礎(chǔ)馬來(lái)語(yǔ)》課程標(biāo)準(zhǔn)(高職)
- IEC61850研討交流之四-服務(wù)影射
- 《兒科學(xué)》新生兒窒息課件
- 材料力學(xué)壓桿穩(wěn)定
評(píng)論
0/150
提交評(píng)論