[zigbee]-瞎搞-(一)

拿到一大堆资料,从某供应商中x通拿到8个样品,从国外客户拿到两个cc2530的固件,但是不知道怎么烧录(要用工具CCDebugger),之后,去中X通还发了一个下午时间+加班到9点,才帮忙烧录了这几个模块,但是通过rx\tx发送抓数据,跟客户的一直对不上。回来直接在某宝上买了个几十块的CCDebugger工具,准备自己烧录测试。

烧录方法

        烧录软件-flash-programmer-1.12.8.zip

       CCDebugger工具需要接的5个引脚:1(GND)\2(VDD)\3(Debug Clock)\4(Debug Data)\7(reset),模块需要外接电源。

 烧录成功的图片

   

测试方法:

Please, try to flash the firmware and send 0xFE, 0x0, 0x21, 0x02, 0x23. As a response you should get exactly 10 bytes and first 4 should be 0xfe, 0x05, 0x61, 0x02.

            系统软件的修改:配置成ttyS2通信,115200 8n1n(波特率-传输数据位数-是否有奇偶校验-停止位-是否流控)

            这里涉及到怎么设置波特率:通过drivers/tty/serial/serial_core.c     uart_set_options()函数实现。

从控制台查看,会有/dev/ttyS2生成。

我用示波器,抓取到的数据不对,还没弄明白:

    我用示波器测试不到模块的反馈信息,另外,我反复测试了模块的rx引脚,似乎接收到的数据也不正常,明天早上上班时,我要请硬件工程师帮我看看,比如,我发送“echo 0x1 > dev/ttyS2”,得到如下波形:

    

 可能是示波器设置不对,或者这个示波器功能限制,于是换成了LOGIC Analyzer工具

只抓到模块的接收数据,模块没有反馈数据,后面,客户又换了一个固件给我,终于抓到数据了:


之后,我回头想了想,为什么串口SecureCRT抓不到呢,于是,我准备下一个调试助手试试,发现它的发送和接收还有ASCII及HEX的区别,于是大概明白了:

我用了两个串口,一个接android console (如图中secureCRT-com2),另一个串口(如图片中的调试助手)rx\tx接模块的tx\rx

 1) 在console输入" echo -en '\xfe\x00\x21\x02\x23' > /dev/ttyS2",另外一个串口可以获取到模块有发出 Hex value:FE 05 61 02 02 00 02 07 00 61

2)在console先输入" cat /dev/ttyS2",准备接收模块Tx回馈的数据,在另外一个串口先给模块发送"FE 00 21 02 23",串口会收到反馈,见下图中第二行打印(第一行打印是显示的发送数据),但是,此时在console端并未打印出任何数据,之后,我通过串口主动对ttyS2发送一个”04“数据(把串的TX接到模块的TX,即主板的RX; 04为ASCii的结束符的Hex 值),才有下图中的打印:

,之所以显示的如乱码,是因为只能打印出字符(0x61对应的ASCii字符为a).所以,我怀疑,在反馈数据时,固件中是否没有加结束符呢?


          (在开始,两个串口,我都是用secureCRT抓数据,但是它默认显示是ASCII字符,不能以hex格式显示,所以后面我用了调试助手抓数据)这里还要提一下,在控制台的操作中,如果要以hex格式抓节点中的数据,可以用下面命令:

130|G16:/ # od -x < dev/ttyS2 
0000000 05fe 0261 0002 0702 6100

从上可知,能读到(FE 05 61 02 02 00 02 07 00 61),但是,要通过串口主动对ttyS2发送一个”0x04“数据(把串的TX接到模块的TX,即主板的RX; 0x04为ASCii的结束符的Hex 值),才有以上打印。

问题:我用示波器怎么没抓取到HEX数据。

阅读更多
个人分类: Linux
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

[zigbee]-瞎搞-(一)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