《DSP控制器原理及應(yīng)用技術(shù)》第6章通信類外設(shè)及其應(yīng)用開發(fā)_第1頁
《DSP控制器原理及應(yīng)用技術(shù)》第6章通信類外設(shè)及其應(yīng)用開發(fā)_第2頁
《DSP控制器原理及應(yīng)用技術(shù)》第6章通信類外設(shè)及其應(yīng)用開發(fā)_第3頁
《DSP控制器原理及應(yīng)用技術(shù)》第6章通信類外設(shè)及其應(yīng)用開發(fā)_第4頁
《DSP控制器原理及應(yīng)用技術(shù)》第6章通信類外設(shè)及其應(yīng)用開發(fā)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第六章通信類外設(shè)及其應(yīng)用開發(fā)工信部十二五規(guī)劃教材《DSP控制器原理與應(yīng)用技術(shù)》編寫組第6章通信類外設(shè)及其

應(yīng)用開發(fā)6.1串行通信(SCI)模塊6.2串行外設(shè)(SPI)模塊6.3增強(qiáng)控制器局域網(wǎng)(eCAN)模塊6.4多通道緩沖串口(McBSP)模塊6.5I2C總線模塊

一、結(jié)構(gòu)與點(diǎn)-點(diǎn)通信原理6.1.1SCI模塊的結(jié)構(gòu)與工作原理6.1串行通訊接口模塊(SCI)二、數(shù)據(jù)傳輸格式1.數(shù)據(jù)幀格式

NRZ(Non-return-to-zero)格式,每個(gè)數(shù)據(jù)(字符)均以相同的幀格式傳送。起始位(Start):占用1位,為低表示數(shù)據(jù)的開始。數(shù)據(jù)位(Data):1-8位,由低位(LSB)開始傳輸。奇/偶校驗(yàn)位(Parity):1位,用于糾錯(cuò)停止位(Stop):1-2位,高電平,表示數(shù)據(jù)幀的結(jié)束。

二、數(shù)據(jù)傳輸格式2.異步通信格式

1位數(shù)據(jù)需8個(gè)內(nèi)部SCICLK時(shí)鐘周期,多數(shù)表決??煽啃愿哂谄胀▎纹瑱C(jī)。3.電氣和物理接口標(biāo)準(zhǔn)

RS232、RS422/RS485三、SCI操作控制1.SCI發(fā)送操作①使TXENA=1,允許發(fā)送器發(fā)送數(shù)據(jù)。②CPU將數(shù)據(jù)寫入SCITXBUF,TXEMPTY為0。同時(shí)TXRDY=0。③數(shù)據(jù)從SCITXBUF加載到TXSHF,TXRDY高。

TXSHF中的數(shù)據(jù)逐一由引腳SCITXD上發(fā)送出去。④TXRDY變高后,CPU再將下一幀數(shù)據(jù)寫入SCITXBUF。⑤第一幀數(shù)據(jù)發(fā)送完畢,第二幀傳送到TXSHF,并開始發(fā)送。⑥當(dāng)TXENA=0,將當(dāng)前數(shù)據(jù)幀發(fā)送完畢后再停止。三、SCI操作控制2.SCI接收操作①令RXENA=1,允許接收器接收數(shù)據(jù)。②接收器檢測到起始位(連續(xù)4個(gè)以上SCICLK低電平),將數(shù)據(jù)位、地址位、奇偶校驗(yàn)位依次移入RXSHF。③一幀接收完畢,將其傳送到SCIRXBUF,并置位RXRDY標(biāo)志。④讀取SCIRXBUF數(shù)據(jù)后,RXRDY標(biāo)志自動(dòng)消除。⑤接收器繼續(xù)接收下一幀數(shù)據(jù)。⑥若第二幀數(shù)據(jù)尚未接收完畢,RXENA=0,則將其接收完畢后再停止,但RXSHF中數(shù)據(jù)不傳送到SCIRXBUF。三、SCI操作控制3.錯(cuò)誤處理操作①數(shù)據(jù)幀錯(cuò)誤:收不到期待的停止位,SCIRXST[FE]置位。②奇/偶校驗(yàn)錯(cuò)誤:“1”的個(gè)數(shù)不符合,SCIRXST[PE]置位。③溢出錯(cuò)誤:SCIRXBUF中數(shù)據(jù)被覆蓋,SCIRXST[OE]置位。④間斷錯(cuò)誤:停止位后連續(xù)保持低電平10位以上,置位SCIRXST[BRKDT]。四種錯(cuò)誤發(fā)生時(shí),均可申請中斷。4.中斷操作

