CC2530串口通信
CC2530配置串口的一般步骤:
1、通过外设控制寄存器PERCFG配置串口的备用位置,是备用位置1还是备用位置2。
2、配置I/O,使用外部设备功能,eg:配置P0_2,P0_3作为串口UART0。
3、配置端口的外设优先级。eg:配置P0外设优先作为UART0。
4、配置相应串口的控制和状态寄存器。
5、配置串口的波特率。
6、将对应串口接收/发送中断标志位清0,接收/发送一个字节都将产生一个中断,在接收时需要开总中断和使能接收中断、以及运行接收。
USART0和USART1是CC2530中的串行通信接口,可分别运行异步UART模式和同步SPI模式,采用了引脚复用功能,可通过外设引脚控制器PERCFG配置外设与引脚的关系。CC2530有两组串口UART0和UART1,外设与引脚对应的功能如下:
UART0: 位置1:RX:P0_2,TX:P0_3 位置2:RX:P1_4,TX:P1_5
UART1: 位置1:RX:P0_5,TX:P0_4 位置2:RX:P1_7,TX:P1_6
UART模式下特点:
1、一次传送8位或者9位有效数据
2、奇校验、偶校验或者无校验位
3、配置起始位和停止位起点
4、配置LSB和MSB首先传送
5、独立收发中断
6、独立收发DMA触发
UART提供全双工通信,接收器中的位同步不影响发送功能。传送一个UART字节包含一个起始位、8个数据位、1个可作为选项的第9位数据或者根据奇偶校验位再加上1个或者2个停止位。实际发送的帧包含8位或者9位,但是数据传送只设计一个字节。
I/O引脚
P0:端口0
P1:端口1
P2:端口2
PERCFG:A外设控制寄存器
P0SEL:端口0功能选择寄存器
P1SEL:端口1功能选择寄存器
P2SEL:端口2功能选择寄存器
P0DIR:端口0方向寄存器
P1DIR:端口1方向寄存器
P2DIR:端口2方向寄存器
每个I/O单元对应2组可以选择的I/O引脚,而外设I/O位置的选择由寄存器PERCFG来控制,其中位0和位1决定UART0和UART1的位置,0表示备用位置1,1表示备用位置2。
PERCFG = 0x00; //将串口0设置为备用位置1
P0SEL |= 0x0C;//设置P0_2,P0_3作为串口
&= ~ 将变量的某一位置0,其余位不变
|= 将变量的某一位置1,其余位不变
由映射表可以只,I/O映射可能存在冲突,可以设置优先级来解决冲突,P2SEL和P2DIR是设置优先级相关的寄存器。其中P2SEL设置端口1外设优先级控制,P2DIR设置端口0外设优先级控制。
P2SEL |= 0x40; //端口1 UART1优先
P2DIR & = ~0xc0; 端口0 UART0 优先
UART串口通信的相关寄存器
对于每个USART,有五个如下寄存器(X是USART的编号,为0或1)
UxCSR:USARTx控制和状态寄存器
UxUCR: USARTx UART控制寄存器
UxGCR: USARTx通用控制寄存器
UxBUF: USARTx接受/发送数据缓冲寄存器
UxBAUD: USARTx波特率控制寄存器
USART0控制与状态控制寄存器
U0CSR |= 0x80; 将USART模式选择为UART模式
U0CSR |= 0x40; 接收器使能,允许接收数据
USART0通用控制寄存器和USART0波特率控制寄存器两者设置串口的波特率,当运行在UART模式时,内部的波特率发生器设置UART波特率。当运行在SPI模式时,内部波特率发生器设置SPI主时钟频率。
由寄存器UxBAUD.BAUD_M[7:0]和UxBAUD.BAUD_E[4:0]定义波特率。该波特率用于UART传送,也用于SPI传送的串行时钟速率。波特率由下式给出:
式中F是系统时钟频率,等于16 MHz RCOSC或者32 MHz XOSC。
//设置串口波特率为115200
U0GCR |= 11;
U0BAUD |= 216;
时钟控制寄存器
CLKCONCMD &=~0x40; 设置系统时钟源32MHz晶振
CLKCONCMD &=~0x47; 设置系统时钟32MHz
/*将UART0中断标志位清0*/
UTX0IF = 0; //清除UART0发送中断标志位
URX0IF = 0;//清除UART0接收中断标志位
IEN0 |= 0x80;//开总中断,可以通过设置对应的使能位将每个中断源分别使能和禁止
IEN0 |= 0x04;//串口0 RX中断使能
CC2530串口通信相关推荐
- CC2530基础实验四 串口通信
一.任务要求 编写程序实现实验板定期向PC机串口发送字符串"Hello ! I am CC2530 .\n".实验板开机后按照设定的时间间隔,不断地向PC及发送字符串,报告自己的状 ...
- linux 嵌入式串口通信设计目的,基于linux的嵌入式串口通信.doc
PAGE 天津电子信息职业技术学院 <嵌入式软件编程>课程报告 课程名称:基于linux的嵌入式串口通信 课程代码: 115229 姓 名: 甘琦 学 号: 48 专 业: 物联网应用技术 ...
- linux 嵌入式串口通信,基于linux的嵌入式串口通信综述.doc
PAGE 天津电子信息职业技术学院 <嵌入式软件编程>课程报告 课程名称:基于linux的嵌入式串口通信课程代码: 115229 姓 名: 甘琦 学 号: 48 专 业: 物联网应用技术 ...
- zigbee基础应用(五)uart串口通信
zigbee基础应用(五)uart串口通信 1.硬件篇 P0.2为RX P0.3为TX 2.芯片篇 用到的芯片的概况 3.计算篇 波特率的计算公式,通过对UxBAUD.BAUD_M和UxGCR.BAU ...
- python第三方库之学习pyserial库--串口通信
pyserial串口通信库 1.安装pyserial库 2.填写串口参数的注意事项 3.简单封装一下 4.碰到的bug 1.安装pyserial库 pip install pyserial versi ...
- VC串口通信编程-2
VC串口通信编程 (2009-07-08 13:48:40) 转载▼ Win32串口编程(转:韩耀旭) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信 ...
- Linux ROS与嵌入式的串口通信
1.根据ros wiki的官方教程 学习即可,并且有许多例子可供学习 http://wiki.ros.org/rosserial_arduino/Tutorials 2.用ASIO读写设备串行口 AS ...
- 投影串口测试程序_【原创】串口通信测试程序
源代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...
- labVIEW与单片机实现串口通信的设计过程
1.概述 在现代测控系统中,我们经常会采用上位机和下位机的开发控制模式.下位机主要是用来采集数据,可以通过嵌入式控制器.单片机控制器.PLC等来实现.上位机主要是图形界面,用来实时显示采集数据,并进行 ...
- chord协议模拟实现_C#.NET和单片机串口通信实现监控单片机数字量输入继电器输出模拟量输入模拟量输出...
一.必备软件和硬件: 1.C#.NET: 2.单片机开发板: 3.通信电缆. 二.通信参数: 1.数据位:8位 2.校验方式:无校验 3.停止位:1位 4.波特率:9600bps 5.通信协议:自定义 ...
最新文章
- [umeditor] 多图片一次上传功能
- 设置固定长度_厂房及仓库常规消防系统设置!
- 知识体系地图模型:你是如何有效地学习?
- 聊聊引用和 ThreadLocal 那些事儿
- GDB调试——常用命令
- WebView三个方法区别(解决乱码问题)
- 相关的类代表的颜色和文本对齐方式
- Git cherry-pick后再merge出现一个“奇怪”的现象
- alipay.php on line 85,Ecshop报错:Strict Standards: Redefining already defined constructor for class...
- 值转换成布尔类型的False;
- MyBatis Demo 编写(1)基础功能搭建
- 卸掉包袱,诺基亚将走得更远
- python能做什么-Python到底能做什么?
- 图像局部特征(十)--BRIEF描述子
- script标签的使用,从零开始
- mysql关键字 distinct去重
- SAP GUI 760 下载
- 地平线开源网站源码Deepsoon v1.2.3
- 关于太阳(卫星)天顶角,太阳高度角,太阳方位角
- 【百元钱买百只鸡问题】一只公鸡5元钱,一只母鸡3元钱,三只小鸡1元钱。要求100元买100只鸡,请给出所有可行的结果?