打印
[STM32]

ADC采样

[复制链接]
923|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大佬们,我想问一下,STM32F103动用15路ADC,采样正弦模拟量信号,有没有什么好的编程思路.
我目前是ADC单次采样,通过定时器200us触发ADC采样,ADC采样程序有滤波函数(连续采样十次,冒泡排序去掉最高和最低),然后采样到一定次数后通过浮点运算等来换算出实际的电压电流等参数,目前的问题是程序这样运行太慢了(单次多频率采样,采样1000次换算一下),有没有什么地方可以优化的.

使用特权

评论回复

相关帖子

沙发
LcwSwust| | 2023-2-16 16:22 | 只看该作者
排序没必要,比如采了10次,就把10次数据加起来再减去最大值、最小值,再除以8即可。

使用特权

评论回复
评论
LcwSwust 2023-2-16 16:55 回复TA
@**蛋鸭蛋荷包蛋 :排序太费时间,求最大与最小也不需要排序。//-------------------------------------------------- //n个数里求平均值(n>=3) //-------------------------------------------------- S16 average_S16(S16 a[],U8 n) { S16 max,min,ave=0; S32 sum=0; U8 i; if(n<1)return 0; if(n<2)return a[0]; if(n<3)return (((U32)a[0]+a[1])/2); max=a[0]; min=a[0]; for(i=0;i<n;i++) { if(max<a[i])max=a[i]; if(min>a[i])min=a[i]; sum+=a[i]; } //ave=sum/n...  
鸡蛋鸭蛋荷包蛋 2023-2-16 16:43 回复TA
目前是单次采样,连续10次,然后排序去掉最大最小,加到指定变量,次数达到500或某一次数后,会进行浮点运算计算实际模拟量,大概是这样的流程,有哪些需要修改的吗 
板凳
LcwSwust| | 2023-2-16 16:55 | 只看该作者
//--------------------------------------------------
//n个数里求平均值(n>=3)
//--------------------------------------------------
S16 average_S16(S16 a[],U8 n)
{
        S16 max,min,ave=0;
        S32 sum=0;
        U8 i;
        if(n<1)return 0;
        if(n<2)return a[0];       
        if(n<3)return (((U32)a[0]+a[1])/2);
        max=a[0];
    min=a[0];
    for(i=0;i<n;i++)
        {
                if(max<a[i])max=a[i];
                if(min>a[i])min=a[i];
                sum+=a[i];
        }
        //ave=sum/n;//直接平均
        ave=(sum-min-max)/(n-2);//去极值后求平均
        return ave;
}

使用特权

评论回复
评论
鸡蛋鸭蛋荷包蛋 2023-2-17 09:01 回复TA
谢谢兄弟 这样看起来比排序快一点 
地板
一叶倾城wwq| | 2023-2-17 14:57 | 只看该作者
用DMA,连续采样,快一些

使用特权

评论回复
评论
一叶倾城wwq 2023-2-20 08:42 回复TA
@**蛋鸭蛋荷包蛋 :可以调采样频率的。 
鸡蛋鸭蛋荷包蛋 2023-2-20 08:40 回复TA
ADC连续采样的话 这样控制不了时间 怎么计算多长时间采样一次 因为是正弦波 所以需要控制时间和滤波 
5
xch| | 2023-2-17 15:56 | 只看该作者
你选错MCU。F103 没有浮点指令,比相同主频的M4慢十倍。换成G4系列直接采样滤波一气呵成。

使用特权

评论回复
评论
鸡蛋鸭蛋荷包蛋 2023-2-20 08:40 回复TA
谢谢大佬 
6
xch| | 2023-2-17 16:00 | 只看该作者
用NXP LPC55S69 变态地快。

使用特权

评论回复
7
coody| | 2023-2-17 16:33 | 只看该作者
测量有效值吗?是的话,用正弦波频率100倍或以上的采样速度采样,计算均方值就是有效值。

使用特权

评论回复
评论
coody 2023-2-23 11:28 回复TA
@**蛋鸭蛋荷包蛋 :计算量不大啊 
鸡蛋鸭蛋荷包蛋 2023-2-20 08:41 回复TA
目前的问题是计算速度有点慢,需要优化,而不是值不准确 
8
呐咯密密| | 2023-2-22 20:14 | 只看该作者
顶个贴,等高手回答

使用特权

评论回复
9
yangjiaxu| | 2023-2-27 22:52 | 只看该作者
运行慢是指的什么?传输数据比较慢么?如果是这样可以开启DMA的,如果采样慢,额可以外置ADC的

使用特权

评论回复
评论
鸡蛋鸭蛋荷包蛋 2023-2-28 10:07 回复TA
好的,感谢大佬的建议 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

85

帖子

1

粉丝