GD32F307 PWM触发ADC采样不正常的问题

采用DMA+ADC的方式进行采样。

遇到的问题:备份的工程采样正常,用最新的工程采样不正常,用对比文件检查两个工程的ADC配置和DMA配置都是一摸一样的,但是测试AD转换结果就是不一样。
排查过程:想到ADC采样是由PWM触发的,那么估计问题是出现在PWM配置上,遂对比两份工程的PWM配置,果然发现了问题,唯一不同的是占空比和中断,备份工程未开中断,占空比为50%,而最新有问题的工程是满占空比并且使能了PWM中断。将最新工程的PWM中断关闭且占空比改为50%,采样果然正常了。问题总结如下:

问题总结:

采用PWM触发ADC的:

1、占空比不能为100%,否则AD码将一直是0;

2、不能使能PWM中断,否则AD码将一直是0。

处理建议:

1、采用DMA+ADC的方式进行采样的,如果取单个采样值的,要注意取采样值时刚好是DMA正在搬运工作的时候,取得的AD码不完整导致数据错误的。

建议解决方法:采样频率要求高的话,可以使用软件触发ADC,使能一个中断周期比采样窗口时间高的中断,在中断处理函数中:先取ADC的值,再启动软件触发AD转换,等下一中断来临时DMA就有时间完全把AD码搬运过来。这时再取AD码,这样就可以避免在DMA搬运时取AD码导致数据错误的问题。

2、采样频率不高的时候可以将缓存AD的buf加大一点,每次取这个buf的平均值,这样既可以减小DMA工作过程中取AD码导致的误差,又可以进行采样滤波。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值