你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

DMA传输的ADC采样数据总是上一次的数据,具体情况如下

[复制链接]
封刀岁月不为峥嵘 提问时间:2023-6-28 10:58 / 未解决

//数据采集回调函数 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc) { if(adc_ReadOk == 0x55) { HAL_ADC_Stop(&hadc1); HAL_ADCEx_InjectedStop_IT(&hadc1);

HAL_ADC_Start_DMA(&hadc1,(uint32_t *)&ADC[0],701);
sys_WaitTime = 0;
adc_ReadOk = 0xaa;//数据采集完毕HAL_ADC_Start(&hadc1);

HAL_ADC_Start(&hadc1);
HAL_ADCEx_InjectedStart_IT(&hadc1);

} }

前置代码为:HAL_ADC_Start(&hadc1);和HAL_ADCEx_InjectedStart_IT(&hadc1);

问题是这样的,我通过模拟看门狗检测电压变化,当超限时将DMA把ADC采样到的数据传输出去,但是经过debug调试和示波器的观察,我可以明显的看出ADC[]数组里面的值是上一次电压变化的值。

而开机后,第一次触发看门狗进行DMA传输到ADC[]的值都为0.

收藏 评论4 发布时间:2023-6-28 10:58

举报

4个回答
Max.88888888 回答时间:2023-6-28 11:08:49

签到

xmshao 回答时间:2023-6-28 12:40:47
如果先不关心超限问题,目前DMA传输结果正常吗?



你说 当超限时将DMA把ADC采样到的数据传输出去。请问 你此时通过什么保证此次转换结果


通过DMA传输出去的。换个说法,发生ADC转换超限时的值如何适时触发DMA请求的?


同样 你说第一次触发看门狗进行DMA传输到ADC]的值都为0。你是如何将发转换超限时的转换


事件跟DMA传输对应起来的?
butterflyspring 回答时间:2023-6-28 17:12:15
这里有个关键问题,DMA 搬运 ADC的值是否正常? 这个是重要前提。
建议先调试这个基础功能的代码,保证ADC连续转换同时结果能连续搬运到你的数组里面。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版