|
最近公司说现场有机器卡死的情况 让复现出卡死的bug 逻辑是这样 ADC触发是外部上升沿触发 1ms触发一次 触发一次ADC采集一组 一组三个数据 一共采集15组 采集到之后 给DMA发请求 DMA把数据从ADC外设搬到内存 DMA传输完45个了 触发DMA的中断 DMA中断内先关掉ADC 再关掉PWM 然后改了一下标志位为1 主循环内一开始标志位为0 为1的时候进行数据处理 处理完了把标志位改为0 进行下一轮 现在是想复现出ADC卡死的情况 目前推测是和JDMAEN的置位时刻有关 感觉可能是时序问题 翻到数据手册发现有这么一句刚好是描述我这个的情况 In order to stop a circular transfer, the software needs to stopthe peripheral from generating DMA requests (such as quit the ADC scan mode), before disablingg the DMA channel The software must explicitly program the DMA_CNDTRX value before starting/enabling atransfer, and after having stopped a circular trans。 这个让关掉ADC前先关触发源 我想知道如果先关触发源会导致什么bug 求助求助 要复现卡死这个bug 求助 |
实现最高速率 ADC 数据转 USB 传输
Wordle Unlimited Brings Endless Word Puzzle Challenges Every Single Day
MCU的ADC进行电压采集时,外部输入阻抗最大能到多少?
在 main 函数里读取 ADC 采样数值
求问诡异的问题,eth网口ping不通
STM32L010F4P6的ADC多通道采集,采用扫描+DMA的方式,采集到不同通道的值会一起变化
请问一下STM32F103C8T6的Hardwar NSS Output ENABLE后cs持续拉低是为什么
Snow Rider: The Endless Winter Rush That’s Easy to Start
Ragdoll Archers: Physics-Based Bow & Arrow Chaos
STM32G0B1
微信公众号
手机版
1.剩余DMA 传输不保证正确完成,可能出现丢数、少搬一部分、buffer尾部数据异常
2.不会产生正常的DMA 传输完成中断,导致软件流程可能卡在等待完成事件上
3不能指望后续直接恢复这个DMA 通道;不重新配置(特别是 DMA_CNDTRx)就恢复运行,是硬件不支持
4.某些场景下还可能出现重新使能后传输意外延续、状态不一致的问题,因此才要求必须先停外设请求,再关DMA。
5.另外我还遇到过进入STOP 状态后没有唤醒的故障。
所以你可以提高这段软件运行频率看看发生故障的现象是否也高频发生。
你好 非常感谢你的回答 目前这个丢数据我已经发现 JOVRF会置位为1 代表数据溢出 也会存在一部分数据丢失的情况 这会导致HAL_SDADC_InjectedStart_DMA的返回值是ERROE 同时JDMAEN位无法被置为1 但是这并不会导致ADC卡死的情况 我观察到如果JDMAEN位被错误置为0的话会出现ADC采样 DMA停止搬运 导致中断无法触发 造成ADC卡死的情况 但遗憾的是我目前并不知道什么情况下JDMAEN会被置为0 对于你提到的进入STOP之后无法唤醒的情况 我很感兴趣 这可能与我复现bug有关 我想知道进入stop之后无法唤醒的故障是怎么触发的 十分感谢你的回答