數(shù)據(jù)發(fā)送完畢、接收到數(shù)據(jù)及接收錯(cuò)誤時(shí)可產(chǎn)生中斷。發(fā)送中斷標(biāo)志:SCICTL2[TXRDY],接收中斷標(biāo)志:SCIRXST[RXRDY],接收數(shù)據(jù)錯(cuò)誤中斷標(biāo)志:SCIRXST[RXERROR],間斷中斷標(biāo)志:SCIRXST[BRKDT四、多處理器異步通信原理1.空閑線模式

幀間空閑位10位;幀內(nèi)空閑位<10位

2.地址位模式

數(shù)據(jù)幀中增加地址/數(shù)據(jù)位。1-地址0-數(shù)據(jù)地址位適用于短信息傳送;空閑線適用于長信息傳送。6.1.2SCI模塊的寄存器1.SCI通信控制寄存器SCICCR2.SCI控制寄存器1SCICTL13.SCI控制寄存器2(SCICTL2)4.接收狀態(tài)寄存器5.SCI接收數(shù)據(jù)緩沖器SCIRXBUF位名稱說明動(dòng)作15SCIFFE接收FIFO幀錯(cuò)誤標(biāo)志(FIFO允許時(shí)有效)0-無幀錯(cuò)誤;1-有幀錯(cuò)誤14SCIFFPE接收FIFO奇偶錯(cuò)誤標(biāo)志(FIFO允許時(shí)有效)0-無奇偶錯(cuò)誤;1-有奇偶錯(cuò)誤7:0RXDT6[7:0}接收到的數(shù)據(jù)6.SCIFIFO發(fā)送寄存器SCIFFTX位名稱說明動(dòng)作15SCIRSTSCI發(fā)送/接收通道復(fù)位0-復(fù)位;1-使能操作14SCIFFENAFIFO增強(qiáng)功能允許0-禁止;1-允許13TXFIFOReset發(fā)送FIFO復(fù)位0-復(fù)位,指針指向0;1-使能操作12:8TXFFST{3:0]發(fā)送FIFO狀態(tài)位00000-1000——FIFO有x個(gè)字未發(fā)送7TXFFINTFlagFIFO發(fā)送中斷標(biāo)志0-無中斷;1-有中斷6TXFFINTCLRFIFO發(fā)送中斷清除位0-無影響;1-清除中斷標(biāo)志5TXFFIENAFIFO發(fā)送中斷允許0-禁止;0-允許4:0TXFFIL[4:0]FIFO發(fā)送中斷級(jí)設(shè)定當(dāng)前狀態(tài)位TXFFST<=TXFFIL時(shí)發(fā)生中斷7.SCIFIFO接收寄存器SCIFFRX位名稱說明動(dòng)作15RXFFOVF接收FIFO溢出標(biāo)志0-無溢出;1-溢出14RXFFOVFCLR溢出標(biāo)志清除位0-無影響;1-清除溢出標(biāo)志13RXFIFOReset接收FIFO復(fù)位0-復(fù)位,指針指向0;1-使能操作12:8RXFFST{3:0]接收FIFO狀態(tài)位00000-1000——接收FIFO收到x個(gè)字7RXFFINTFlagFIFO接收中斷標(biāo)志0-無中斷;1-有中斷6RXFFINTCLRFIFO接收中斷清除位0-無影響;1-清除中斷標(biāo)志5RXFFIENAFIFO接收中斷允許0-禁止;0-允許4:0RXFFIL[4:0]FIFO接收中斷級(jí)設(shè)定當(dāng)前狀態(tài)位RXFFST>=RXFFIL時(shí)發(fā)生中斷8.SCIFIFO控制寄存器SCIFFCT位名稱說明動(dòng)作15ABD自動(dòng)波特率檢測標(biāo)志0-未完成檢測;1-完成檢測14ABDCLRABD標(biāo)志清除位0-無影響;1-清除ABD標(biāo)志13CDC自動(dòng)波特率檢測允許0-禁止;1-允許7:0FFTXDLYL[4:0]發(fā)送FIFO發(fā)送數(shù)據(jù)時(shí)每個(gè)數(shù)據(jù)之間的延時(shí)(以波特率時(shí)鐘為單位)8.波特率選擇寄存器與波特率設(shè)置BAUD15(MSB)BAUD14波特率選擇高字節(jié)寄存器(SCIHBAUD)76543210BAUD13BAUD12BAUD11BAUD10BAUD9BAUD8BAUD6波特率選擇低字節(jié)寄存器(SCILBAUD76543210BAUD5BAUD4BAUD3BAUD2BAUD1BAUD7SCI波特率=LSPCLK(BRR+1)x8LSPCLK16, BRR=1to65535, BRR=0BAUD0(LSB)6.1.3SCI模塊應(yīng)用示例下位機(jī)發(fā)送歡迎信息“HelloWorld!”給上位機(jī);上位機(jī)收到歡迎信息后,發(fā)送一個(gè)字符給下位機(jī);下位機(jī)接收到該字符后,再將其回發(fā)給上位機(jī)。#include"DSP2833x_Device.h"#include"DSP2833x_Examples.h"http://函數(shù)聲明.voidscib_echoback_init(void); //聲明SCI初始化函數(shù)voidscib_fifo_init(void); //聲明FIFO初始化函數(shù)voidscib_xmit(inta);//聲明發(fā)送字符函數(shù)voidscib_msg(char*msg); //聲明發(fā)送字符串函數(shù)//全局變量聲明Uint16LoopCount;Uint16ErrorCount;voidmain(void){Uint16ReceivedChar;char*msg;//Step1.初始化系統(tǒng)控制InitSysCtrl();//Step2.初始化GPIOInitGpio();//Step3.清除所有中斷;初始化PIE向量表DINT;InitPieCtrl(); //初始化PIE控制IER=0x0000; //禁止CPU中斷IFR=0x0000; //清除所有CPU中斷標(biāo)志InitPieVectTable(); //初始化PIE向量表//Step4.初始化器件外設(shè),本例不需要//Step5.用戶特定代碼LoopCount=0;ErrorCount=0;scib_fifo_init(); //初始化FIFOscib_echoback_init(); //初始化SCImsg="\r\n\n\nHelloWorld!\0";scib_msg(msg);msg="\r\nEnteracharacterforDSPtoechoback!\n\0";scib_msg(msg);//Step6.無限循環(huán),查詢是否收到字符并回發(fā)for(;;){msg="\r\nEnteracharacter:\0";scib_msg(msg);//等待輸入字符while(ScibRegs.SCIFFRX.bit.RXFFST!=1){} //等待RXFFST=1ReceivedChar=ScibRegs.SCIRXBUF.all; //獲取字符msg=“Yousent:\0”;//回發(fā)scib_msg(msg);scib_xmit(ReceivedChar);LoopCount++;}}//Step7.用戶自定義函數(shù):voidscib_echoback_init() //定義SCI初始化函數(shù){ScibRegs.SCICCR.all=0x0007;//1位停止位,無奇偶校驗(yàn),8位字符ScibRegs.SCICTL1.all=0x0003;//復(fù)位,允許發(fā)送和接收ScibRegs.SCICTL2.all=0x0003;//允許接收和發(fā)送中斷ScibRegs.SCIHBAUD=0x0001 //9600波特率ScibRegs.SCILBAUD=0x00E7;ScibRegs.SCICTL1.all=0x0023; //退出復(fù)位}voidscib_xmit(inta) //定義發(fā)送字符函數(shù){while(ScibRegs.SCIFFTX.bit.TXFFST!=0){}ScibRegs.SCITXBUF=a;}voidscib_msg(char*msg) //定義發(fā)送字符串函數(shù){inti;i=0;while(msg[i]!='\0'){scib_xmit(msg[i]);i++;}}voidscib_fifo_init() //定義FIFO初始化函數(shù){ScibRegs.SCIFFTX.all=0xE040;ScibRegs.SCIFFRX.all=0x204f;ScibRegs.SCIFFCT.all=0x0;}6.2.1SPI模塊結(jié)構(gòu)與工作原理一、結(jié)構(gòu)與點(diǎn)-點(diǎn)通信原理6.1串行通訊接口模塊(SCI)1.主模式①主控制器輸出時(shí)鐘給從控制器,使二者同步。②主控制器將數(shù)據(jù)寫入SPIDAT,由MSB開始,從SPISIMO引腳上串行輸出。③從控制器接收數(shù)據(jù)并移入SPIDAT的LSB。④從控制器將數(shù)據(jù)并行寫入SPIRXBUF,供CPU讀出。同時(shí)可以產(chǎn)生中斷。2.從模式①外部主控制器為從控制器提供時(shí)鐘,使二者同步。②主控制器從SPISTE引腳輸出低電平給從控制器,允許從控制器發(fā)送數(shù)據(jù)。③從控制器寫數(shù)據(jù)至SPIDAT,從SPISOMI輸出。④主控制器從SPISOMI接收數(shù)據(jù),并移入SPIDAT。⑤主控制器將數(shù)據(jù)并行寫入SPIRXBUF。二、波特率和時(shí)鐘模式1.SPI波特率的設(shè)定由SPI波特率寄存器SPIBRR中的值確定。當(dāng)SPIBRR=3~127時(shí),SPI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論