
捕获5KHZ频率的正弦波,使用的是100khz定时器2溢出事件触发ADC采样,采样144cyc,使用DMA方式传输ADC采样数据(软件触发和连续采样都试过没有对波形产生帮助)。之后通过高速USB带内置PHY功能的模拟串口通信把数据上报。上报方式是每次adc采样存下一个点,累计达到1000个点进行一次HS上报。 上位机最好收到的波形如下: 之前通过标准的信号发生器输出1khz正弦波也会存在这样的波形,测试固定数据USB上报不存在数据丢失问题。请问是ADC采样存在数据丢失问题吗?要如何改进?还是数据上报和ADC采集有冲突? |
STM32CubeMX 使用"FW_F1 V1.8.6"生成FreeRTOS代码缺少"freertos_mpool.h"?
STM32F769是否可以部署边缘AI
STM32N6 cubeAI部署时用的内存是在内部还是外部?
STM32N657X0Q无法通过SPI驱动st7796板子
ADC差分采样
STM32CubeMX 配置STM32G070RBT6TR时无法使能PVD中断
STM32G070RBT6TR STM32CubeMX ADC配置后使用的是内部参考电压且零点的读数太大了
STM32C092的cubemx无法使用
SDIO读取TF卡,1bit模式正常,4bit模式无法读取
STM32MP157D-DK1与STM32MP157F-DK2重大区别和推荐选择哪块板子,想做智能家居方面的,
1、先用示波器查看ADC采样引脚上波形是否如图所示;
2、再把频率降低一点是否有改善,这样去排除一下是否是软件问题
你说采样时钟144cyc,不知你单指ADC的采样时间还是包含了转换时间,总之,总的转换时间要保证短于定时器的触发周期。
这个地方是TIMER的定期触发频率决定了最终采样频率。将这里的几个数据确认好。
我不知你的ADC时钟到底是多少,假设是27MHz,总转换时间在140~160cycle的话,TIMER以100KHz频率
触发采样的话,参数方面应该没什么问题。
你可以考虑在ADC采样通道前加一个低通滤波,截止频率可以设置得比5KHz稍高点,比方设置在6K~7Khz。
再就是要保证每次的数据都及时拿走了,这点也很重要。
ADC采样频率是54Mhz,应该足够定时器进行采样,之后通过中断方式从DMA中取得数据,应该也不存在取不到数据,但是怀疑USB上报的时候占用cpu资源,导致ADC采样不全,会有这个可能吗?
[md]示波器上看到的都是完整的正弦波,软件里面发现ADC捕获的数据确实存在不符合正弦曲线的特异点。
[md]把USB关掉,ADC采集完数据之后,把数据通过串口直接发出来,然后再EXCEL表格拉一下
是个好建议。
可以这样先行验证一下。
[md]现在ADC的触发及工作不会被别人影响,DMA的搬运的话,除非你系统很繁忙,尤其在用DMA传输通道多时,不然应该也不会受到影响。
USB传输及处理可能会影响DMA中断的响应及处理,但这个影响我认为应该发生在DMA又搬完一批数据了,CPU还没有机会来处理,新的数据搬运又开始了。
这点你可以自己评估一下。必要的话,可以考虑使用DMA双缓冲模式。