| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 华普微A2119 驱动协议问题查找思路 -> 正文阅读 |
|
[嵌入式]华普微A2119 驱动协议问题查找思路 |
目录 一、问题:在做一款mcu更换项目中,驱动A2219芯片发现每次接收到的数据包前面出现了错误的数据,如下图,在数据包前面多了0x00,出现较为频繁,导致数据接收失败比较频繁。遂开始一系列问题查找。 二、分析:1、同样的mcu配合A2219芯片有三块不同的板子,有两块出现了问题,其他的一块没有出现问题,比较奇怪,所以首先将重点放在了对比三份代码的工作上,经过对比发现通信协议这块几乎没有什么差别,各个数据位的延时长短也一致,只有引脚初始化时配置的顺序有些差别,所以将引脚配置的顺序改为一致,问题还是没有解决,继续思考解决方案。 2、因为使用的mcu之前某些部分引脚有出现过问题,出问题的电路板正好使用了该引脚,所以怀疑该引脚置高置低有问题,所以将该引脚进行了替换进行实验,发现还是不能解决问题,排除该引脚的问题。继续思考解决方案。 3、引脚配置没有问题,遂开始最不愿意做的事情(因为mcu和2219芯片都采用qfn封装,比较难飞),飞线查mcu和A2219间的通信协议,经过检查通信协议发现通信协议一切正常,再次对了下数据手册上的通信要求,一切正常,没有问题,数据确实是从2219发出来的,这就比较奇怪了,所以只能找2219原厂的兄弟协助了。 4、找到原厂的兄弟,他觉得是无线同步字的问题,所以进行了一系列芯片配置的修改,修改之后还是没有效果,原厂的同事下班,一天无果。 5、晚上觉得还是比较奇怪,为什么表面上看完全一样的通信协议为什么一块板子没问题,两块板子出现了问题,有没有可能是驱动2219使用的引脚不一样造成的问题?非常的奇怪,所以想想还是要将硬件的问题完全的排除掉,遂开始将有问题的代码其他部分工作都注释掉,然后只留下来驱动2219芯片的部分,最后将驱动的引脚改掉好的硬件板子的引脚,发现好的那块板子也出现了问题,遂排除了硬件硬件本身的问题,实锤是驱动引起的问题。 6、根据之前的经验,中断比较频繁的的话有可能会引起一些问题,所以想着把最频繁的硬件定时器的中断给去掉,a2219的驱动中有一部分用掉了这个定时器,将其中的硬件定时器调用全部换成软件定时器来实现。编译之后,惊喜的发现,数据恢复了正常,比较神奇,打算明天和同事商量商量看看,查查问题的根源。为什么同样的协议用软件定时就可以,用硬件定时器就不行。 7、早上原厂的兄弟对数据进行了分析,分析的结果是2219芯片确实是收到了正常的数据,但是传送到mcu时出现了问题,遂对协议进行了新一波的折腾,无果。 8、根据数据手册进行分析,FCSB引脚拉低之后,mcu才开始读取2219芯片中的数据,这个芯片是mcu主动给2219芯片的,因为拉低信号是通过逻辑分析仪确定的,所以怀疑是芯片引脚并没有完全拉下去,倒是2219没有识别到,所以没有发送真正的数据,所以下一步打算用示波器去抓FCSB引脚的信号,确定下问题。 9、和几个同事分析了情况之后,大家觉得我的思路有问题,就算FCSB拉低信号有问题,持续那么长时间,应该不会存在问题。所以大家把问题的焦点放在了开头为什么是00,然后我又用其他几个发射端做了测试,发现每次都是多发了00,所以有同事猜测是不是 mcu从2219芯片读取数据时芯片的数据没有准备好,所以读取数据时芯片返回了00。遂和原厂的同事进行了沟通,证实了我们的猜测,芯片在发出有数据指令后,数据其实还没有完全的接收过来,每个字节根据通信速率可能要延时一会数据才能完全获取到,所以读早了,有可能数据还没接收完成,导致接收数据出错。 10、之后想了一下,(1)为什么一块板子可以,其他两块板子不可以?答:因为好的那块板子硬件定时器采用的arm-m0内核自带SysTick定时器,而有问题的板子用的是芯片真正的硬件定时器,所以实现相同的延时可能有一些时间差,刚好数据接收正确;(2)为什么软件定时器可以,硬件定时不可以?答:可能是软件定时器的延时相对更长,所以数据接收正常。 11、验证,经过逻辑分析抓收到数据接收信号,然后到读取数据命令发出是时间,发现正常的数据都是5.5ms左右的间隔,而出问题的数据都是5.1ms的间隔,印证了猜想,问题解决。 三、复盘在解决这个问题时还是花费了比较长的时间的,从问题本身来说不是很大,但是还是花费了两天多的时间来解决问题,比较浪费时间, (1)在上逻辑分析仪上纠结了比较长的时间,希望通过调整延时来解决问题,应该直接上逻辑分析仪,快速排查问题。 (2)还有就是排除问题要稳准狠。不要怕麻烦。 (3)要有自己的思路,觉得芯片厂的支持或者方向有问题要提出自己的疑问和想法 (4)靠天靠地,不如靠自己,有技术支持也不能完全依靠,要有自己的想法。 四、解决思路(1)定位问题 (2)采用有效方案排除可能原因,首先要排除硬件问题 (3)是通信协议相关的要尽快上逻辑分分析仪,不要怕麻烦,是模拟信号的要尽快上示波器 (4)遇到想不通的时候可以找同事或技术群交流,拓宽思路。 (5)多做实验验证 (6)解决问题 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:41:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |