CC2530 ZStack 增加2400波特率笔记

来源:互联网 发布:法国华人 知乎 编辑:程序博客网 时间:2024/06/11 22:04

1.在协议中hal_uart.h中增加

#define HAL_UART_BR_9600   0x00
#define HAL_UART_BR_19200  0x01
#define HAL_UART_BR_38400  0x02
#define HAL_UART_BR_57600  0x03
#define HAL_UART_BR_115200 0x04
#define HAL_UART_BR_2400   0x05

2.初始化选择HAL_UART_BR_2400   

uartConfig.baudRate             = HAL_UART_BR_2400;

3.跟随代码,进入HalUARTOpen (SERIAL_APP_PORT, &uartConfig);

然后再进入HalUARTOpenDMA(config);

增加:

  case HAL_UART_BR_2400:
      UxGCR = 6;
      dmaCfg.txTick = 137;
  break;  

进入HalUARTOpenISR(config);

增加:

case HAL_UART_BR_2400:
 UxGCR = 6;
 break;

4.make;


运行时发现,发送数据没有问题,但是接受数据的时候只能接收一个包头,如:0x98 0x12 0x34 -->0x98 0x21 0x00

核实了下代码发现,我们只是对dmaCfg.txTick做了赋值,但是rxTick却没有任何动静;

再百度一番之后,看到TI的工作人员在某帖子中说要修改rxTick,跟踪了下rx的初始化,终于在_hal_uart_dma.c中的HalUARTPollDMA()函数里有一条:

dmaCfg.rxTick = HAL_UART_DMA_IDLE;

再跟HAL_UART_DMA_IDLE

#define HAL_UART_DMA_IDLE         (1 * HAL_UART_MSECS_TO_TICKS)


最后在百度上找到答案,原来 HAL_UART_DMA_IDLE 就是串口接收的一个超时设置,具体帖子下面链接;


按帖子里面的方式修改:

#define HAL_UART_DMA_IDLE         (6 * HAL_UART_MSECS_TO_TICKS)


ok,收发正常;

先记录到这,有问题再更。



参考链接:

http://shenwang.blog.ustc.edu.cn/%E6%9C%89%E5%85%B3cc2530%E7%9A%84%E6%B3%A2%E7%89%B9%E7%8E%87%E5%A4%AA%E4%BD%8E%EF%BC%8C%E4%B8%B2%E5%8F%A3%E4%B8%8D%E8%83%BD%E5%AE%8C%E6%95%B4%E6%8E%A5%E6%94%B6%E8%87%AA%E5%B7%B1%E7%9A%84%E6%83%85/

http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/98354.aspx




追更:

#define HAL_UART_DMA_IDLE         (4 * HAL_UART_MSECS_TO_TICKS)    --》 接收头4个字节,数据不完全;

#define HAL_UART_DMA_IDLE         (5 * HAL_UART_MSECS_TO_TICKS)    --》 测试可用,但未用长数据测试,先用5试试两天看会不会有问题;


原创粉丝点击