小弟近日在调试中碰到一个蛋疼的问题。。。纠结了好几天,希望各位兄弟给点宝贵建议。
以下是基本情况以及碰到的问题。
1.从机STM8是购买的甲醛模块,负责把测的甲醛浓度数据发送给主机。 协议比较简单,主机32给他发送一个数据包,它就返回一个数据包,如下:
模块用串口调试助手测试,10MS定时发送读取指令 A5 5A 02 80 AA 能正常返回数据包a5 5a 06 80........
2 主机STM32的协议是自己写的,接收放在串口中断里,接受到数据包置标志通知主程序。 和PC串口调试也能够通过。(能发送读取指令打印在PC串口调试助手上,串口调试助手模拟模块返回数据包,stm32接收到了也能解析,处理。)
以上啰嗦了一大堆,就是表面:
主机和从机分别和电脑串口测试,都能用。
然后,我把主机stm32和从机stm8互相连接,VCCTXRXGND 直接通过杜邦线连接。 其中主机的TX和从机的RX连接,共VCC 共地地。 模块就插到板子上,距离很近。 主机STM32发送给stm8命令数据包,在STM8上的RX引脚用示波器能测得波形,频率应该是准确的,因为结束位0xAA的时候示波器频率跳到4k8.(波特率设置9600,10101010,高低为一周期,所以 9600/2=4800) 那么问题来了,为什么STM8没有数据返回。。,stm8的TX引脚上为什么用示波器测量无数据。。。
排除几个问题
1.主机TX和从机RX接,确认了
2.stm32发送的数据包是对的。
另外,示波器测波特率。。。头次听说。
两年前遇到过232通信问题,时好时坏,很久搞不定,几乎崩溃。
过了半年才发现问题:虚焊。
---------------------------------
哥们,你那次虚焊,单独测试能用嘛。。。 另外,示波器测波特率。。。输出0XAA,10101010,主循环就执行这个,,,这样测出来的频率应该等于 波特率/2
---------------------------------
哥们,格式是指 波特率 效验 位数 这些嘛,,,,电脑哦串口的设置我没改过,,,他们分别和电脑串口能通信,应该一样的吧,,,关于波特率误差,这个很棘手啊,不知道怎么解决,,配置的都是9600。。。
---------------------------------
用示波器看0或1的时间宽度,9600,大约是100uS。
一周热门 更多>