CC2530基础实验四串口通信

CC2530基础实验四串⼝通信
⼀、任务要求
编写程序实现实验板定期向PC机串⼝发送字符串“Hello ! I am CC2530 。\n”。实验板开机后按照设定的时间间隔,不断地向PC及发送字符串,报告⾃⼰的状态,每发送⼀次字符串消息,LED1闪亮⼀次。具体⼯作⽅式如下:
① 通电后LED1熄灭。
② 设置USART 0使⽤位置。
③ 设置UART⼯作⽅式和波特率。
④ LED1点亮。
⑤ 发送字符串“Hello ! I am CC2530。\n”。
⑥ LED1熄灭。
⑦ 延时⼀段时间,延时时间可以设置为3秒。
⑧ 返回步骤④循环执⾏。
串⼝通信介绍
数据通信时,根据CPU与外设之间的连线结构和数据传送⽅式的不同,可以将通信⽅式分为两种:并⾏通信和串⾏通信。
并⾏通信是指数据的各位同时发送或接收,每个数据位使⽤单独的⼀条导线,有多少位数据需要传送就需要有多少条数据线。并⾏通信的特点是各位数据同时传送,传送速度快效率⾼,并⾏数据传送需要较多的数据线,因此传送成本⾼,⼲扰⼤,可靠性较差,⼀般适⽤于短距离数据通信,多⽤于计算机内部的数据传送⽅式。
串⾏通信是指数据⼀位接⼀位顺序发送或接收。串⾏通信的特点是数据按位顺序进⾏,最少只需⼀根数据传输线即可完成,传输成本低传送数据速度慢,⼀般⽤于较长距离的数据传送。
串⾏通信⼜分同步和异步两种⽅式。
(1)串⾏同步通信
同步通信中,所有设备使⽤同⼀个时钟,以数据块为单位传送数据,每个数据块包括同步字符、数据
块和校验字符。同步字符位于数据块的开头,⽤于确认数据字符的开始;接收时,接收设备连续不断地对传输线采样,并把接收到的字符与双⽅约定的同步字符进⾏⽐较,只有⽐较成功后才会把后⾯接收到的字符加以存储
同步通信的优点是数据传输速率⾼,缺点是要求发送时钟和接收时钟保持严格同步。在数据传送开始时先⽤同步字符来指⽰,同时传送时钟信号来实现发送端和接收端同步,即检测到规定的同步字符后,接着就连续按顺序传送数据。这种传送⽅式对硬件结构要求较⾼。
(2)串⾏异步通信
尊木汇国际艺术广场
异步通信中,每个设备都有⾃⼰的时钟信号,通信中双⽅的时钟频率保持⼀致。异步通信以字符为单位进⾏数据传送,每⼀个字符均按照固定的格式传送,⼜被称为帧,即异步串⾏通信⼀次传送⼀个帧。
每⼀帧数据由起始位(低电平)、数据位、奇偶校验位(可选)、停⽌位(⾼电平)组成。帧的格式如图5-1所⽰:
起始位:发送端通过发送起始位⽽开始⼀帧数据的传送。起始位使数据线处于逻辑0,⽤来表⽰⼀帧数据的开始。
数据位:起始位之后就开始传送数据位。在数据位中,低位在前,⾼位在后。数据的位数可以是5、6、7或者8。
奇偶校验位:是可选项,双⽅根据约定⽤来对传送数据的正确性进⾏检查。可选⽤奇校验、偶校验和⽆校验位。
停⽌位:在奇偶检验位之后,停⽌位使数据线处于逻辑1,⽤以标志⼀个数据帧的结束。停⽌位逻辑值1的保持时间可以是1、1.5或2位,通信双⽅根据需要确定。
空闲位:在⼀帧数据的停⽌位之后,线路处于空闲状态,可以是很多位,线路上对应的逻辑值是1,表⽰⼀帧数据结束,下⼀帧数据还没有到来。
2.CC2530的串⼝通信模块
CC2530有两个串⾏通信接⼝USART 0和USART 1,它们能够分别运⾏于异步UART模式或者同步SPI模式。两个USART具有同样的功能,可以设置在单独的I/O引脚,如表5-1所⽰
根据映射表可知,在UART模式中,使⽤双线连接⽅式,UART 0和UART 1对应的外部设置I/O引脚关系分别为:
贵州民族大学教务管理系统位置1:RX0----P0_2    TX0----P0_3    P0_5----RX1 TX1----P0_4
位置2:RX0----P1_4    TX0----P1_5    P1_7----RX1 TX1----P1_6
UART模式的操作具有下列特点:
8位或者9位有效数据
奇校验、偶校验或者⽆奇偶校验
配置起始位和停⽌位电平
配置LSB或者MSB⾸先传送
独⽴收发中断
独⽴收发DMA触发
奇偶校验和数据帧错误状态指⽰
UART模式提供全双⼯传送,接收器中的位同步不影响发送功能。传送⼀个UART字节包含1个起始位
、8个数据位、1个作为可选项的第9位数据或者奇偶校验位再加上1个或2个停⽌位。实际发送的帧包含8位或者9位,但是数据传送只涉及⼀个字节。
3.CC2530串⼝通信的相关寄存器
对于CC2530的每个USART串⼝通信,有5个如下的寄存器(x是USART的编号,为0或者1):
UxCSR:USARTx控制和状态寄存器
战场
UxUCR:USARTx UART控制寄存器
UxGCR:USARTx 通⽤控制寄存器
UxBUF:USART x接收/发送数据缓冲寄存器
UxBAUD:USART x波特率控制寄存器
4.串⼝0初始化
串⼝0 初始化
PERCFG=0X00;    //外设控制寄存器这⾥使⽤串⼝0位置1
P0SEL=0X0C;    //0_2 0_3设置特殊端⼝
U0CSR |=0X80;//0100 0000  0x80 串⼝通信的语⾔这⾥使⽤USART
U0BAUD =216 ;
U0GCR=10  ;  //波特率
U0UCR |=0x80;  //流控制禁⽌
U0CSR |=0x40;  //允许接受数据
UTX0IF = 0;    //接受标志位
URX0IF = 0;    //发送标志位
URX0IE=1;  //使能中断
EA=1;        //中断总开关
串⼝设置
TX  发送数据
RX  接收数据
波特率设置
U0CSR和U0BAUD⽤来设置波特率
例如设置波特率位57600:
U0BAUD = 216;
U0GCR = 10;
具体初始化
UART0初始化配置
1、设置USARTX0 为备⽤位置1,⼀般采⽤上电默认,⽆需配置
PERCFG  &= ~0X01;环氧乙烷
2、设置P0⽤作串⼝,P0_2、P0_3作为⽚上外设I/0
P0SEL |= 0X0C;
3、设置P0⼝外设优先级,采⽤上电默认值(P2DIR),⽆需配置
4、设置UART0波特率
U0BAUD = 59;
U0GCR = 10;
5、USART 模式选择,UART 模式,允许接收
U0CSR |= 0XC0;
6、进⾏USART 清除,并设置数据格式为默认值
U0UCR |= 0X80;
7、清零UART0  RX 和 UART0  TX 中断标志
URX0IF = 0;
UTX0IF = 0;
8、使能UART0  RX 中断
URX0IE = 1;
9、使能全局中断
EA = 1;
如果接收到了串⼝发来的数据URX0IF置1;
如果发送成功UTX0IF置1;
串⼝收发配置
1、串⼝初始化配置
2、发送函数
void SendString(char *p)  //发送字符串
{
while(1)
{
if(*p == '\0')
break;
U0DBUF = *p++;
while(!UTX0IF);
UTX0IF = 0;
}
数据波
}
3、串⼝接收中断服务函数
#pragma vector = URX0_VECTOR
__interrupt void URX0_f()
{
URX0IF = 0;
buff[i] = U0DBUF;
抑制的生活
if(buff[i] == '#')
{
TXstring(buff);
i = 0;
}
else
i++;
}
4、main函数及时钟源的配置
void main()
{
CLKCONCMD &= ~0X47;
initUART0();
while(1);
}
U0CSR
USART模式选择
开启/关闭接收数据功能,在发送数据的时候需要关闭接收数据功能  U0CSR |= 0X40; / U0CSR &= ~0X40;
U0UCR
⼀般采⽤上电默认值
U0UCR |= 0X80;

本文发布于:2024-09-22 15:36:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/46394.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   传送   发送   接收   字符   时钟
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议