dsp实验-UART串口通信实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八、UART串口通信实验
一、实验目的
1. 了解RS232通信接口的基本原理;
2. 熟悉通信接口芯片(TL16C550C)在DSP I/O空间寄存器的地址映射
及工作原理;
3.了解异步通信中串口模式选择、设置数据传输格式、设置波特率、建立连接、传输数据和断开连接等功能。
二、实验设备
1. 集成开发环境CCS
2. 实验开发板TMS320VC5402DSK、RS232接口电缆线及附件
3.程序“串口调试程序v2.2.exe”
三、实验内容及步骤
实验操作流程参照前面实验。
1 在汇编环境调试Uart:(实现字符或文件的发送和回发功能)
a. 实验代码main.s54、uartasm.cmd和uart_init.s54、dsp_init.s54
以及uartasm.h54,c5402_dsk.gel(说明同前)。
b. 串口调试程序“串口调试程序v2.2.exe” , 汇编调试中Build
option设置情况与CODEC实验中的汇编调试设置及出错情况相同。
c. 程序文件介绍:
1)“uart.h54”定义了一些寄存器的地址以及函数类型。
2)“dsp_init.s54”与dsp工作有关的寄存器ST1、PMST、IMR、IFR和SWWSR,并且清除INTM位以及设定时钟模式。
3)“uart_init.s54”先检测UART模块是否工作正常,然后设定UART模块的寄存器,如CNTL1、CNTL2、LCR、MSB&LSB(设定波特率)、FCR、IER 等。
4)“main.s54”主程序查看标志位,检测是否UART存在有效接收数据。若有,则执行一定的处理,包括亮LED以及将接收的数据从UART回发。
d. 执行程序时,只要发送数据时,可在串口调试程序的接收窗口立即看到回发的数据。
e. 程序中UART工作参数设置如下:
1)波特率9600(或更低)、无数据校验、字符长度8比特、停止位1、
2 均可;
2) 接收区自动清空不选、十六进制显示可选可不选;发送区不能选十六进制发送,可发送字符和文件两种方式;
3) IER允许数据就绪中断和线路状态中断;
4) FIFO不使能,所以,在用串口程序调试时,只能单个字符发送,如“x”。若采用16进制发送,应2位发送,如“a4”。
f. 用汇编语句编写UART应用程序基本步骤:
1)在UART初始化程序中设置UART寄存器,特别是IER、LCR、FCR 和除数寄存器LSB&MSB;并且检测UART工作是否正常。
2)设置寄存器CNTL2,选择UART作为信号源,这也放在UART初始程序中。
3)在DSP初始程序中设定DSP工作方式,这主要通过设置寄存器ST1、ST0、INTM、IFR、SWWSR、PMST、IMR、CLKMD等。
4)编写主程序和中断程序,通常在中断程序中把数据从UART中读到CPU,然后在主程序中对数据进行处理。
2 用C函数库调试Uart: (通过UART串行口实现对DSK板的控制)
a. 实验代码uartc.c、5402.cmd和c5402_dsk.gel,另外还有库函数drv5402.lib、dsk5402.lib、rts.lib以及头文件board.h、mcbsp54.h、regs54xx.h、regs.h、type.h、uart.h。
b. 串口调试程序“串口调试程序v2.2.exe”,混合编程下Build option 中Autoinit Model用Load-time Initialization或Run-time Initialization 及No Initializationc均为0 Errors, 0 Warnings。但用No Initializationc 与C的编译环境不符,将做不出实验结果。
c. 程序中UART工作参数与汇编调试设置相同。运行程序后,串口程序窗口会出现提示“Select a leed to light? 0/1/2,Or,press 5 to end the program ”,这是通过函数“uart_fputs()”输出的。在键入指定的数字时,相应的LED将亮大约一秒钟。
d. 本程序中用到了如下驱动函数,分别为:
1)brd_init(int):dsk板初始化,输入参数是工作主频;
2)uart_init(void):uart模块初始化,不带参数,不过在调用前需设定好一些全局变量,如波特率、字长、停止位、校验方式、fifo控制方式、数字环使能等;
3)uart_fputs(string):向uart输出字符串;
4)uart_fgetc():从uart中读取一个字符;
5)brd_led_enable(BRD_LED):打开指定的led;
6)brd_led_disable(BRD_LED):关闭指定的led。
e. 程序中还自定义了一些函数:
1)void delay(int):实现延时功能;
2)int initpro(struct uartset):初始化uart模块,其中结构体参量定义了uart的一些工作参数;
3)void lightled(void):按照用户的选择亮相应的led灯。
f. 此外,TI公司还提供了许多函数方便对uart的使用,这些函数的使用说明见头文件“uart.h”。
g. 看懂源程序,修改实现发送字符“3”后同时点亮3个LED灯,或实现字符或文件的发送及回发功能。
四:实验结果和思考题:
1、RS232通信接口的基本原理:EIA-RS-232C 对电器特性、逻辑电平和各种信号线功能都作了规定。
在TxD和RxD上:
逻辑1(MARK)=-3V~-15V
逻辑0(SPACE)=+3~+15V
在RTS、CTS、DSR、DTR和DCD等控制线上:
信号有效(接通,ON状态,正电压)=+3V~+15V
信号无效(断开,OFF状态,负电压)=-3V~-15V
2、程序中UART工作参数设置如下:
1)波特率9600(或更低)、无数据校验、字符长度8比特、停止位1、2 均可;
2) 接收区自动清空不选、十六进制显示可选可不选;发送区不能选十六进制发送,可发送字符和文件两种方式;
3) IER允许数据就绪中断和线路状态中断;
如图所示:
struct uartset uartset1;
uartset1.baudset= UART_BAUD_9600;
uartset1.wordLengthset= UART_WORD8;
uartset1.stopBitset= UART_STOP1;
uartset1.parityset= UART_DISABLE_PARITY;