建议读者阅读原文确保获得完整的信息
CC2541有两个串行通信接口,分别是USART0和USART1它们能够分别运行于异步UART模式或者同步SPI模式。两个USART具体同样的功能可以设置在单独的I/O引脚。
UART模式提供异步串行接口在UART模式中,有2种接口选择方式:2线接口和4线接口
- 2线接口,使用RXD、TXD
I/O外设引脚映射如下图所示:
根据上面的外设I/O引脚映射可知:
UART模式的操作有以下特点。
- 奇校验、偶校验或者无奇偶校验
- 配置起始位和停止位电平
- 配置LSB(最低有效位)或MSB(最高有效位)首先传输
- 渏偶校验和帧检验出错状态
UART模式提供全双工传送也就是说可以同时收发数据,传送一个UART字节包括1个起始位8个数据位,1个作为可选的第9位数据或者奇偶校验位再加上1个或者2个停止位。
UART操作由USART控制和状态寄存器UxCSR以及UART控制寄存器UxUCR来控制x是USART的编号,数值为0或者1
1)UART的发送过程
当USART收发数据缓冲器UxDBUF写入数据时,该字节自动发送到输出引脚TXDUxDBUF寄存器时双缓冲的。当字节传送开始时UxCSR.ACTIVE位变为高电平,而当字节传送结束时变为低电平当传送结束时,UxCSR.TX_BYTE位设置为1当USART收发数据缓冲寄存器就绪,准备接收新的发送数据时就产生了一个中断请求,该中断在傳送开始后立刻发生
2)UART的接收过程
当1写入UxCSR.RE位时,UART开始接收数据UART在输入引脚RXD上寻找有效起始位,并且设置UxCSR.ACTIVE位为1当检测出有效起始位时,收到的字节就传入到接收寄存器UxCSR.RX_BYTE位设置为1,该操作完成时产生接收中断,同时UxCSR.ACTIVE变为0通过寄存器UxDBUF提取收到的数据字节。当UxDBUF读出时UxCSR.RX_BYTE位由硬件清零。
当运行UART模式时内部的波特率发生器设置UART波特率。当运行在SPI模式时内部的波特率发生器设置SPI主时钟频率。波特率由寄存器UxBAUD.BAUD_M[7:0] 和UxGCR.BAUD_E[4:0]定义该波特率用于UART传送,也用于SPI传送的串行时钟速率波特率定义公式:
式中:f是系统的时钟频率,等于16MHz或者32MHz
标准波特率所需的寄存器值如下表所示该表适用于32MHz系统时钟。波特率误差用百分数表示。
cc2530有哪两个串行通信接口配置串口的一般步骤:
1、配置串口的备用位置是备用位置1,还是备用位置2配置寄存器PERCFG外设控制寄存器
2、配置端口的外设优先级。此处配置P0外设优先作为UART0配置寄存器P2DIR
3、配置IO,使用外部设备功能此处配置P0_2和P0_3用作串口UART0。配置寄存器P0SEL
4、配置相应串口的控制和状态寄存器配置寄存器U0CSR、U0UCR
5、配置串口工作的波特率。配置寄存器U0GCR、U0BAUD
7、使能串口接收中断(一般发送不用中断)置1 IEN0.URX0IE
中断相关的寄存器如下:
//起始位低电平,停止位高电平 * 功 能: 串口打印函数 * 入口參数: 需要打印的字符串 * 出口参数: 打印长度