[求助] zigbee串口

lzhitwh   2014-12-21 16:53 楼主
为什么我在使用z-stack协议栈的时候,连续两次调用HalUARTWrite()向电脑发送数据。为什么第二次发送的数据总是收不到,起先认为是中间没有延时,中间延时了10ms还是不行,为什么啊。

回复评论 (6)

首先我想说问题描述不清楚,输入条件不太全
是使用z-stack吗,默认的配置吗,UART工作在pollDMA模式还是中断模式
其次是否有低功耗处理等等

你的接收ok吗,是否有问题。原则上来说,配置好UART之后,要发送多少数据都是没啥问题的,前提是没啥冲突
HalUARTWrite这个函数也只不过是对底层函数或者说寄存器的一些封装而已,都是那么个发送方式

我想问你这个函数HalUARTWrite(xx,xx,xx)


比如发送字符串"hello eeworld"
通过调用 两次分别发送 "hello" 和"eeworld" 或者一次发送"hello eeworld"有差别吗,都发送不完整还是怎样,这样便于定位问题


还是你仅仅发送了一个字符。。。


一些参考链接给你
http://www.deyisupport.com/quest ... /f/104/t/59665.aspx

http://www.deyisupport.com/quest ... /140491.aspx#140491
电工
点赞  2014-12-22 11:57
链接中比较重要的可能原因是:
  1. 开启了POWER_SAVING,但是只要一次一包包地发,是没问题的;
  2. 但连着发2包就有问题了,连着3,4,5包好像又没问题。追踪过dmaCfg这个结构体,需要发的数据包也都放到缓存里了

您按照我前面的说法先验证一下 "hello eeworld"的两种发送模式,再来确认一下,谢谢您






电工
点赞  2014-12-22 11:59
我用的是网峰教程上的步骤来的,首先是用 MT_UartInit();初始化串口,然后用MT_UartRegisterTaskID(task_id);注册串口,再使用连续发送HalUARTWrite(0,"Hello World\n",12); HalUARTWrite(0,"Hello zigbee\n",13);后面的内容hello zigbee 就无法显示了,再就是我如果把这两句话放在一起用一个发送函数发送的话,是没有问题的。内容都可以显示。
点赞  2014-12-22 21:06
引用: lzhitwh 发表于 2014-12-22 21:06
我用的是网峰教程上的步骤来的,首先是用 MT_UartInit();初始化串口,然后用MT_UartRegisterTaskID(task_id);注册串口,再使用连续发送HalUARTWrite(0,"Hello World\n",12); HalUARTWrite(0,"Hello zigbee\n",13);后面的内容hello zigbee 就无法显示了,再就是我如果把这两句话放在一起用一个发送函数发送的话,是没有问题的。内容都可以显示。
没有好好看我的回答啊,

开启了POWER_SAVING,但是只要一次一包包地发,是没问题的;
但连着发2包就有问题了,连着3,4,5包好像又没问题。追踪过dmaCfg这个结构体,需要发的数据包也都放到缓存里了

我提到的连接都看了吗,无所谓你什么教程,要用心搞。。。

电工
点赞  2014-12-26 08:51
用的是哪款串口调试助手?有没试过把接收到的字符串转成hex格式显示看看?是否有在预编译选项中将那几个有关MT的选项x掉?
点赞  2014-12-30 11:25
我打开串口助手,直接找不到串口
点赞  2015-1-1 11:49
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复