[原创] 【是德征文】安捷伦示波器又帮我化解了一个Bug

zzwan   2017-3-2 17:08 楼主
首先说一下我跟安捷伦的缘分吧。大学毕业后,我进了一家电子企业做硬件研发工作。那还是我的菜鸟期,出学校之后最早接触的示波器是泰克品牌的。之后公司花20万买过2台新示波器也是泰克的。从那时起,我一直用的就是泰克的示波器。因此我也有了一个认知误区,一直以为泰克是示波器第一品牌(嘿嘿,没接触过其他品牌示波器)。直到进入现在这家公司,我才发现山外有山。进实验室发现,清一色的全是安捷伦的设备,示波器,频谱仪,信号发生器,电流表等。这些年来,这些设备帮我解决了各种各样的bug,协助我及时完成了一个又一个的开发任务。 本文是关于示波器的文章,所以其他设备先不说的,等以后有机会再写吧。我们实验室有2台KEYSIGHT示波器,一台是中端的DSO-X 3054A,500MHz 4GSa/s; 另一台是高端的MSOS254A,2.5GHz 20GSa/s. 先来一张图片吧:
DSO-X 3054A 示波器
再来一张高端型号的:
MSOS254A 示波器
简单介绍一下这台中端型号DSO-X 3054A。500MHz,4GSa/s一般应用足够了,我也不做高频的,但现在都没用过那台高端的。4通道,带USB存储,操作简单易上手。 现在说一下解决问题的过程吧。 由于项目需要多个UART,而主控芯片只有1个,我需要用GPIO口模拟UART,软件+GPIO实现UART功能。由于不是什么复杂的功能,很快就完成了,无校验位,波特率9600,收发正常。我选了2个空闲的GPIO调试程序,调试完成之后需要切换到项目需要的GPIO上。这时出了问题了,每次reset之后,第一次发送数据,前面几个字节出错,后面就正常了。仔细翻看芯片的数据手册,2组GPIO没有太大区别,软件是一样的。唯一的区别是,出错的GPIO默认是SWD接口,程序初始化时,需要将这组IO设置为GPIO。刚开始我怀疑波特率太高,IO口反应不过来,将波特率降低之后,问题依然存在。反复分析,想不出所以然来,上示波器看一下IO的翻转情况,接着上图: 出错数据波形:
起始位丢失
正确数据波形:
正确波形
从上面的波形中可以看出,出错时,UART Tx信号线上第一字节的起始位没有。说明GPIO根本没有翻转下来。 这个就难搞了,可以确认软件没有问题,其他GPIO也没问题,偏偏是SWD复用的2个IO口出问题了。所以我怀疑是bootloader中将这2个IO口设置为SDW功能,进入用户main()程序之后,我们再将这2个IO口设置为GPIO时,出现问题了。 没办法了,寻求主控芯片的原厂技术支持。经过N多次电话+邮件沟通,问题确定了。这时我的DSO-X 3054A示波器立功了,上面2张图片发给原厂之后,立马定位到了问题。IO口由SWD功能转换为GPIO后,需要先将配置out_high寄存器,再配置in_out寄存器,否则就会出问题。这个细节就连芯片原厂都没注意到,所以手册上也未说明。 十分感谢KEYSIGHT示波器这些年来的陪伴与帮助,同时恭祝是德科技继续前进,锐意突破,给我们带来越来越好的测量设备。 此内容由EEWORLD论坛网友zzwan原创,如需转载或用于商业用途需征得作者同意并注明出处 本帖最后由 zzwan 于 2017-3-2 17:31 编辑
zzwan

回复评论 (9)

太给力了!必须赞一个!而且文确确实实的好!
在路上…… EEworld 有你有我
点赞  2017-3-2 17:55
不错,定位很迅速
training
点赞  2017-3-2 22:42
引用: 白丁 发表于 2017-3-2 22:42
不错,定位很迅速

嗯 也是好久不调底层了,涉及到硬件的部分,真离不开示波器。
zzwan
点赞  2017-3-3 11:05
引用: lightxixi 发表于 2017-3-2 17:55
太给力了!必须赞一个!而且文确确实实的好!

我也是刚解决完问题,就看到这个征文了。正好分享一下,嘿嘿,文采太烂,还请见谅
zzwan
点赞  2017-3-3 11:09
支持一下啊
点赞  2017-3-4 10:01
安捷伦示波器现在改叫是德,东西看上去就是高大尚啊
我们这里一堆,哪个叫泰克的,呵呵
点赞  2017-3-4 22:22
顶楼主,好文!!
点赞  2017-3-6 08:28
是哪家的CPU呀,给后来人也提个醒。
点赞  2017-3-23 16:59
引用: 晴天霹雳2 发表于 2017-3-23 16:59
是哪家的CPU呀,给后来人也提个醒。

NXP 无线 MCU, QN9020
zzwan
点赞  2017-3-29 17:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复