OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2999|回复: 4

STM32F429采样频率比我预设的低很多很多怎么回事?

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-3-14
在线时间
11 小时
发表于 2019-11-5 12:34:08 | 显示全部楼层 |阅读模式
1金钱
我要使用单片机的AD转换功能,进行电压数据的采集存储进SD卡里,使用的是STM32F429的板子,因为DMA功能不熟悉,所以没有使用DMA,程序可以正常运行,但是我把保存成txt格式的数据导入EXCEL中发现数目量和我预计的完全不同,我是进行6通道采集,最低要求每通道1K,也就是6k,单片机我预设的是:22.5M/(28+12)=0.562M=562K,均分到6路上也是93K,但是在实际程序中只能达到大概230HZ,连1k都没有,我把采集程序单独拿出来,进行调试,更改采样周期,关闭延时函数,依旧还是只能达到230HZ左右的频率,我手头上两块STM32F429都是这个情况,下面是我的部分程序,希望有大神指导一下,我是个小白。@原子哥
u16 Get_Adc(u32 ch)   
{
    ADC_ChannelConfTypeDef ADC1_ChanConf;

    ADC1_ChanConf.Channel=ch;                                   //通道
    ADC1_ChanConf.Rank=1;                                       //第1个序列,序列1
    ADC1_ChanConf.SamplingTime=ADC_SAMPLETIME_28CYCLES;        //采样时间
    ADC1_ChanConf.Offset=0;                 
    HAL_ADC_ConfigChannel(&ADC1_Handler,&ADC1_ChanConf);        //通道配置
       
    HAL_ADC_Start(&ADC1_Handler);                               //开启ADC
       
    HAL_ADC_PollForConversion(&ADC1_Handler,10);                //轮询转换

        return (u16)HAL_ADC_GetValue(&ADC1_Handler);                //返回最近一次ADC1规则组的转换结果

}

        adcx=Get_Adc(ADC_CHANNEL_5);
                temp0=(float)adcx*(3.3/4096);
                adcx=Get_Adc(ADC_CHANNEL_4);
                temp1=(float)adcx*(3.3/4096);
                adcx=Get_Adc(ADC_CHANNEL_3);
                temp2=(float)adcx*(3.3/4096);
                adcx=Get_Adc(ADC_CHANNEL_2);
                temp3=(float)adcx*(3.3/4096);
                adcx=Get_Adc(ADC_CHANNEL_1);
                temp4=(float)adcx*(3.3/4096);
                adcx=Get_Adc(ADC_CHANNEL_0);
                temp5=(float)adcx*(3.3/4096);


       
                printf("%6.4f %6.4f %6.4f %6.4f %6.4f %6.4f\r\n ",temp0,temp1,temp2,temp3,temp4,temp5);



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-11-6 02:31:36 | 显示全部楼层
中断响应不了那么高的速度
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-11-6
在线时间
2 小时
发表于 2019-11-6 16:50:26 | 显示全部楼层
你最后怎么实现的啊,讨论下吧
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-3-14
在线时间
11 小时
 楼主| 发表于 2019-11-6 17:15:03 | 显示全部楼层
正点原子 发表于 2019-11-6 02:31
中断响应不了那么高的速度

我的程序里没有使用中断,经过我昨天通过STLINK的仿真,发现采集的时候频率还是比较快的,可以达到的需求,但是在printf的时候明显产生了很久的延迟,导致了我最后获取到的数目不对,看似采样频率很低。这个printf的速度怎么提高呢,我改变了波特率,没变化
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2016-4-29
在线时间
28 小时
发表于 2019-11-7 14:47:31 | 显示全部楼层
主频达不到那么高要求
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-28 01:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表