第7章串行通信接口_第1頁
第7章串行通信接口_第2頁
第7章串行通信接口_第3頁
第7章串行通信接口_第4頁
第7章串行通信接口_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第7章

串行通信接口本章內容:7.1SCI模塊概述7.2SCI模塊的結構7.3SCI的寄存器7.4SCI應用實例7.5串行外設接口SPI7.6增強型CAN總線eCAN7.7多通道緩沖串行口McBSP28xDSP的通信接口包括異步串行通信接口(SCI)、串行外設接口(SPI)、控制器局域網絡(CAN)接口、多通道緩沖串口(McBSP)、芯片間總線(I2C)接口等。中繼臺2/3/20231山東大學控制學院張東亮7.1SCI模塊概述28xDSP的SCI(SerialCommunicationInterface)串行通信接口模塊是一個標準的異步串行口(UART)。可以和RS232/485設備接口。可以半雙工或全雙工操作。可以通過波特率選擇寄存器設置波特率。

數據格式:一個起始位、1~8位數據位、可選擇奇/偶/無校驗位、一個或兩個停止位。2/3/20232山東大學控制學院張東亮SCI-UART(2modulesaboard)Twowakeupmultiprocessormodesidle-lineandaddressbitHalforfullduplexoperation16-leveltransmit/receiveFIFObufferAuto-baud-detectHardwareLogicSCITXDSCIRXDSystem

ControlBlockSCIAENCLKPeripheralBusSCITXINTSCIRXINTSCIRegistersLowSpeed

PrescalerLSPCLKCPUSYSCLKOUTInterrupt

Handling

ModuleGPIOMUXSCI/CPUInterfaceCommunicationPeripheralsCommunicationPeripherals

SCI(UART)2/3/20233山東大學控制學院張東亮SCI模塊與CPU接口框圖2/3/20234山東大學控制學院張東亮SCI模塊的結構框圖7.2SCI模塊的結構2/3/20235山東大學控制學院張東亮串行通信接口SCI的結構:發送器(TX)及其寄存器接收器(RX)及其寄存器可編程波特率發生器控制和狀態寄存器1.串行通信接口的信號2/3/20236山東大學控制學院張東亮2.多處理器和異步通信模式3.串行通信接口可編程數據格式

4.SCI多處理器通信串行通信接口SCI有兩個多處理器協議:空閑線多處理器模式和地址位多處理器模式。數據的基本單位為字符,它的長度是1~8位。數據的每個字符包括一個起始位、一個或者兩個停止位、一個可選的奇偶校驗位和一個地址位。多處理器通信格式允許一個處理器在同一串行線上與其他的處理器進行有效的數據塊傳輸。在一個串行線上,在同一時刻只允許存在一個發送器。2/3/20237山東大學控制學院張東亮5.空閑線多處理器模式空閑線多處理器模式的數據格式

數據塊與數據塊之間通過較長的空閑時間分開,而且這個空閑時間比數據塊內部幀與幀之間的空閑時間長得多。空閑線協議通過在某一幀之后使用10位或更多的空閑時間來指示一個新數據塊的開始。2/3/20238山東大學控制學院張東亮6.地址位多處理器模式地址位多處理器模式的數據格式

在該模式中,幀信息的最后一個數據位后緊跟著一個稱之為地址位的附加位。在數據塊中,第一個幀的地址位設為1,其他幀的地址位都要設成0。2/3/20239山東大學控制學院張東亮7.SCI通信格式SCI異步通信格式

每一幀都由一個起始位、1至8個數據位、一個可選的奇偶校驗位和1~2個停止位組成。每個數據位有8個SCICLK周期。處理器通過對每個位的中間3次采樣值來確定該位的值。這些采樣分別出現在第4個、第5個和第6個時鐘周期,而且根據多數表決(3取2)原則確定該位的值。

2/3/202310山東大學控制學院張東亮通信模式中SCIRX信號時序圖

通信模式中SCITX信號時序圖

