找回密码
 立即注册
查看: 416|回复: 6

ADC转换音频的问题

[复制链接]
  • TA的每日心情
    开心
    昨天 06:39
  • 签到天数: 58 天

    [LV.5]常住居民I

    10

    主题

    153

    回帖

    376

    积分

    中级会员

    积分
    376
    发表于 2023-6-21 09:16:03 | 显示全部楼层 |阅读模式
    用p1.3口接入音频信号,ADC3通道转换,为什么没ADC好象没转换成功?


    void ADC_Config()
    {

            P1M1 = 0x08;P1M0 = 0x00;                // P1.3设置为高阻输入模式

            ADCTIM = 0x3F;                                                        // ADC时序设置:通道选择时间:1个时钟,通道保持时间:4个时钟,采样时间:32个时钟
            ADCCFG = 0x2F;                                                        // ADC频率设置:系统时钟/2/16,数据右对齐
            ADC_CONTR = 0xC3;

    }


    void main()                                                                    
    {
           

            ADC_Config();
           
             WS2812_Init();
       int N=64,i;                                                             //变量初始化,64点FFT运算
            float offset;

    while(!(ADC_CONTR & 0x20));
            offset=((float)ADC_RES*4+(float)(ADC_RESL%0x04)); //AD结果高8位左移2位,低2位不变,然后相加
           
            while(1)
            {       

                            for(i=0;i<N;i++)                                      //采集音频信号
                              {
                           
                                    while(!(ADC_CONTR & 0x20));
                                            ADC_CONTR &= ~0x20;
                                       s[i].real=((float)ADC_RES*4+(float)(ADC_RESL%0x04)-offset)/4;//((((int)ADC_DATA-128)/2))*4;
                                       s[i].imag=0;
                              }  
                              FFT(s,N);                                       //调用FFT函数进行变换
                              showbar();                                                        //显示频谱       
                   

            }
    }

    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 06:39
  • 签到天数: 58 天

    [LV.5]常住居民I

    10

    主题

    153

    回帖

    376

    积分

    中级会员

    积分
    376
     楼主| 发表于 2023-6-21 09:24:59 | 显示全部楼层
    关闭ADC就显示正常,加入ADC程序就没反映
    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 06:39
  • 签到天数: 58 天

    [LV.5]常住居民I

    10

    主题

    153

    回帖

    376

    积分

    中级会员

    积分
    376
     楼主| 发表于 2023-6-21 09:26:48 | 显示全部楼层
    ADC设置应该问题啊,应该是启动转换,但是就是运行不了
    专注LED灯控,25年LED从业经验,因为专注所以专业,欢迎大家沟通交流!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:46
  • 签到天数: 44 天

    [LV.5]常住居民I

    5

    主题

    114

    回帖

    1110

    积分

    版主

    积分
    1110
    发表于 2023-6-30 11:30:48 | 显示全部楼层
    楼主用的是什么型号呢,建议使用我们范例程序先测试下

    1.png 2.png

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3043

    回帖

    6861

    积分

    超级版主

    积分
    6861
    发表于 2023-7-12 10:41:33 | 显示全部楼层
    楼主可以参考下面FFT频谱的程序:
    FFT频谱分析-STC32F12K54, USB-CDC虚拟串口送电脑显示
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2808
    (出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    5

    主题

    89

    回帖

    407

    积分

    中级会员

    积分
    407
    发表于 2023-8-7 08:28:00 | 显示全部楼层
    梁工 发表于 2023-7-12 10:41
    楼主可以参考下面FFT频谱的程序:
    FFT频谱分析-STC32F12K54, USB-CDC虚拟串口送电脑显示
    https://www.stcai ...

    STC32F12K54 极限浮点乘法每秒可以达到多少?
    拟用F12K54 作I2S和模拟采集,重采样和音频处理。然后usb/spi输出
    如果浮点乘法够快,我可以把音频编码也放进去。请梁工指点一下?
    如果浮点不够快,改定点乘法也有机会但是算法要改,可能对精度也有一点影响。
    如果也想知道,定点乘法速度多少?
    手册上虽然有指令集的机器周期说明,但是实际的情况作过FFT的你应该是最清楚的。谢谢啦

    点评

    复利计算来测试乘法速度: for(ex=12.01f,fx=1.01f, i=0; i  详情 回复 发表于 2023-8-7 10:33
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3043

    回帖

    6861

    积分

    超级版主

    积分
    6861
    发表于 2023-8-7 10:33:01 | 显示全部楼层
    13918210822 发表于 2023-8-7 08:28
    STC32F12K54 极限浮点乘法每秒可以达到多少?
    拟用F12K54 作I2S和模拟采集,重采样和音频处理。然后usb/s ...

    复利计算来测试乘法速度:
    for(ex=12.01f,fx=1.01f, i=0; i<1000; i++)        //1000次浮点运算 @60MHz 打开Cache. 加载硬件浮点库: 585us(包括IO驱动指示、循环控制)。
    {
          P01 = 1;       //用于示波器看速度
          ex = ex * fx; // STC32F @60MHz 打开Cache,, 加载硬件浮点库: 0.500~0.600us计算一次浮点乘法.
          P01 = 0;
    }

    FFT计算幅度:
    for(i=0; i<LENGTH; i++)
    {
          FFT_A = FSqrtRoot((long)FFT_Real*FFT_Real + (long)FFT_Image*FFT_Image);                   //计算模值, STC32F @60MHz 打开Cache, 加载硬件浮点库+整数库: 286us, 2.234us/次.
    }


    你的音频编码不知道用的什么编码?对于我们的单片机,合适的音频编码有:PCM、DPCM、ADPCM、DM、mu-law、A-law、CVSD,那些压缩大、计算量大的算法(比如MP3),STC32F也支持不了的。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-19 10:32 , Processed in 0.119251 second(s), 60 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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