六、通用异步串行口(UART)

上传人:壹****1 文档编号:484798982 上传时间:2022-09-02 格式:DOC 页数:7 大小:845KB
返回 下载 相关 举报
六、通用异步串行口(UART)_第1页
第1页 / 共7页
六、通用异步串行口(UART)_第2页
第2页 / 共7页
六、通用异步串行口(UART)_第3页
第3页 / 共7页
六、通用异步串行口(UART)_第4页
第4页 / 共7页
六、通用异步串行口(UART)_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《六、通用异步串行口(UART)》由会员分享,可在线阅读,更多相关《六、通用异步串行口(UART)(7页珍藏版)》请在金锄头文库上搜索。

1、DSP实验报告 实验名称: 通用异步串行口(UART) 系 部: 物理与机电工程学院 专业班级: 11级电子信息工程1班 学 号: 2011041513 学生姓名: 洪思铖 指导教师: 罗锦彬 完成时间: 2014-5-9 报告成绩: 评阅意见: 评阅教师 日期 通用异步串行口(UART)一、实验目的 1. 掌握异步串行通信协议;2. 掌握2812异步收发器模块的应用。二、实验设备1. 一台装有CCS软件的计算机; 2. DSP试验箱的TMS320F2812主控板;3. DSP硬件仿真器。三、实验原理1.异步串行通信协议在传输数据前,数据线处于高电平状态,这称为表示态。传输开始后,数据线由高电

2、平转为低电平状态,这称为起始位;起始位后面接着58个信息位;信息为后面是校验位;校验位后是停止位“1”。传输完毕后,可以立即开始下一个字符的传输;否则,数据线再次进入标识态。上面提到的信息位的位数(58位)、停止位的位数(1位、1.5位或2位)、校验的方式(奇偶验、偶校验或不校验)等参数都可以根据不同需要进行设置,但对于同一个传输系统中的首发两端来说,这些参数必须保持一致。异步串行通信方式中另一个重要的参数是波特率。在一般的“0”“1”系统中,波特率就是每秒钟传输的位数。国际上规定了一个标准波特率系列,他们是最常用的波特率。标准波特率系列为110、300、600、1200、1800、2400、

3、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. 在计算机上运行串口调试

4、助手程序,设置串口为Com1,波特率为9600,校验为None,停止位为1 位,十六进制显示,以待观察从DSP 往PC 串口发送的数据;4 . 选择“View”-“memory”,起始地址设为“0x1000”,“Page”项设置为“I/O”,以待观察寄存器的值;5. 在串口调试助手程序的发送窗口键入任意字符(如 “5A”)以待发送至DSP,并且选择手动发送模式(即不选中自动发送项)和十六进制发送;6. 运行程序;观察结果。7.程序见附录:五、实验结果调试助手窗口显示如下:六、实验小结本实验为通用异步串行接口(UART)实验,运行程序后能通过在串口调试助手程序中,在接收窗口中可以观察正确接收到0

5、X000XFF的数据。在本实验中使我掌握了异步串行通信协议及其使用方法,掌握了2812异步收发器模块的应用方法,并能通过串口调试助手对主板的数据收发等功能。并使我进一步掌握用C语言编写 DSP 程序的方法,及编译、除错能力。总而言之,实验成功,收获颇丰。附页:实验原程序代码#include include/DSP281x_Device.h#include include/DSP281x_Examples.hvoid scia_loopback_init(void);void scia_fifo_init(void);void scia_xmit(int a);void error(int);i

6、nterrupt void scia_rx_isr(void);interrupt void scia_tx_isr(void);Uint16 LoopCount;Uint16 ErrorCount; void main(void) Uint16 SendChar; Uint16 ReceivedChar;InitSysCtrl(); EALLOW; GpioMuxRegs.GPFMUX.all=0x0030;/ Select GPIOs to be Sci pins DINT;IER = 0x0000;IFR = 0x0000;InitPieVectTable(); EnableInterr

7、upts(); LoopCount = 0; ErrorCount = 0; scia_fifo_init(); / Initialize the SCI FIFO scia_loopback_init(); / Initalize SCI for digital loop back SendChar = 0;for(;) scia_xmit(SendChar); while(SciaRegs.SCIFFRX.bit.RXFIFST !=1) / wait for XRDY =1 for empty state ReceivedChar = SciaRegs.SCIRXBUF.all; if(

8、ReceivedChar != SendChar) error(1); SendChar+; SendChar &= 0x00FF; LoopCount+; if(LoopCount=256)LoopCount=0;SciaRegs.SCICCR.bit.LOOPBKENA =0; / Disable loop back SciaRegs.SCICTL1.all =0x0023;/ Relinquish SCI from Resetwhile(ReceivedChar = SciaRegs.SCIRXBUF.all)!=0x0d);scia_loopback_init(); / Initali

9、ze SCI for digital loop back void error(int ErrorFlag) ErrorCount+;void scia_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 =0x0

10、0e7;SciaRegs.SCICCR.bit.LOOPBKENA =1; / Enable loop back SciaRegs.SCICTL1.all =0x0023; / Relinquish SCI from Reset / Transmit a character from the SCIvoid scia_xmit(int a) SciaRegs.SCITXBUF=a; / Initalize the SCI FIFOvoid scia_fifo_init() SciaRegs.SCIFFTX.all=0xE040; SciaRegs.SCIFFRX.all=0x204f; SciaRegs.SCIFFCT.all=0x0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号