abbey_tom 发表于 2024-1-22 21:54:57

aidn 发表于 2024-1-22 08:43
同步无论什么做都需要触发信号吧?定时器本来就是信号源没有更好的触发源了吧,本来采集的是一个完整的周 ...

还是说不清楚,
谁和谁同步?
你用定时器触发采样,
只要采样时间够,
应该都没有问题的。

aidn 发表于 2024-1-22 23:27:15

本帖最后由 aidn 于 2024-1-22 23:46 编辑

abbey_tom 发表于 2024-1-22 21:54
还是说不清楚,
谁和谁同步?
你用定时器触发采样,


现在是这样, 触发采样时域上还是会跳,分析仪上面紫色是tim2 cc2触发(没有这个信号程序卡死)。 黄色是cc4 1K方波

                sprintf(sprint_buf, "ADC Start");//卡死会显示这个
                LCD_ShowString(0, 0, (const uint8_t*) sprint_buf, color, BLACK, 16,
                                0);
                HAL_ADC_Start_DMA(&hadc1, (uint32_t*) ADC_Sample, SAMPLES_LENGTH * 4);
                HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
//                HAL_ADC_Stop_DMA(&hadc1);
//                htim2.Instance->CCR2 = 57343;
                while (hdma_adc1.State == HAL_DMA_STATE_BUSY)//没触发会在这里卡住
                {
                        ;
                };
                HAL_ADC_Stop_DMA(&hadc1);//停止
                HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2);//停止

abbey_tom 发表于 2024-1-23 12:51:16

aidn 发表于 2024-1-22 23:27
现在是这样, 触发采样时域上还是会跳,分析仪上面紫色是tim2 cc2触发(没有这个信号程序卡死)。 黄色 ...

一般只有双路信号的采集需要同步,
对于单路信号来说,
只要保证严格的等间隔时间采样就可以了。
使用TIM-CC触发ADC,
ADC开启DMA,
DMA设置半完成中断就处理数据,
这样就可以避免时序对采样的影响。

aidn 发表于 2024-1-23 14:30:16

abbey_tom 发表于 2024-1-23 12:51
一般只有双路信号的采集需要同步,
对于单路信号来说,
只要保证严格的等间隔时间采样就可以了。


用tim触发dma就是为了采样时对齐1KHz上升沿,采样4mS这个时间是固定的,这个处理时间并不固定,快者几百mS慢则差不多1秒,上面的图可以看到直流1倍频3倍频幅值比较稳定也没频率泄漏这个采样周期是完整的。就是相位差得太多了无法测电容值

abbey_tom 发表于 2024-1-23 14:51:12

aidn 发表于 2024-1-23 14:30
用tim触发dma就是为了采样时对齐1KHz上升沿,采样4mS这个时间是固定的,这个处理时间并不固定,快者几百mS ...

你需要采样一个信号,
还要两个信号?

aidn 发表于 2024-1-23 15:22:14

abbey_tom 发表于 2024-1-23 14:51
你需要采样一个信号,
还要两个信号?

这是个lcr表,adc规则采了4个样,一个参考电阻电压Vref,一个电容内阻电压Vesr,一个电容电压Vkin,一个是系统电压Vbet(现在是悬空没接),采样率是1MHz采1KHZ4个信号四舍五入=同步采样,我不是要4个信号同步而是每次刷数据都是同相位这在示波器上是叫同步吧?

abbey_tom 发表于 2024-1-23 15:49:59

aidn 发表于 2024-1-23 15:22
这是个lcr表,adc规则采了4个样,一个参考电阻电压Vref,一个电容内阻电压Vesr,一个电容电压Vkin,一个 ...

我就是说嘛,
不是像你描述的那么简单。
这种需要激励信号吧?
其它信号要保持与激励信号同相的。

aidn 发表于 2024-1-23 22:02:52

abbey_tom 发表于 2024-1-23 15:49
我就是说嘛,
不是像你描述的那么简单。
这种需要激励信号吧?


换回stm32f070轻易就实现扫描同步,就是flash和RAM都不够装不下fft得换cbt6才行。又得重新打板了

abbey_tom 发表于 2024-1-23 22:17:34

aidn 发表于 2024-1-23 22:02
换回stm32f070轻易就实现扫描同步,就是flash和RAM都不够装不下fft得换cbt6才行。又得重新打板了

俄版LCR使用STM32F100C8T6B
本坛网友使用国产AIR32好像也实现了。

aidn 发表于 2024-1-23 22:31:42

本帖最后由 aidn 于 2024-1-23 22:36 编辑

abbey_tom 发表于 2024-1-23 22:17
俄版LCR使用STM32F100C8T6B
本坛网友使用国产AIR32好像也实现了。

俄版那个不是40x么?我用的070f6p6,size优化刚好装得下fft,求模都干不了。其他什么菜单控制就别想了,用103rbt6编译后用了42K。C8t6应该就可以了但是用了彩屏怎么都得多整点什么

aidn 发表于 2024-1-23 22:39:32

arm的dsp太吃资源了一个sqr就几K了

abbey_tom 发表于 2024-1-23 22:46:07

aidn 发表于 2024-1-23 22:31
俄版那个不是40x么?我用的070f6p6,size优化刚好装得下fft,求模都干不了。其他什么菜单控制就别想了 ...

俄版本6.20,电路图在这里

abbey_tom 发表于 2024-1-23 22:49:09

aidn 发表于 2024-1-23 22:39
arm的dsp太吃资源了一个sqr就几K了

软件代码在这里

aidn 发表于 2024-1-23 23:18:51

abbey_tom 发表于 2024-1-23 22:49
软件代码在这里

谢谢,收下。看了下,开方用了递归。arm的dsp库是用一个3K的表求值

abbey_tom 发表于 2024-1-24 08:22:20

aidn 发表于 2024-1-23 23:18
谢谢,收下。看了下,开方用了递归。arm的dsp库是用一个3K的表求值

你是自己做着玩儿,
还是商品?
我曾经一段时间对这个也比较感兴趣。
页: 1 [2] 3
查看完整版本: adc采集用定时器触发 发现采集到的数据依然跳动