CC2530 zigbee RS485通讯

在将波特率从115200降低到9600后,CC2530通过Zigbee进行RS485通信时出现发送数据不完整的问题。分析发现,由于发送完成后切换RS485接收的时机不当,导致数据丢失。解决方案在于调整串口发送中断处理和增加延时。在HAL_UART_TX_EMPTY事件回调中启动延时计时器,然后在SampleApp中处理该事件来切换RS485状态。通过调试,设置2毫秒的延时可确保传输完成并保持稳定。
摘要由CSDN通过智能技术生成

 通讯是RS485,之前代码在115200波特率下能正常工作,后来改成9600居然异常。实测数据,是发送不完整,甚至只发送了一个字节的错误数据。

分析原因,是RS485发送接收硬件切换脚的使能,没有等到发送完成就切换了。原来由于速度快等待时间短。

串口收发用的是中断,这里只描述发送。

    发送函数:  P0_1 = 1;
      HalUARTWrite(0,buf,len);

1、 _hal_uart_isr.c 中, 

  if (isrCfg.txHead == isrCfg.txTail)
  {
    IEN2 &= ~UTXxIE;
    isrCfg.txMT = 1;
  },保持不变,原来的115200时,在中断函数里加了延时和RS485脚的切换,但9600时间长了,不合适加在中断里。

2、MT_UART.C中,串口初始化的回调函数里,增加:

  if(event &HAL_UART_TX_EMPTY){
     event &=

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值