dsp实验-UART串口通信实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档