搜索
bottom↓
回复: 29

被TI 的Zstack折腾晕了

[复制链接]

出0入22汤圆

发表于 2014-8-18 12:44:00 | 显示全部楼层 |阅读模式
项目选定使用zigbee 组网通讯,使用TI的CC2530。

本来对于这么庞大的系统就很畏惧。买了两本相关的书,也买了WEBEE的开发套件。
加上自己这么多年的软硬件功底,应该不存在问题。


这么多年的开发一直是裸奔,凉快,控制外设简单直白,随心所欲。

当然我也知道,组网自己写是不可能的。

照着WEBEE的实战演练修改,
1.改UART,简单,改完了,第一次编译还收到一点乱码,
   我继续改,这次什么都没有了。查时钟,正确;查寄存器,正确;别的好像也查不了。
   
   这个搞不定,我先搞定按键和LED指示灯总可以把。

   于是找到按键的历程,这次我晕了,BV()我知道是什么含义,可是我怎么知道你这个数字是代表什么含义。和寄存器也对不上。

   于是我改LED 总简单了吧。什么 MT层 没这个文件,HA层有,可是没有初始化的函数。

2.我的项目很简单,接收串口数据放入环形缓存,接收到正确的帧,交给帧处理函数,两个和流控制差不多的IO。
   1个LED,当然还用到了 RF发送接收

3.要是 和我硬件相关的部分能够我自己初始化,那该多好啊,
   我只需要一个函数,我相关的中断。让我在里面做文章。



4.同时有偿    有偿 找深圳附近的朋友帮忙配置Zstack,,, 只要调通相关的硬件就可以了。。 具体的数据我自己处理。


蛋蛋:hex2dec 12cb17ca

出0入25汤圆

发表于 2014-8-18 12:49:20 来自手机 | 显示全部楼层
最后还蛋蛋。   汗…。  

出0入0汤圆

发表于 2014-8-18 13:30:29 | 显示全部楼层
不至于吧,大学生项目里也经常见到,而且听说不是那么难调啊!

出0入22汤圆

 楼主| 发表于 2014-8-18 13:51:06 | 显示全部楼层
大学生的项目 是拿大把的时间堆出来的,而且还漏洞百出 。这样的东西是不能用于生产的。

出0入0汤圆

发表于 2014-8-18 13:54:13 | 显示全部楼层
你买的webee的板子?  那个LED代码有点绕,注意ON OFF函数, 还有就是LED4带了LED1。

出0入0汤圆

发表于 2014-8-18 14:51:15 | 显示全部楼层
我对Z-Stack比较熟悉,也许可以帮到你。

出0入22汤圆

 楼主| 发表于 2014-8-18 18:02:00 | 显示全部楼层
  MAC_RADIO_TIMER_WAKE_UP();

我使用内部RC振荡器,, 程序停在了这里。。

出0入0汤圆

发表于 2014-8-18 22:59:42 | 显示全部楼层
几年前买了套9K多原装套件折腾了会

出0入22汤圆

 楼主| 发表于 2014-8-20 09:23:39 | 显示全部楼层
mmyer 发表于 2014-8-18 14:51
我对Z-Stack比较熟悉,也许可以帮到你。

大部分问题都解决了。。目前有个问题 ,让我很头疼,

我使用genericAPP工程模板,

PC通过串口给CC2530发数据,

一个IO中断后 表示CC2530接收到一帧数据,
  if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT)
  {
    //halProcessKeyInterrupt();
   HalLedBlink(HAL_LED_1,1,50,200);
   osal_start_timerEx(GenericApp_TaskID,GENERICAPP_AyzMRF_EVT,2);
       
  }


产生一个事件,然后再该事件中,把收到的东西通过串口打回PC机,

目前的问题是,我通过串口发送了10帧数据,21字节/帧,要等3S以上才会慢慢的从串口输出数据。数据的准确性没有问题。
问题。如果帧数大于11 就会丢帧,当然这个是因为DMA缓存的问题。

1.任务调度时间过长。但是个人感觉再长也不能用S做单位 TICK毕竟是1MS
2.DMA时间过长,可是我看了下。串口是在主循环里的,也就是没有进行任务调度。
整个程序只有7个任务,主机添加的程序也就上面提到的。

出0入0汤圆

发表于 2014-8-20 09:35:40 | 显示全部楼层

出0入0汤圆

发表于 2014-8-21 00:05:18 来自手机 | 显示全部楼层
zstack刚开始看确实有点难度,c语言基础好一点看起来比较容易一点,断断乙、续续搞了两年,现在再看起来,还是很容易理解的,第一个问题,我觉得不是任务调度的问题,你现在用的数据格式自己定义的,还是直接用ti的,这很关键?串口数

出0入0汤圆

发表于 2014-8-21 00:06:28 来自手机 | 显示全部楼层
手机回贴不方便,你所述的bv实际上就是位定义的第几位

出0入0汤圆

发表于 2014-8-21 07:35:23 | 显示全部楼层
lixin91985 发表于 2014-8-18 13:51
大学生的项目 是拿大把的时间堆出来的,而且还漏洞百出 。这样的东西是不能用于生产的。 ...

正解啊,花大把时间搞这个,还不入道

出0入0汤圆

发表于 2014-8-21 08:55:11 | 显示全部楼层
一个理念 发表于 2014-8-21 07:35
正解啊,花大把时间搞这个,还不入道

