版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 手术后患者护理
- 山东中医药大学《食源性疾病流行病学》2023-2024学年第一学期期末试卷
- 管子合同范例
- 仓储冷链管理技巧与挑战
- 美发店服务合同范例
- 假期安全教育:从家庭开始让孩子安全快乐成长
- 山东杏林科技职业学院《模拟集成电路设计》2023-2024学年第一学期期末试卷
- 基础范例安装合同范例
- 工程及货物合同范例
- 家电代发服务合同范例
- 2024秋八年级英语上册 Unit 10 If you go to the partyyoull have a great time Section B(3a-Self Check)教案 (新版)人教新目标版
- 2024年山东省济南市中区六年级数学第一学期期末统考试题含解析
- 人行道开挖施工方案
- 小学奥数-几何模型分类总结(鸟头、燕尾、风筝、一般模型等)
- 2024-2030年中国黄酒行业供需分析及发展前景研究报告
- 铁路交通安全主题班会课件
- 做账实操-冷库企业的账务处理实例
- 气候可行性论证技术规范第4部分:城市轨道交通工程
- 体育听课记录文本
- 2024年专技人员公需科目考试答
- 书店合作加盟合同协议书
评论
0/150
提交评论