2/3/202311山東大學控制學院張東亮8.串行通信接口中斷SCI接收器和發送器都能產生中斷。SCICTL2寄存器中包含有一個標志位(TXRDY),它用于指示當前中斷的狀態,同時SCIRXST寄存器也包含兩個中斷標志位(RXRDY和BRKDT)和一個RXERROR中斷標志(由FE、OE和PE等條件進行邏輯或產生)。發送器和接收器分別擁有各自的中斷使能位。SCI接收器和發送器都有各自的中斷向量。中斷申請既可設置為高優先級也可以設置為低優先級,這由SCI模塊向PIE控制器送出的優先級標志位決定。當RX和TX中斷都分配在同一個優先級時,為了減小發生接收溢出的概率,接收器中斷總是比發送器中斷的優先級高。2/3/202312山東大學控制學院張東亮9.SCI波特率計算SCI模塊的波特率(1≤BRR≤65535

)波特率選擇寄存器(SCIHBAUD,SCILBAUD)的值BRRBRR=0時2/3/202313山東大學控制學院張東亮7.3SCI的寄存器SCI通信控制寄存器:SCICCRSCI控制寄存器1:SCICTL1波特率選擇寄存器:SCIHBAUD,SCILBAUDSCI控制寄存器2:SCICTL2SCI接收狀態寄存器:SCIRXSTSCI接收數據緩沖寄存器:SCIRXBUFSCI發送數據緩沖寄存器:SCITXBUFSCI優先級控制寄存器:SCIPRI2/3/202314山東大學控制學院張東亮SCI通信控制寄存器(SCICCR)

SCI通信控制寄存器(SCICommunicationControlRegister,SCICCR)定義了字符格式、協議和通信模式。位7STOPBITS:設置SCI停止位的個數。1/0:2/1個停止位。位6EVEN/ODDPARITY:SCI奇偶校驗選擇位。1:偶校驗。

位5PARITYENABLE:SCI奇偶校驗使能位。1:使能。

位4LOOPBACKENA:自測模式使能位。1:使能。位3ADDR/IDLEMODE:SCI多處理器模式選擇位。1:選擇地址位模式。0:選擇空閑線模式。位2~0SCICHAR2~0:字符長度選擇位。2/3/202315山東大學控制學院張東亮字符的長度選擇2/3/202316山東大學控制學院張東亮SCI控制寄存器1(SCICTL1)

SCI控制寄存器1(SCIControlRegister1,SCICTL1)控制接收/發送的使能,TXWAKE和SLEEP功能,以及SCI軟件重啟動。位6RXERRINTENA:SCI接收錯誤中斷使能位。1:使能

位5SWRESET:SCI軟件復位位(低電平有效)。位3TXWAKE:SCI發送器喚醒方法選擇位。位2SLEEP:SCI休眠位。1:休眠模式。檢測地址字節。位1TXENA:SCI發送使能位。1:使能發送。位0RXENA:SCI接收使能位。1:使能接收。

2/3/202317山東大學控制學院張東亮波特率選擇寄存器(SCIHBAUD,SCILBAUD)

SCI模塊的波特率按下式計算(1≤BRR≤65535)16位波特率選擇寄存器中的值BRR為如果BRR=0,則包括波特率選擇高字節寄存器SCIHBAUD和低字節寄存器SCILBAUD。二者內確定了SCI的波特率。2/3/202318山東大學控制學院張東亮SCI控制寄存器2(SCIControlRegister2,SCICTL2)

位7TXRDY:發送緩沖寄存器準備就緒標志位。1:準備接收數據。

位6TXEMPTY:發送器空標志位。位1RX/BKINTENA:接收緩沖器/間斷中斷使能位。1:使能。位0TXINTENA:發送緩沖寄存器(SCITXBUF)中斷使能位。

2/3/202319山東大學控制學院張東亮SCI接收狀態寄存器:SCIRXST

SCI接收狀態寄存器(SCIReceiverStatusRegister,SCIRXST)包含了7位接收器的狀態標志(其中兩個可以產生中斷請求)。位7RXERROR:SCI接收器錯誤標志位。位6RXRDY:SCI接收器準備就緒標志位。位5BRKDT:SCI間斷檢測標志位。位4FE:SCI幀錯誤(FrameError)標志位。位3OE:SCI溢出錯誤標志位。位2PE:SCI奇/偶校驗錯誤標志位。位lRXWAKE:SCI接收器喚醒檢測標志位。2/3/202320山東大學控制學院張東亮SCI接收數據緩沖寄存器(SCIRXEMU,SCIRXBUF)接收數據緩沖寄存器(SCIRXEMU,SCIRXBUF)用于接收數據,將數據從寄存器RXSHF轉移到SCIRXEMU和SCIRXBUF中。仿真數據緩沖器寄存器SCIRXEMU主要是由仿真器(EMU)使用。2/3/202321山東大學控制學院張東亮SCI發送數據緩沖寄存器(SCITXBUF)

