概述
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串口通信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复