最近项目中,需要用到linux系统的串口控制一台无人车。linux系统主要工作有两点,通过指定的协议发送命令控制小车,获取小车的实时位置信息,做 逻辑处理。
就这么一个看似很简单的功能实现, 陆陆续续调试了2个 星期,才找到bug所在。主要小车系统不是我们自己开发的,走了很多弯路, 在此记录一下,我的调试历程。
第一步,通过小车自带的xbee无线通信模块,进行控制。
linux 系统 通过xbee , 来远程控制小车,获取小车信息,一切ok。
第二步,通过linux系统的串口,控制 小车。
先用 linux系统串口直连小车的串口, 写好协议,发送指令,通过小车调试助手,查看linux打印信息,可以看到小车正常 运转,车轮转动。
拔掉调试串口,小车 依然能够运行,那么下一步就是编写自启动脚本,重新上电。 诡异的一幕出现了,小车并不运动。
我将目光焦点放在了小车身上,通过反复调试确认小车正常,开发板linux系统正常,两者一起就不正常。那就怀疑硬件是否有问题,经过 与双方厂家的硬件工程师沟通,初步确定了问题所在, 两串口之间的电平一致,实测电压不匹配,因此还烧坏了一块板,串口3.3v 与 5v 之间,同为ttl电平,需要互相转换, 转换 模块的波特率,也是需要考虑的。
问题算是解决了,两 系统互联成功,但是为什么debug口接入电脑,到底对linux开发板的电平,造成了何种影响,依然未知。