SCI優先級控制寄存器(SCIPriorityControlRegister,SCIPRI)位4~3SCISOFT和SCIFREE:當一個仿真懸掛事件產生時,這兩位決定其后如何操作。00:一旦仿真懸掛,立即停止。10:一旦仿真懸掛,在完成當前的接收/發送操作后停止。x1:SCI操作不受仿真掛起影響。2/3/202322山東大學控制學院張東亮7.4SCI應用實例例,DSP通過RS-232與PC機串行通信。包括硬件接口電路與通信軟件。PC機采用串口調試工具軟件,將PC機鍵盤的輸入發送給DSP,DSP收到PC機發來的數據后,回送同一數據給PC機,并在PC機屏幕上顯示出來。DSP通過MAX3232電平轉換電路與PC機串行通信

2/3/202323山東大學控制學院張東亮//采用查詢方式編寫的DSP通信程序。

SCIA將接收到的數據字節后回送#include"DSP281x_Device.h"unsignedint

RecieveChar;voidScia_init() //SCIA初始化程序

{ EALLOW; GpioMuxRegs.GPFMUX.all=0x0030; //設置GPIOF4,5為通信端口EDIS; SciaRegs.SCICTL2.all=0x0000; //禁止接收和發送中斷 SciaRegs.SCILBAUD=0x00E7; //波特率=9600 SciaRegs.SCIHBAUD=0x0001; SciaRegs.SCICCR.all=0x0007;//1個停止位,禁止校驗,8位字符 //禁止自測試,異步空閑線協議 SciaRegs.SCICTL1.all=0x0023;//脫離復位狀態,使能接收發送}2/3/202324山東大學控制學院張東亮voidmain(void){ InitSysCtrl(); //系統初始化DINT; //禁止和清除所有的CPU中斷 IER=0x0000; IFR=0x0000; Scia_init(); //SCIA初始化 while(1){ while(SciaRegs.SCIRXST.bit.RXRDY!=1){} //XRDY=1表示接收到數據 RecieveChar=SciaRegs.SCIRXBUF.all; SciaRegs.SCITXBUF=RecieveChar+1; //接收到的字符RecieveChar送回 while(SciaRegs.SCICTL2.bit.TXRDY==0){} while(SciaRegs.SCICTL2.bit.TXEMPTY==0){}}}2/3/202325山東大學控制學院張東亮//采用中斷方式編寫的DSP通信程序。#include"DSP281x_Device.h“interruptvoidscirxinta_isr(void);//SCIA串行接收中斷服務程序unsignedint

RecieveChar;voidScia_init() //SCIA初始化程序,同查詢方式

{ EALLOW; GpioMuxRegs.GPFMUX.all=0x0030; //設置GPIOF4,5為通信端口…}2/3/202326山東大學控制學院張東亮voidmain(void){ InitSysCtrl(); //系統初始化 DINT; //禁止和清除所有的CPU中斷 IER=0x0000; IFR=0x0000; Scia_init(); //SCIA初始化 InitPieCtrl(); //PIE初始化 InitPieVectTable(); //中斷向量表初始化 EALLOW; PieVectTable.RXAINT=&scirxinta_isr;//SCIA中斷向量 EDIS; PieCtrlRegs.PIEIER9.bit.INTx1=1;//使能SCIRXINTA中斷 IER|=M_INT9; EINT; ERTM; //開放全局實時調試中斷DBGM while(1){;}}2/3/202327山東大學控制學院張東亮interruptvoidscirxinta_isr(void)//SCIA串行接收中斷服務程序{EINT; //允許中斷嵌套RX=SciaRegs.SCIRXBUF.bit.RXDT;RecieveChar=SciaRegs.SCIRXBUF.all;SciaRegs.SCITXBUF=RecieveChar; //接收到的字符RecieveChar送回while(SciaRegs.SCICTL2.bit.TXRDY==0){}PieCtrlRegs.PIEACK.all=PIEACK_GROUP9;}2/3/202328山東大學控制學院張東亮/*另例。2812A板:使用直連的串口通信電纜;啟動串口調試助手.exe; PC機發送一個“.”為結束標志。波特率為9600bit/s。數據格式為l位起始位,8位數據位、一個停止位,無奇偶校驗位。查詢方式*/#include"DSP281x_Device.h“ //頭文件

voidscia_loopback_init(void); //函數聲明

voidscia_fifo_init(void); voidscia_xmit(inta);voiderror(int);voidwait(intnWait);interruptvoidscia_rx_isr(void);interruptvoidscia_tx_isr(void);Uint16LoopCount; //定義全局變量

Uint16ErrorCount;charcString[17]={"HelloPC!,Over|"},cReceive,cBuffer[17],cAnswer[16]={"Oh,yousay"};2/3/202329山東大學控制學院張東亮voidmain(void){ charReceivedChar; inti,k=0,nLen,bReceive=0; InitSysCtrl(); //初始化PLL、WD和時鐘

EALLOW;GpioMuxRegs.GPFMUX.all=0x0030; //選擇GPIOF為SCI-A引腳 EDIS; DINT; //禁止中斷

IER=0x0000; IFR=0x0000; InitPieVectTable(); //初始化PIE向量表

EnableInterrupts(); //使能CPU和PIE中斷

2/3/202330山東大學控制學院張東亮LoopCount=0;ErrorCount=0;scia_fifo_init(); //初始化SCIFIFO

scia_loopback_init(); //初始化SCI回送

for(i=0;i<16;i++) { scia_xmit(cString[i]);//向PC發送"HelloPC!,Over|"

while(SciaRegs.SCIFFTX.bit.TXFFST!=0){}

} for(;;)2/3/202331山東大學控制學院張東亮k=0;bReceive=0;while(1){while(SciaRegs.SCIFFRX.bit.RXFIFST==0){} //如果接受寄存器不為0則跳出ReceivedChar=SciaRegs.SCIRXBUF.all;cBuffer[k]=ReceivedChar; if(ReceivedChar=='.') { cBuffer[k+1]='\0'; nLen=k+1; bReceive=1; break; } k++;k%=16; } }}

2/3/202332山東大學控制學院張東亮{if(bReceive==1){for(i=0;i<10;i++) { scia_xmit(cAnswer[i]); while(SciaRegs.SCIFFTX.bit.TXFFST!=0){} } scia_xmit('\"'); for(i=0;i<nLen;i++) { scia_xmit(cBuffer[i]); while(SciaRegs.SCIFFTX.bit.TXFFST!=0){} } scia_xmit('\"'); wait(1024); for(i=9;i<16;i++) {scia_xmit(cString[i]); while(SciaRegs.SCIFFTX.bit.TXFFST!=0){} } }2/3/202333山東大學控制學院張東亮voiderror(intErrorFlag){ErrorCount++;}//Test1,SCIADLB,8-bitword,baudrate0x000F,default,1STOPbit,noparityvoidscia_loopback_init(){//Note:ClockswereturnedontotheSCIAperipheral//intheInitSysCtrl()function SciaRegs.SCICCR.all=0x0007; //1stopbit,Noloopback,Noparity,8charbits, //asyncmode,idle-lineprotocol SciaRegs.SCICTL1.all=0x0003; //enableTX,RX,internalSCICLK, //DisableRXERR,SLEEP,TXWAKE SciaRegs.SCICTL2.all=0x0003; SciaRegs.SCICTL2.bit.TXINTENA=1; SciaRegs.SCICTL2.bit.RXBKINTENA=1;SciaRegs.SCIHBAUD=0x0001;2/3/202334山東大學控制學院張東亮SciaRegs.SCILBAUD=0x00e7; //波特率

9600bps SciaRegs.SCICCR.bit.LOOPBKENA=0; //disableloopback SciaRegs.SCICTL1.all=0x0023;//RelinquishSCIfromReset}//voidscia_xmit(inta) //由SCI發送一個字符a

{SciaRegs.SCITXBUF=a;}//voidscia_fifo_init() //初始化SCIFIFO

{SciaRegs.SCIFFTX.all=0xE040;SciaRegs.SCIFFRX.all=0x204f;SciaRegs.SCIFFCT.all=0x0;}voidwait(intnWait){inti,j,k=0; for(i=0;i<nWait;i++) for(j=0;j<64;j++) k++;}2/3/202335山東大學控制學院張東亮7.5串行外設接口SPI串行外設接口的結構與工作原理SPI引腳功能的選擇SPI的多機通信SPI應用

SPI是一種串行總線的外設接口,它只需3根引腳線(發送,接收與時鐘)就可以與外部設備相連。SPI為同步通信接口,兩臺通信設備在同一個時鐘下工作。采用SPI接口的芯片如A/D、D/A、移位寄存器、顯示驅動器、日歷時鐘、I/O、E2PROM、語音電路等越來越多,傳輸速度高達幾十Mbps。例如MAX5121為帶SPI接口的12位D/A轉換器芯片。2/3/202336山東大學控制學院張東亮串行外設接口(SPI)模塊框圖(從模式)

2/3/202337山東大學控制學院張東亮SPI主從連接

2/3/202338山東大學控制學院張東亮SPI相關寄存器SPI配置控制寄存器:SPICCRSPI控制寄存器:SPICTLSPI狀態寄存器:SPISTSSPI波特率寄存器:SPIBRRSPI接收緩沖寄存器:SPIRXBUFSPI發送緩沖寄存器:SPITXBUFSPI串行數據寄存器:SPIDATSPI優先級控制寄存器:SPIPRI2/3/202339山東大學控制學院張東亮7.6增強型CAN總線模塊eCANCAN(控制器局域網ControllerAreaNetwork)總線最初是德國BOSH公司為實現汽車內部測量與執行部件之間的數據通信而設計的現場總線(FieldBus),它是一種多主機局部網絡系統。它支持分布式控制和實時控制串行通信網絡,帶有CAN網卡的PC主機及其帶有片內CAN控制器的硬件模塊可以很方便地連接到同一CAN總線上。

結構與工作原理

eCAN模塊的引腳功能的選擇郵箱、控制寄存器

eCAN的應用2/3/202340山東大學控制學院張東亮CommunicationsPortsMailboxRAM

(512bytes)32-Message

MailboxMessageeControllerEnhancedeCANController32DataAddressControls323232Memory

Management

UnitCPUInterface,ReceiveControl

UnitTimer

Management

UniteCANControl

RegisterseCANProtocolKernelCommunication

Buffers*

3.3-VCANTransceiverCANBus*ThecommunicationbuffersaretransparenttotheuserandarenotaccessiblebyusercodeOn-ChipCANController(eCAN)

IndustrialNetworking2.0Bcompliant32Mailboxes32Localreceivemasks32InterruptmasksLow-powermodeProgrammablewake-uponbusactivityAutomaticreplytoaremotemessagerequestTime-stampingofmessages2/3/202341山東大學控制學院張東亮CAN總線的主要特性

能以多主方式工作。能以點對點、一點對多點及全局廣播等方式傳送和接收數據。網絡上的節點可分成不同的優先級,以滿足不同的實時要求。CAN總線采用短幀結構,每幀字節數最多為8個,可滿足通常工業領域中控制命令、工作狀態及測試數據的要求。采用不歸零(NRZ)編碼/解碼方式。采用循環冗余碼校驗(CRC)、幀檢測、信號出錯檢測、總線監控、位填充等5種錯誤監測和糾錯措施,從而達到很高的可靠性。使用簡單方便。采用獨特的位仲裁技術,具有很高的實時性。傳輸速率可達1Mbps,傳輸距離可達40m。速率5kbps時,距離可達10km。配置靈活,系統可擴充性好。增刪節點不會對系統造成大的影響。可采用廉價的雙絞線作通訊介質,接口簡單,安裝方便。2/3/202342山東大學控制學院張東亮CAN信息包格式

一個有效的CAN數據幀由幀起始、仲裁場、控制場、數據場、校驗場、應答場和幀結束等7種位場構成。Field:場/域/字段標準格式數據幀包括1)幀起始SOF(StartofFrame)。包含一個顯性位,用于硬同步。2)仲裁場(ArbitrationFiled)。包含11個報文標識位ID和一個RTR(RemoteTransmissionRequest遠程發送請求)位。3)控制場(ControlField)。包括2位備用位和4位數據長度位DLC。4)數據場(DataField)。5)循環冗余校驗場(CRCField)。包括15位CRC序列和1位界定符。6)應答場(ACKField)。包含應答間隙和應答界定符個1位,應答間隙為隱性位。7)幀結束EOF(EndofFrame)。包括7個隱性位。2/3/202343山東大學控制學院張東亮C28xDSPCAN控制器

CAN模塊是完全的CAN控制器。全面兼容CAN2.0B協議。CAN模塊是一個16位的外設,對它的訪問分成控制/狀態寄存器的訪問和郵箱的RAM訪問。

有6個郵箱(MBOX0~5),其長度為0~8個字節。它們是48×16的RAM區,CPU或CAN可按16位讀或寫。每個郵箱為8×16位的RAM,郵箱0、1只用作接收,郵箱4、5只用作發送,而郵箱2、3可用作接收或發送。

對郵箱0、1和2、3有局域接收屏蔽寄存器。可編程的位定時器。中斷配置可編程。可編程的CAN總線喚醒功能。自動恢復遠程請求。當發送時出錯或仲裁時丟失數據,CAN控制器有自動重發送功能。總線錯誤診斷功能。具有自測試模式和網絡模式。2/3/202344山東大學控制學院張東亮CAN驅動器接口電路2/3/202345山東大學控制學院張東亮7.7多通道緩沖串行口McBSP多通道緩沖串行口(MultichannelBufferedSerialPort,McBSP)是連接D

溫馨提示

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

評論

0/150

提交評論