概述
拿到一大堆资料,从某供应商中x通拿到8个样品,从国外客户拿到两个cc2530的固件,但是不知道怎么烧录(要用工具CCDebugger),之后,去中X通还发了一个下午时间+加班到9点,才帮忙烧录了这几个模块,但是通过rxtx发送抓数据,跟客户的一直对不上。回来直接在某宝上买了个几十块的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),另一个串口(如图片中的调试助手)rxtx接模块的txrx
1) 在console输入" echo -en 'xfex00x21x02x23' > /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).所以,我怀疑,在反馈数据时,固件中是否没有加结束符呢?
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数据。
最后
以上就是畅快火车为你收集整理的[zigbee]-瞎搞-(一)的全部内容,希望文章能够帮你解决[zigbee]-瞎搞-(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复