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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版