-
Notifications
You must be signed in to change notification settings - Fork 7
存在问题与解决方案
本章将归纳并解决我们在实际操作中遇到的问题,以供大家参考,避免踩坑
硬件问题
1.设计绘制PCB板对于小组来讲是全新的内容,期间遇到硬件选型,绘制错误等诸多问题。
2.外设功能模块能够通过单元测试,但是在集成测试时出现运行不稳定的情况。
软件问题
1.在集成测试中发现软件执行路径错误、陷入中断、数据丢失等问题。
调试问题
1.程序运行情况与想象不一致。
2.上位机通信数据更新慢,导致画面卡顿。
问题1:一开始找不到一些元器件的原理图库。
解决方案:下载一个Altium designer Samacsys插件,输入元器件具体型号可以直接搜索到原理图和各种封装图。或者可以使用立创EDA设计PCB,利用立创EDA的在线库的完成原理图库、封装图的搜索。
问题2:布线无法完成,有一些线无论如何都没有通路连接起来。
解决方案:重新调整布局,重新布线,适当缩小过孔大小,尽可能通过增加过孔遵循正面走竖线,反面走横线原则,留出更多空间。
问题3:因为一些非常规的设计导致需要重新映射引脚到PCB,易引起出错。
解决方案:需要重新映射的引脚要对应PCB图进行仔细检查,基于现实中的硬件布局、排布方向进行核对。
问题4:在上电之后出现部分电路网络发热过大。
解决方案:将特殊网络如:3v3、5v、GND的线宽增加,避免发热过大烧坏电路。
I2C部分问题
问题:在使用软件I2C时,如果模拟FAST模式会导致稳定性变差。
问题原因:软件I2C需要模拟I2C协议的时序,按照协议要求要么2:1要么16:9,但是在实际运行的过程中当提高频率后时序误差会越来越大,虽然I2C时序有一定的容错率但是误差过大则会影响I2C运行的稳定性。
解决方案:在我们讨论、研究和进行相关测试后,最终选择更换为硬件I2C来提供I2C相关的底层支持。
TIM部分问题
问题:无法退出TIM的捕获中断回调函数。
问题原因:最初在配置捕获中断时GPIO引脚采用的浮空输入,在实际运行的时候引脚会出现杂波波动,导致一直在触发PWM捕获中断,从而无法从中断回调函数中退出。
解决方案:在配置TIM物理层时将GPIO引脚下拉或者上拉,避免电平的跳变即可。
GY-86驱动部分问题
问题:运行一段时间后出现无法读取数据的情况。
问题原因:1.MPU6050对电压要求较高,电压不稳定会导致模块重启,但是又未初始化导致无法运行。2.MPU6050的FIFO溢出导致停止运行。
解决方案:1.保证电池电量充足,同时在后期我们又重新设计了电源稳压模块可以解决这个问题。2.严格控制程序执行时间,尽力保证程序的实时性,所以引入了SoftTick提供程序运行的心跳,并利用TIM的CNT来严格测量了每一个模块执行所需时间。
ESP8266部分问题
问题:在回传数据至上位机的过程中发现速度不到10fps,导致实时数据更新太慢,模拟的飞控的画面看起来有一些卡顿。
问题原因:最初采用了下位机作为TCP_Server,而上位机作为TCP_Client。依据AT指令集的使用手册,在向上位机传输数据之前需要先指定Client,也就是需要ESP8266应答一次,那么每进行一次数据传输都需要ESP8266应答,但是由于ESP8266的性能有限,应答速度大概在50ms一次拉,极大地低了MCU数据帧的发送速率。
解决方案:在研究了AT指令集之后,我们发现TCP协议传输中有透传模式,但是其限制了只有Client允许使用透传,所以我们将下位机更改为了Client而上位机为Server,这样在向上位机传输数据的时候就免去了ESP8266的应答过程。使数据传输速度能达到50帧以上每秒,呈现出比较流畅的模拟画面。