CC2530 zigbee RS485通讯
来源:互联网 发布:背四级单词软件 编辑:程序博客网 时间:2024/06/06 01:11
通讯是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 &=(~HAL_UART_TX_EMPTY);
// P0_1 = 0;
osal_start_timerEx(SampleApp_TaskID,SEND_TIME_RS485_EVENT,SEND_TIME_RS485MAX);
},其实我想在这个函数中直接将RS485使能脚改为接收,但还是会出现最后一个字节发送不完整。因此,增加了延时使能的串口事件,不在此直接延时等待。
3、SanmpleApp.c中,uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )函数里,增加:
if ( events & SEND_TIME_RS485_EVENT )
{
P0_1 = 0;
return (events ^ SEND_TIME_RS485_EVENT);
}
至此,整个发送完成。SEND_TIME_RS485MAX经调试,2毫秒即可,推算,发送完成标志置位,还有一个字节没有传输完,并且传输完后还需要稳定时间,9600发送完后1毫秒多点。
- CC2530 zigbee RS485通讯
- CC2530模块/Zigbee模块
- CC2530 + RFX2401C Zigbee模块
- zigbee cc2530 adc转换
- CC2530 + RFX2401C Zigbee模块
- zigbee cc2530功率修改
- Zigbee技术和CC2530
- RS485通讯协议
- 变频器RS485通讯协议
- ZigBee-CC2530学习心得(1) --------ZigBee开发工具
- CC2530引领Zigbee潮流风暴
- zigbee 1:开始 TI CC2530
- ZigBee CC2530串口通信调试
- CC2530 zigbee 全信道扫描
- Zigbee Stack CC2530 ZNP使用
- CC2530串口通讯2
- RS485主从式多机通讯协议
- RS485通讯协议的应用
- 【规则引擎连载3】 WebSphere ILOG JRules 开发——新建一个规则项目
- oracle日期字段只取日期不要时间
- ubuntu16.04下安装scrapy框架
- 打造靓白裸妆人像(修补工具和色相/饱和度)
- SPARK里的reduce(),fold(),以及aggregate()
- CC2530 zigbee RS485通讯
- android国际化(多语言)
- 100阶乘末尾有多少个零
- mysql 主从数据库配置
- Universal-Image-Loader源码阅读(29)-BaseImageDownloader
- Cmake创建管理Linux应用程序(1)
- imag.js|快速掌握全局方法
- Android 圆角图片的实现
- C语言指针应用--互换两个数&冒泡排序