|
使用定时器触发ADC采样PWM正脉冲时刻的负载电压电流,触发ADC的定时器用的就是产生PWM的定时器,设置为上升沿触发,测试发现每个PWM周期内ADC被触发了两次,一次是PWM上升沿的时候,另一次是PWM低电平的时候,不知道为什么每个PWM周期内会触发第二次采样? 此外,如何确保ADC采样到PWM正脉冲的中间时刻呢? 测试波形 CH1: 定时器产生的其中一路PWM波形(两路PWM交替开启) CH2: ADC采样完成DMA中断函数-连续反转GPIO输出的波形
配置如下: 定时器4:产生两路PWM信号驱动负载,同时将输出触发设置为 Update Event触发ADC采样
ADC: 三个通道连续采样,由定时器4的上升沿触发,DMA循环模式搬运采样结果到内存-开启DMA中断
DMA中断:连续反转GPIO,便于用示波器观测采样时机
|
CubeMX 生成的 STM32H7 CMake 工程打开串口 DMA 无法正常发送数据,如何解决?
stm32cubeMx生成stm32H743IIT6 cmake工程时全局变量自动定义到DTCM段
STM32G431 用MCSDK5.4.8 进行PMSM永磁同步电机FOC控制,转速上升到某一值(3500rpm)无法继续上升,上不去
SDIO读取TF卡,1bit模式正常,4bit模式无法读取
Cubemx的外部低速时钟已激活但时钟树中HSI无法选择
在stm32cubeAI上,打开Lanuch NeuralNet Studio提示打不开
STM32CUBEMX生成代码格式问题
MX创建的SMT32工程在IDE中build会报错
STM32cubeMX中文版怎么设置?
请问一下STM32U575VGT6在mx里怎么配置DCMI的DMA setting啊,我点那个页面只有GPDMA1,跳转过去也没有什么DCMI的选项
微信公众号
手机版
通常比较合适的做法是将代码放在完成中断的回调函数里。
所以放在 IRQhandler 里面很可能执行了两次。
不妨调试看看是不是这个原因。
你到底是基于PWM的比较事件触发ADC 还是基于ADC的周期性更新事件触发ADC;
你提到的上沿是模糊的说法,PWM输出可以自由配置,即使相同CCR和ARR值不同的输出模式,上下沿的位置会不同;
你现在到底是连续采样还是基于定时器触发才采样,基于你现在的配置,就是每次定时器更新事件触发3次采样。
你用到DMA完成中断,这个中断跟你一轮完成的数据个数有关,假设你现在传输3个数据为一轮,即发生三次采样后发生完成中断;
您好,
我的目的是每次定时器触发3个通道的ADC采样(每次触发每个通道都要采样一次),预期的采样时间是PWM输出为正的那段时间里(最好是正中间)。
谢谢!确实是这个原因导致的。
你好,我这里请教几个稍有偏离的问题,希望不会太麻烦你:
传输一半中断,是有什么用处?
是否可以关闭这个传输一半中断?
谢谢~