本文主要是介绍STM32 GPS悬停飞控 (十四)数传 i2c修bug,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
后面要做数传了。
我先做了不带数传的测试。
这是测试视频(视频前半段):https://v.youku.com/v_show/id_XNDIyMzUxMTY2NA==.html?spm=a2h3j.8428770.3416059.1
然后再刷了飞控,接上数传发射机。另外还用Arduino uno做了数传接收机。
但是发现有问题,PC13一直狂闪,闪烁频率不是飞控里设计的跟GPS信号相关的频率,而且数传接收机没数据。我感觉是以前那个读不了气压计的老问题,以前也碰到过,我当时是换了stm32板子解决的。
但是后来换了板子也不行,刷回测试代码也一直不行。我发现姿态传感器没问题,就是气压计和罗盘不行,但是如果输入b是可以找到气压计和罗盘的,说明硬件连线没问题,传感器模块应该也没问题。那么会出问题的只有代码了。
我比较了i2c_scanner.ino、check_compass.ino、check_barometer.ino,第一个能正常运行,后两个不行。
我发现i2c_scanner里直接运行 HWire.beginTransmission(address);,而另两个里都先有 HWire.begin(); 然后才是 HWire.beginTransmission(address);
而且我在check_barometer的这几句话前后打印了东西,发现就是HWire.begin()这句话会导致程序卡住,前面的都能打印,后面的就不行。
所以我判定这句话有问题,应该是只要在mpu初始化的时候运行一次就行了,后面别的传感器这里不要运行。
我把check_barometer.ino第五行,check_compass.ino第六行都注释掉了,测试程序就好了。
然后我把全套板子都接上面包板(包括数传),把飞控代码的主程序的220行,230行的HWire.begin()也去掉,最后刷入飞控程序。pc13就不乱跳了。
我把接收机也准备好了。
数传演示视频(视频后半段):
https://v.youku.com/v_show/id_XNDIyMzUxMTY2NA==.html?spm=a2h3j.8428770.3416059.1
这篇关于STM32 GPS悬停飞控 (十四)数传 i2c修bug的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!