IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:50:39  更:2021-07-25 11:52:33 
 
开发: 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年4日历 -2024/4/27 8:31:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码