问题
去年下半年接到导师给的任务:用一个航模遥控器控制一台需要多控制量的设备。由于单片机资源紧张,我只能使用一个串口接收SBUS,收到数据后再解算每个通道的值。上网查看了这篇文章:SBUS协议及编解码,C语言源码,了解到协议的构成,信心满满的自己焊了其中第一幅图的反相器,串口接上一看懵了。为什么别人读出来的是0x0F开头稳定的25字节1帧,我读出来的是0xF8开头的时而24字节时而25字节1帧呢?试了很多种办法,打了厂家客服电话,均没有结果。后来发现是反相器的原因。由于过程中在网上找不到相关错误,所以发个博客,万一以后有和我一样的新手朋友遇到这个问题,请按如下方法解决。
解决
反相器!
在这篇博客中,提到了两种反相器的结构。我自己焊的第一种反相器,虽然用表测出具有反向效果,但是并不适用于SBUS。建议大家使用第二种反相器结构:
注意:
1.没有合适的电容可以不加,但一定要加下拉电阻!
2.在使用STM32系列单片机时,该反相器芯片的供电要选择3.3V!!5V供电将不能正常读取SBUS!
我知道我犯得这种错误很多人都不会犯,但是万一有和我一样的新手朋友,遇到同样的问题,希望这篇文章能为你节省一些时间。
学习不止,实践出真知。