很多学生主要是心太燥,又狂妄,所以很难学的精,懂点皮毛就在那边买弄了

出0入22汤圆

 楼主| 发表于 2014-8-21 15:01:49 | 显示全部楼层
majialou 发表于 2014-8-21 00:05
zstack刚开始看确实有点难度,c语言基础好一点看起来比较容易一点,断断乙、续续搞了两年,现在再看起来, ...

我的数据格式是自己定义的,
有 什么大的问题吗,,
#define MRF_RxbufSize 21
uint8 MRF_rxbuf[MRF_RxbufSize];

HalUARTWrite(HAL_UART_PORT_0,temp,MRF_RxbufSize);


实验发现,串口轮询的速度还是比较快的,但是事件的轮询速度非常的低,
另外没办法看到DMA串口接收到的内容,不敢评判其是否按时执行,

只要执行HalUARTWrite(HAL_UART_PORT_0,temp,MRF_RxbufSize);很块可以收到数据。

请高手帮忙

出0入22汤圆

 楼主| 发表于 2014-8-21 15:03:32 | 显示全部楼层
majialou 发表于 2014-8-21 00:06
手机回贴不方便,你所述的bv实际上就是位定义的第几位

另外 没有用MT的函数,直接是透传,

为了解决速度的问题,我还特意将DMA的两个缓存,改成了10个缓存。

问题是延时如果用S的计算,问题就比较大了。

出0入0汤圆

发表于 2014-8-21 20:53:49 | 显示全部楼层
直接用网蜂的程序改就行了,我当时就是用的他的程序修改的,coordinator解析串口数据包,解析完成直接发送,router端解析接收数据,产生动作,还是比较简单的,这个网上例程也多,不过就是其router数太少了。

出0入22汤圆

 楼主| 发表于 2014-8-21 22:12:03 | 显示全部楼层
yutianyiren 发表于 2014-8-21 20:53
直接用网蜂的程序改就行了,我当时就是用的他的程序修改的,coordinator解析串口数据包,解析完成直接发送 ...

我是直接提取安装包,然后找WEBEE的修改。

但是修改的东西还是比较多。。添加了几个事件,修改串口DMA缓存个数,外部osc取消。

我一直很不明白,一个操作系统,理论上不应该出现这么长时间的任务阻塞,可是问题到底出现在哪里?

出0入0汤圆

发表于 2014-8-21 23:32:27 | 显示全部楼层
lixin91985 发表于 2014-8-21 22:12
我是直接提取安装包,然后找WEBEE的修改。

但是修改的东西还是比较多。。添加了几个事件,修改串口DMA缓 ...


我觉得OSAL就是一个死循环,和while(1)道理一样的,你是不是哪里阻塞掉了,一个任务运行完,就会运行下一个函数

出0入0汤圆

发表于 2014-8-21 23:43:38 | 显示全部楼层
协议栈是什么版本?

出0入0汤圆

发表于 2014-8-21 23:46:02 | 显示全部楼层
uart,直接中断,现在看起来,没有那么难。。主要还是组网那边。。最好看一下TI的自带的文档。几乎都有了。

我搞个CC2538做协调器,跟CC2530组网,CC2538处理能力还是不错的。比较是M3的

出100入101汤圆

发表于 2014-8-22 06:31:34 | 显示全部楼层
zigbee和”无刷电机驱动器“是如何关联在一起的?LZ还是多花点时间,自己搞透彻的东西才用着放心。

出0入0汤圆

发表于 2014-8-22 09:31:56 | 显示全部楼层
慢慢来     

出0入0汤圆

发表于 2014-8-23 09:56:57 | 显示全部楼层
lixin91985 发表于 2014-8-20 09:23
大部分问题都解决了。。目前有个问题 ,让我很头疼,

我使用genericAPP工程模板,

还是不大明白你的问题,IO中断和收到帧是什么关系?

出0入22汤圆

 楼主| 发表于 2014-8-23 10:21:49 | 显示全部楼层
mmyer 发表于 2014-8-23 09:56
还是不大明白你的问题,IO中断和收到帧是什么关系?

IO产生一个中断,表示 对方给CC2530发送了一帧数据。

出0入0汤圆

发表于 2014-10-16 23:14:24 | 显示全部楼层
直接找到TI的例程,基本的都有.串口需要在IAR编译器的选项里面去配制成DMA还是ISR.

出0入0汤圆

发表于 2014-10-17 00:12:04 | 显示全部楼层
太不幸了,我直接整过这个,资料找不了了。

出0入0汤圆

发表于 2014-10-17 00:40:48 | 显示全部楼层
用过ZSTACK,只是感觉IAR一改优化等级,马上ROM不够用

出35入0汤圆

发表于 2015-4-22 16:02:52 | 显示全部楼层
按照Webee的把基础实验和透传都调通了.
到ZStack就卡住了.

出0入0汤圆

发表于 2015-6-11 09:26:02 | 显示全部楼层
lixin91985 发表于 2014-8-18 18:02
MAC_RADIO_TIMER_WAKE_UP();

我使用内部RC振荡器,, 程序停在了这里。。

你好,想请教你一个zstack的问题。我用串口助手发送数据给CC2530协调器,经常会会出现收不到数据,有时候发送数据多了,协调器还会卡死。不知道是什么原因
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 14:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表