好文档 - 专业文书写作范文服务资料分享网站

实验三 串口实验

天下 分享 时间: 加入收藏 我要投稿 点赞

实验三 串口实验

一.实验目的

学习使用串口实现与PC机的通讯。

正确配置CC2530的串口来实现串口通信的功能。 二.实验环境

硬件:PC机,EBDCC2530节点板,USB接口仿真器,6Pin串口线,交叉串口线。 软件:Windows98/2000/NT/XP,IAR集成开发环境,串口调试助手。 三. 实验原理

下面我们来介绍串口实验所学习到的主要寄存器。 CLKCONCMD:时钟频率控制寄存器。 D7 D6 D5~D3 D2~D0

32KHZ 时间振系统时钟选择 定时器输出标系统主时钟选荡器选择 记 择

D7位为32KHZ时间振荡器选择,0为32KRC震荡,1为32K晶振。默认设置为1。 D6位为系统时钟选择。0为32M晶振,1为16MRC震荡。当D7位为0时D6必须为1。

D5~D3为定时器输出标记。000为32MHZ,001为16MHZ,010为8MHZ,011为4MHZ,100为2MHZ,101为1MHZ,110为500KHZ,111为250KHZ。默认为001。需要注意的是:当D6为1时,定时器最高可采用频率为16MHZ。 D2~D0:系统主时钟选择:000为32MHZ,001为16MHZ,010为8MHZ,011为4MHZ,100为2MHZ,101为1MHZ,110为500KHZ,111为250KHZ。当D6为1时,系统主时钟可采用的最高频率为16MHZ。 CLKCONSTA:时间频率状态寄存器。 D7 D6 D5~D3 D2~D0

32KHZ 时间振荡当前系统时钟 当前定时器输出当前系统主时钟 器选择 标记

D7位为当前32KHZ时间振荡器频率。0为32KRC震荡,1为32K晶振。 D6位为当前系统时钟选择。0为32M晶振,1为16MRC震荡。 D5~D3为当前定时器输出标记。000为32MHZ,001为16MHZ,010为8MHZ,011为4MHZ,100为2MHZ,101为1MHZ,110为500KHZ,111为250KHZ。 D2~D0为当前系统主时钟。000为32MHZ,001为16MHZ,010为8MHZ,011为4MHZ,100为2MHZ,101为1MHZ,110为500KHZ,111为250KHZ。 U0CSR:USART0控制与状态; D7 D6 D5 D4 D3 D2 D1 D0 模式选接收器SPI主/帧错误奇偶错接受状传送状收发主择 使能 从模式 状态 误状态 态 态 动状态

D7为工作模式选择,0为SPI模式,1为USART模式 D6为UART接收器使能,0为禁用接收器,1为接收器使能。 D5为SPI主/从模式选择,0为SPI主模式,1为SPI从模式。 D4为帧错误检测状态,0为无错误,1为出现出错。 D3为奇偶错误检测,0为无错误出现,1为出现奇偶校验错误。 D2为字节接收状态,0为没有收到字节,1为准备好接收字节。 D1为字节传送状态,0为字节没有被传送,1为写到数据缓冲区的字节已经被发送。 D0为USART接收/传送主动状态,0为USART空闲,1为USART忙碌。 U0GCR:USART0通用控制寄存器; D7 D6 D5 D4~D0 SPI 时钟极SPI 时钟相传送位顺序 波特率指数性 位 值

D7为SPI时钟极性:0为负时钟极性,1为正时钟极性; D6为SPI时钟相位。

D5为传送为顺序:0为最低有效位先传送,1为最高有效位先传送。 D4~D0为波特率设置: 波特率 指数小数部

值 分

2400 6 59 4800 7 59 9600 8 59 14400 8 216 19200 9 59 28800 9 216 38400 10 59 57600 10 216 76800 11 59 115200 11 216 230400 12 216

U0BAUD:波特率控制小数部分。(取值参考上表)。 程序流程图:

图2-5-1 串口程序流程图

四.主要代码 主函数:

void main(void) { int ch;

led_beep_init(); xtal_init();

Uart0Init(0x00, 0x00); //初始化串口:无奇偶校验,停止位为1位 Uart_Send_String(\

while(1) {

ch = Uart_Recv_char();

if (ch == '@' || recvCnt >= 256) { recvBuf[recvCnt] = 0;

Uart_Send_String(recvBuf); Uart_Send_String(\ recvCnt = 0;

LED1 = !LED1; //LEDx反转 LED2 = !LED2; LED3 = !LED3; } else {

recvBuf[recvCnt++] = ch; } }

Uart_Send_char:通过Uart0发送字节

void Uart_Send_char(char ch) {

U0DBUF = ch;

while(UTX0IF == 0); UTX0IF = 0; }

Uart_Recv_char:通过Uart0接收字节

int Uart_Recv_char(void) {

int ch;

while (URX0IF == 0); ch = U0DBUF; URX0IF = 0; return ch; }

五.实验步骤

1、正确连接 USB 仿真器的下载线和 EBDCC2530 节点板。把 6Pin 串口线的一端连接到EBDCC2530 节点板的 UART 接口,另一端连接到交叉串口线的母头端口,交叉串口线的另一端连接到 PC 机的公头端口。

2、打开实验源码 uart.eww(路径为:出厂光盘 DISK-EMBV210-WSN\\05-Example\\2 基本接口实验\\2.5 UART) ,编译工程,依次选择“Project”→“Download and Debug”,下载到 CC2530节点板。

3、把仿真器左侧的 USB 接口拔掉,然后拔掉连接在 EBDCC2530 节点板 DBG 位置的调试接口。我们打开 EBDCC2530 节点板右下方的电源开关。 (在不拔掉仿真器的情况下,我们可以通相关的调试进一步观察程序的运行情况。)

4、 在 PC 机上打开串口调试助手软件,设置正确的串口号(即端口的 COM 号), 波

999573s5x56trx0166az
领取福利

微信扫码领取福利

微信扫码分享