cc2530有哪两个串行通信接口串口回调中函数为什么没法执行

60个Android开发精典案例好东西 - 给大家汾享60个Android开发的精典案例,包含任务监听、设备适配游戏框架搭建,特效实现多点触控,网络协议游戏关卡设置等内容。特别是做游戲开发的朋友值得研究喜欢就拿走吧!

建议读者阅读原文确保获得完整的信息

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

中断相关的寄存器如下:

//起始位低电平,停止位高电平 * 功 能: 串口打印函数 * 入口參数: 需要打印的字符串 * 出口参数: 打印长度

60个Android开发精典案例好东西 - 给大家汾享60个Android开发的精典案例,包含任务监听、设备适配游戏框架搭建,特效实现多点触控,网络协议游戏关卡设置等内容。特别是做游戲开发的朋友值得研究喜欢就拿走吧!

我要回帖

更多关于 cc2530有哪两个串行通信接口 的文章

 

随机推荐