为什么我在使用z-stack协议栈的时候,连续两次调用HalUARTWrite()向电脑发送数据。为什么第二次发送的数据总是收不到,起先认为是中间没有延时,中间延时了10ms还是不行,为什么啊。
首先我想说问题描述不清楚,输入条件不太全
是使用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
链接中比较重要的可能原因是:
- 开启了POWER_SAVING,但是只要一次一包包地发,是没问题的;
- 但连着发2包就有问题了,连着3,4,5包好像又没问题。追踪过dmaCfg这个结构体,需要发的数据包也都放到缓存里了
您按照我前面的说法先验证一下 "hello eeworld"的两种发送模式,再来确认一下,谢谢您
我用的是网峰教程上的步骤来的,首先是用 MT_UartInit();初始化串口,然后用MT_UartRegisterTaskID(task_id);注册串口,再使用连续发送HalUARTWrite(0,"Hello World\n",12); HalUARTWrite(0,"Hello zigbee\n",13);后面的内容hello zigbee 就无法显示了,再就是我如果把这两句话放在一起用一个发送函数发送的话,是没有问题的。内容都可以显示。
引用: 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这个结构体,需要发的数据包也都放到缓存里了
我提到的连接都看了吗,无所谓你什么教程,要用心搞。。。
用的是哪款串口调试助手?有没试过把接收到的字符串转成hex格式显示看看?是否有在预编译选项中将那几个有关MT的选项x掉?