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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

數(shù)據(jù)發(fā)送完畢、接收到數(shù)據(jù)及接收錯誤時可產(chǎn)生中斷。發(fā)送中斷標志:SCICTL2[TXRDY],接收中斷標志:SCIRXST[RXRDY],接收數(shù)據(jù)錯誤中斷標志:SCIRXST[RXERROR],間斷中斷標志: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位名稱說明動作15SCIFFE接收FIFO幀錯誤標志(FIFO允許時有效)0-無幀錯誤;1-有幀錯誤14SCIFFPE接收FIFO奇偶錯誤標志(FIFO允許時有效)0-無奇偶錯誤;1-有奇偶錯誤7:0RXDT6[7:0}接收到的數(shù)據(jù)6.SCIFIFO發(fā)送寄存器SCIFFTX位名稱說明動作15SCIRSTSCI發(fā)送/接收通道復位0-復位;1-使能操作14SCIFFENAFIFO增強功能允許0-禁止;1-允許13TXFIFOReset發(fā)送FIFO復位0-復位,指針指向0;1-使能操作12:8TXFFST{3:0]發(fā)送FIFO狀態(tài)位00000-1000——FIFO有x個字未發(fā)送7TXFFINTFlagFIFO發(fā)送中斷標志0-無中斷;1-有中斷6TXFFINTCLRFIFO發(fā)送中斷清除位0-無影響;1-清除中斷標志5TXFFIENAFIFO發(fā)送中斷允許0-禁止;0-允許4:0TXFFIL[4:0]FIFO發(fā)送中斷級設定當前狀態(tài)位TXFFST<=TXFFIL時發(fā)生中斷7.SCIFIFO接收寄存器SCIFFRX位名稱說明動作15RXFFOVF接收FIFO溢出標志0-無溢出;1-溢出14RXFFOVFCLR溢出標志清除位0-無影響;1-清除溢出標志13RXFIFOReset接收FIFO復位0-復位,指針指向0;1-使能操作12:8RXFFST{3:0]接收FIFO狀態(tài)位00000-1000——接收FIFO收到x個字7RXFFINTFlagFIFO接收中斷標志0-無中斷;1-有中斷6RXFFINTCLRFIFO接收中斷清除位0-無影響;1-清除中斷標志5RXFFIENAFIFO接收中斷允許0-禁止;0-允許4:0RXFFIL[4:0]FIFO接收中斷級設定當前狀態(tài)位RXFFST>=RXFFIL時發(fā)生中斷8.SCIFIFO控制寄存器SCIFFCT位名稱說明動作15ABD自動波特率檢測標志0-未完成檢測;1-完成檢測14ABDCLRABD標志清除位0-無影響;1-清除ABD標志13CDC自動波特率檢測允許0-禁止;1-允許7:0FFTXDLYL[4:0]發(fā)送FIFO發(fā)送數(shù)據(jù)時每個數(shù)據(jù)之間的延時(以波特率時鐘為單位)8.波特率選擇寄存器與波特率設置BAUD15(MSB)BAUD14波特率選擇高字節(jié)寄存器(SCIHBAUD)76543210BAUD13BAUD12BAUD11BAUD10BAUD9BAUD8BAUD6波特率選擇低字節(jié)寄存器(SCILBAUD76543210BAUD5BAUD4BAUD3BAUD2BAUD1BAUD7SCI波特率=LSPCLK(BRR+1)x8LSPCLK16, BRR=1to65535, BRR=0BAUD0(LSB)6.1.3SCI模塊應用示例下位機發(fā)送歡迎信息“HelloWorld!”給上位機;上位機收到歡迎信息后,發(fā)送一個字符給下位機;下位機接收到該字符后,再將其回發(fā)給上位機。#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中斷標志InitPieVectTable(); //初始化PIE向量表//Step4.初始化器件外設,本例不需要//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位停止位,無奇偶校驗,8位字符ScibRegs.SCICTL1.all=0x0003;//復位,允許發(fā)送和接收ScibRegs.SCICTL2.all=0x0003;//允許接收和發(fā)送中斷ScibRegs.SCIHBAUD=0x0001 //9600波特率ScibRegs.SCILBAUD=0x00E7;ScibRegs.SCICTL1.all=0x0023; //退出復位}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)與點-點通信原理6.1串行通訊接口模塊(SCI)1.主模式①主控制器輸出時鐘給從控制器,使二者同步。②主控制器將數(shù)據(jù)寫入SPIDAT,由MSB開始,從SPISIMO引腳上串行輸出。③從控制器接收數(shù)據(jù)并移入SPIDAT的LSB。④從控制器將數(shù)據(jù)并行寫入SPIRXBUF,供CPU讀出。同時可以產(chǎn)生中斷。2.從模式①外部主控制器為從控制器提供時鐘,使二者同步。②主控制器從SPISTE引腳輸出低電平給從控制器,允許從控制器發(fā)送數(shù)據(jù)。③從控制器寫數(shù)據(jù)至SPIDAT,從SPISOMI輸出。④主控制器從SPISOMI接收數(shù)據(jù),并移入SPIDAT。⑤主控制器將數(shù)據(jù)并行寫入SPIRXBUF。二、波特率和時鐘模式1.SPI波特率的設定由SPI波特率寄存器SPIBRR中的值確定。當SPIBRR=3~127時,SPI

溫馨提示

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

最新文檔

評論

0/150

提交評論