您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 六通用异步串行口(UART)
DSP实验报告实验名称:通用异步串行口(UART)系部:物理与机电工程学院专业班级:11级电子信息工程1班学号:2011041513学生姓名:洪思铖指导教师:罗锦彬完成时间:2014-5-9报告成绩:评阅意见:评阅教师日期通用异步串行口(UART)一、实验目的1.掌握异步串行通信协议;2.掌握2812异步收发器模块的应用。二、实验设备1.一台装有CCS软件的计算机;2.DSP试验箱的TMS320F2812主控板;3.DSP硬件仿真器。三、实验原理1.异步串行通信协议在传输数据前,数据线处于高电平状态,这称为表示态。传输开始后,数据线由高电平转为低电平状态,这称为起始位;起始位后面接着5~8个信息位;信息为后面是校验位;校验位后是停止位“1”。传输完毕后,可以立即开始下一个字符的传输;否则,数据线再次进入标识态。上面提到的信息位的位数(5~8位)、停止位的位数(1位、1..5位或2位)、校验的方式(奇偶验、偶校验或不校验)等参数都可以根据不同需要进行设置,但对于同一个传输系统中的首发两端来说,这些参数必须保持一致。异步串行通信方式中另一个重要的参数是波特率。在一般的“0”“1”系统中,波特率就是每秒钟传输的位数。国际上规定了一个标准波特率系列,他们是最常用的波特率。标准波特率系列为110、300、600、1200、1800、2400、4800、9600和19200。发送端和接收端必须设置统一的波特率,否则无法正确接收数据。2.电平转换RS-232-C标准中规定-5V~-15V位逻辑“1”,+5V~+15V位逻辑“0”,因此要用专门的芯片完成TTL电平与RS-232电平的转换,如MAX3232。3.串行口调试助手该计算机端程序可以监测计算机串口接收和发送数据的情况。本实验中需要用该程序帮助观察实验结果。四、实验步骤1.用串口线连接实验箱的UART模块与计算机串行口;2.在CCS环境中打开本实验的工程Example_sci.pjt,编译,生成输出文件,通过仿真器把执行代码下载到DSP芯片;3.在计算机上运行串口调试助手程序,设置串口为Com1,波特率为9600,校验为None,停止位为1位,十六进制显示,以待观察从DSP往PC串口发送的数据;4.选择“View”-“memory”,起始地址设为“0x1000”,“Page”项设置为“I/O”,以待观察寄存器的值;5.在串口调试助手程序的发送窗口键入任意字符(如“5A”)以待发送至DSP,并且选择手动发送模式(即不选中自动发送项)和十六进制发送;6.运行程序;观察结果。7.程序见附录:五、实验结果调试助手窗口显示如下:六、实验小结本实验为通用异步串行接口(UART)实验,运行程序后能通过在串口调试助手程序中,在接收窗口中可以观察正确接收到0X00~0XFF的数据。在本实验中使我掌握了异步串行通信协议及其使用方法,掌握了2812异步收发器模块的应用方法,并能通过串口调试助手对主板的数据收发等功能。并使我进一步掌握用C语言编写DSP程序的方法,及编译、除错能力。总而言之,实验成功,收获颇丰。附页:实验原程序代码#includeinclude/DSP281x_Device.h#includeinclude/DSP281x_Examples.hvoidscia_loopback_init(void);voidscia_fifo_init(void);voidscia_xmit(inta);voiderror(int);interruptvoidscia_rx_isr(void);interruptvoidscia_tx_isr(void);Uint16LoopCount;Uint16ErrorCount;voidmain(void){Uint16SendChar;Uint16ReceivedChar;InitSysCtrl();EALLOW;GpioMuxRegs.GPFMUX.all=0x0030;//SelectGPIOstobeScipinsDINT;IER=0x0000;IFR=0x0000;InitPieVectTable();EnableInterrupts();LoopCount=0;ErrorCount=0;scia_fifo_init();//InitializetheSCIFIFOscia_loopback_init();//InitalizeSCIfordigitalloopbackSendChar=0;for(;;){scia_xmit(SendChar);while(SciaRegs.SCIFFRX.bit.RXFIFST!=1){}//waitforXRDY=1foremptystateReceivedChar=SciaRegs.SCIRXBUF.all;if(ReceivedChar!=SendChar)error(1);SendChar++;SendChar&=0x00FF;LoopCount++;if(LoopCount==256){LoopCount=0;SciaRegs.SCICCR.bit.LOOPBKENA=0;//DisableloopbackSciaRegs.SCICTL1.all=0x0023;//RelinquishSCIfromResetwhile((ReceivedChar=SciaRegs.SCIRXBUF.all)!=0x0d);scia_loopback_init();//InitalizeSCIfordigitalloopback}}}voiderror(intErrorFlag){ErrorCount++;}voidscia_loopback_init(){SciaRegs.SCICCR.all=0x0007;SciaRegs.SCICTL1.all=0x0003;SciaRegs.SCICTL2.all=0x0003;SciaRegs.SCICTL2.bit.TXINTENA=1;SciaRegs.SCICTL2.bit.RXBKINTENA=1;SciaRegs.SCIHBAUD=0x0001;SciaRegs.SCILBAUD=0x00e7;SciaRegs.SCICCR.bit.LOOPBKENA=1;//EnableloopbackSciaRegs.SCICTL1.all=0x0023;//RelinquishSCIfromReset}//TransmitacharacterfromtheSCI'voidscia_xmit(inta){SciaRegs.SCITXBUF=a;}//InitalizetheSCIFIFOvoidscia_fifo_init(){SciaRegs.SCIFFTX.all=0xE040;SciaRegs.SCIFFRX.all=0x204f;SciaRegs.SCIFFCT.all=0x0;}
本文标题:六通用异步串行口(UART)
链接地址:https://www.777doc.com/doc-2664534 .html