微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > zStack-cc2530-2.3.0-1.4.0串口

zStack-cc2530-2.3.0-1.4.0串口

时间:12-22 整理:3721RD 点击:

我采用的是cc2530,协议栈我使用的是zStack-cc2530-2.3.0-1.4.0,运行工程师sensordemo,编译软件是iar7.51a,我将现有的传感节点进行了更改,加上了串口功能,并在回调函数uartRxCB(uint8 port, uint8 event ),设置osal_set_event( sapi_TaskID, MY_REPORT_EVT )事件,串口使用的中断读取数据。串口每1分钟发送一个字节。遇到的问题是:只运行传感节点在uartRxCB(uint8 port, uint8 event )中设置断点单步调试可以进入读取导数据,打开采集节点(传感节点加入网络)再向节点发串口数据不能触发发送数据,断点无法进入,节点无法向采集节点报告数据。谢谢!

传感器节点在没有加入采集器前,一直处于接收状态,但是一旦加入网络就会工作在低功耗状态下。低功耗模式时,串口是无法接收数据的,传感器节点用串口采集数据,不是一个很好的选择,它工作模式是周期性唤醒,你需要在功耗和实时性上权衡,协调器和路由器使用串口不会存在这样的问题,可以考虑。

你好!首先谢谢你的回答,刚刚做过测试在采集节点这边回调串口函数uartRxCB(uint8 port, uint8 event )读取数据调用命令,测试成功。传感节点节点周期醒来用的睡眠定时器。由于项目的需要传感节点cc2530还要个另外的芯片进行串口数据通信,出于低功耗考虑将f8wConfig配置文件中更改为-DRFD_RCVC_ALWAYS_ON=FALSE、在sensordemo工程预编译中定义了POWER_SAVING,调试节点设置断点可以进入osal_pwrmgr_powerconserve()函数,现在我把模式全部更改为不使用电池功能和电源节能模式,测试节点收串口数据依然问题没有解决,难道真的要把睡眠定时器全部关掉,才可以不让他睡眠?

你好!首先谢谢你的回答,刚刚做过测试在采集节点这边回调串口函数uartRxCB(uint8 port, uint8 event )读取数据调用命令,测试成功。传感节点节点周期醒来用的睡眠定时器。由于项目的需要传感节点cc2530还要个另外的芯片进行串口数据通信,出于低功耗考虑将f8wConfig配置文件中更改为-DRFD_RCVC_ALWAYS_ON=FALSE、在sensordemo工程预编译中定义了POWER_SAVING,调试节点设置断点可以进入osal_pwrmgr_powerconserve()函数,现在我把模式全部更改为不使用电池功能和电源节能模式,测试节点收串口数据依然问题没有解决,难道真的要把睡眠定时器全部关掉,才可以不让他睡眠?

1)需不需要低功耗?Uart应用参考\Projects\zstack\Utilities\SerialApp\CC2530DB工程,里面有串口的应用,基于这个应用开发更适合你的应用

2)你可以定时唤醒,采用查询方式来做串口,即你的传感节点先发串口命令给另一个芯片,一问一答的方式

低功耗随着项目最终的实际测试还是需要,现在我且不考虑低功耗的问题。现在假设传感节点一直处于工作模式。就这个工程\Projects\zstack\Utilities\SerialApp\CC2530DB而言,我添加传感节点串口功能的时候就是参考这个工程写的,系统定时在轮询Hal_ProcessPoll()检测硬件动作(串口我选用默认的DMA模式),检测有数据就会直接处理回调函数。这样跟serialapp思路一致的。您建议的第二种方法我试过的采用应答,出现的问题就是进入事件处理串口数据事件跟我之前没有采用这种应答相似,没有解决问题。然而现在我想节点是处于定时休眠,直接把休眠屏蔽掉。这样就应该不会出现串口数据处理不及时的问题吧?遇到的问题就是您说的定时休眠在协议栈哪块实现的,单步调试设置断点没有找到。还请专家指点哈,项目的前期开发确实对zstack还不是很熟,谢谢支持!

osal_pwrmgr_powerconserve()实现定时休眠,你先使用SerialApp测试一下串口,不要移植。直接用这个历程,先了解运作机制,他可以选择Coordinator,Router,EndDevice三种设备类型,如果不考虑休眠,传感节点先使用Router类型

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top