完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件描述 电路板经过了一年左右的内外部测试,MAIN_ADC一直使用正常,但近期两批电路板上,MAIN_ADC工作不正常。 问题描述 MAIN_ADC时而正常、时而不正常;不正常的情况占99%,具体表现为16个通道信号只有两路能正常采集和输出。 BKUP_ADC一切正常。 程序中,使用RT-Thread的SPI接口,做了自定义修改,支持DMA,通过程序向AD7616写0x20~0x3F寄存器、0x02寄存器,控制工作模式和序列堆栈寄存器。 MAIN_ADC输出log日志 BKUP_ADC输出log日志: 配置正常,数据采集正常。 疑惑 虽然没有用逻辑分析仪,但是,可以确定A0/B0通道采集的数据波形正确,表明MAIN_ADC的SPI在传输采样结果时一切正常。 为什么MAIN_ADC配置过程数据错误,采集过程数据正确呢? |
|
相关推荐
6个回答
|
|
先大胆假设下:也许就是 刚好那边的 AD7616 都坏了。或工作在临界状态,比如SPI时钟过高了?或供电不稳甚至电压不对?甚至工作温度变了都有可能受影响。
不然就是替换法,逐个修改其中1个变量,进行列表对比。 |
|
|
|
谢谢回复。依次检查过硬件、供电、修改SPI时钟,均没发现问题。
温度或许有影响,因为测试在海南,工作在北方,之前在-20环境下也没有什么问题。主要是近期两批板子出错。 奇怪的点在于,坏也不是全部坏,只有配置工作模式时出错,读取采样数据却没有问题。正在买逻辑分析仪,到时候试试。 |
|
|
|
|
|
|
|
|
|
|
|
我的AD7616的初始化过程:
GPIO操作,Reset AD7616 配置SPI接口 通过SPI写寄存器,设置AD7616的采样电压范围 通过SPI写寄存器,设置AD7616的OSR 通过SPI写寄存器,设置AD7616的序列堆栈、突发模式采样模式 配置PWM,Convst引脚上产生PWM波 调试了一天,逐步排查相关可能性,得到了如下结论: 在上述过程第2步配置SPI接口之前,若将Convst引脚的工作模式改为GPIO Output,拉高/拉低,可以正常配置所有寄存器。但是,奇怪的事情发生,Convst引脚在后续步骤中,配置成PWM的CH失败,没法转换。哪怕我在重新设置PWM之前,将Convst引脚Deinit也不行。 |
|
|
|
问题已经解决,是Convst引脚导致的。
实际的初始化过程是: INIT Device, Convst引脚通过HAL_TIM_MspPostInit函数被配置成AF_PP模式、NO_PULL、AF_TIM功能。 Reset AD7616。 配置SPI。 可能MAIN_ADC这一块的电路,导致Convst引脚上的电平异常,而BKUP_ADC附近的电路却没有异常(这部分真实情况,要上示波器再仔细测测硬件)。因此,BKUP_ADC的寄存器配置成功。 程序经过修改,将NO_PULL改成PULLDOWN,内部下拉,解决了MAIN_ADC的寄存器配置错误问题,同时,BKUP_ADC也能工作良好。 至于Convst引脚在reset之后,配置成GPIO再下拉,AD7616配置成功,却没有波形的原因也找到了。PWM对应的GPIO引脚初始化是INIT_DEVICE,所以,这一步破坏了PWM的模式,没有转换脉冲。没想到在这里还踩了个坑。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
754 浏览 0 评论
3703 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2459 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2892 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31079 浏览 11 评论
72760 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 10:26 , Processed in 0.784717 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号