STM32 GPS悬停飞控 (十四)数传 i2c修bug

博主分享了在进行数传调试过程中遇到的问题及解决方案。通过对比不同代码片段,发现飞控代码中I2C通信初始化部分存在冗余,导致气压计和罗盘无法正常工作。经过调整,成功解决了数传接收机无数据和LED灯异常闪烁的问题。

后面要做数传了。

我先做了不带数传的测试。

这是测试视频(视频前半段):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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值