OpenEdv-开源电子网

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

STM32 DAC 音频音质不清晰求解

[复制链接]

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2014-7-20
在线时间
11 小时
发表于 2016-9-1 17:20:00 | 显示全部楼层 |阅读模式
5金钱
      STM32F103VCT6 用DAC通道1的直接输出wav音频数据后,出现破音现象。在DAC引脚输出后,经过两级无源低通滤波(截止频率10k),一级有源低通滤波(截止频率10k),再接功放电路。

贴上代码
//dac初始化
void DAC_Configuartion(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;   


        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);       
       
        //??TX PIN???
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;         //PA4
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;   // GPIO_Mode_AIN
        GPIO_Init(GPIOA, &GPIO_InitStructure);               

        DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software;//DAC_Trigger_Software;
        DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
        DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits8_0;//DAC_LFSRUnmask_Bit0;
        DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
        DAC_Init(DAC_Channel_1, &DAC_InitStructure);
        DAC_Cmd(DAC_Channel_1, ENABLE);  
       
  
          
        //DAC_SetChannel1Data(DAC_Align_12b_R,4000/*0x0000*/);

        //DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}


void TIM_Configuration(void)
{
                TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        //        GPIO_InitTypeDef GPIO_InitStructure;  
       
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
                //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
       
                //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 |GPIO_Pin_3;//PA0,PA1,PA2,PA3  
                //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//?????????            
                //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
                //GPIO_Init(GPIOA, &GPIO_InitStructure);  

                TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
                TIM_TimeBaseStructure.TIM_Period = 125;//GetARRValue(8000);//80;
                TIM_TimeBaseStructure.TIM_Prescaler = 71;//0;//;
                TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
                TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
                TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);//
                TIM_ClearITPendingBit(TIM6, TIM_IT_Update); //Çå3y¸üDÂÖD¶Ï±êÖ¾
        //        TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); //éèÖøúDÂê¼t
                TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE); //ê1Äüdma
}



void TIM6_IRQHandler(void)
{
        if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)
        {
       
        }
        if(0 == is_finish)
        {
                DAC_SetChannel1Data(DAC_Align_12b_R, (((u8)(p_test1[a1+1]-0x80)<<4)|(p_test1[a1]>>4)));
                DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
                a1 += 2;
                if(a1 >= 320)
                {
                        a1 = 0;
                        is_finish = 1;
                }
        }


        TIM_ClearITPendingBit(TIM6, TIM_IT_Update);
}

软件调试过程,各段频率多试过。。出现结果语音播放快慢。 dac 波形输出波形,三角波,方波,及其附带参数也调过。。 没多大用。
硬件方面,增加各种滤波,用示波器看可以看出波形比较圆滑。

经过以上调试,输出音质还是不行,没有杂音,破音。。。
求各路大神解。。。。。

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

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2014-7-20
在线时间
11 小时
 楼主| 发表于 2016-9-2 12:40:12 | 显示全部楼层
回复

使用道具 举报

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
发表于 2016-9-2 13:55:58 | 显示全部楼层
为啥不直接上解码芯片呢,方便又实惠。
活到老,学到老。
回复

使用道具 举报

6

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2016-6-29
在线时间
58 小时
发表于 2016-9-2 14:24:14 | 显示全部楼层
有考虑过音源的问题嘛?如果音源里边有很多连续的低频信号那也有可能破音的
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2014-7-20
在线时间
11 小时
 楼主| 发表于 2016-9-2 14:42:11 | 显示全部楼层
kingnike 发表于 2016-9-2 13:55
为啥不直接上解码芯片呢,方便又实惠。

是软解码的,用STM32内置的DAC软解码出来的音频,然后通过一阶低通滤波后直接接功放电路的
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2014-7-20
在线时间
11 小时
 楼主| 发表于 2016-9-2 14:46:47 | 显示全部楼层
Clivia 发表于 2016-9-2 14:24
有考虑过音源的问题嘛?如果音源里边有很多连续的低频信号那也有可能破音的

我们用示波器看了DAC输出的原始波形和一阶低通滤波后的波形,没发现有其他低频信号

DAC原始波形

DAC原始波形

一阶滤波后的波形

一阶滤波后的波形
回复

使用道具 举报

6

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2016-6-29
在线时间
58 小时
发表于 2016-9-2 15:06:27 | 显示全部楼层
会偶一笑 发表于 2016-9-2 14:46
我们用示波器看了DAC输出的原始波形和一阶低通滤波后的波形,没发现有其他低频信号

你看过你们的电源波动吗?用别的音源接功放没有杂音的吗?如果别的音源没问题的话可以再检查下stm32和功放是不是共地的。
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2014-7-20
在线时间
11 小时
 楼主| 发表于 2016-9-2 17:04:40 | 显示全部楼层
Clivia 发表于 2016-9-2 15:06
你看过你们的电源波动吗?用别的音源接功放没有杂音的吗?如果别的音源没问题的话可以再检查下stm32和功 ...

我换成电池供电也是一样的问题,应该不是电源问题,功放的地是从STM32主板来的,共地了的
回复

使用道具 举报

6

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2016-6-29
在线时间
58 小时
发表于 2016-9-2 17:10:36 | 显示全部楼层
会偶一笑 发表于 2016-9-2 17:04
我换成电池供电也是一样的问题,应该不是电源问题,功放的地是从STM32主板来的,共地了的

所以是功放接别的音源没问题嘛?没杂音的?
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2014-7-20
在线时间
11 小时
 楼主| 发表于 2016-9-2 17:57:31 | 显示全部楼层
Clivia 发表于 2016-9-2 17:10
所以是功放接别的音源没问题嘛?没杂音的?

我把功放电路接到其他音源是没问题的,没杂音,也没有出现破音
回复

使用道具 举报

6

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2016-6-29
在线时间
58 小时
发表于 2016-9-3 10:03:25 | 显示全部楼层
会偶一笑 发表于 2016-9-2 17:57
我把功放电路接到其他音源是没问题的,没杂音,也没有出现破音

比较过其他音源和stm32音源在功放电路前端波形的差距吗?有没有可能是stm32输出的功率太大了。
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2014-7-20
在线时间
11 小时
 楼主| 发表于 2016-9-3 19:40:16 | 显示全部楼层
Clivia 发表于 2016-9-3 10:03
比较过其他音源和stm32音源在功放电路前端波形的差距吗?有没有可能是stm32输出的功率太大了。

和MTK的比较过,MTK的DAC输出的波形也不是很好,但是它的声音清晰很多。我看了一下他们的频率是差不多的,其他的参数就没怎么比较了
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-9-14
在线时间
4 小时
发表于 2016-9-4 00:28:50 | 显示全部楼层
DAC的值太大了,缩小下
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2014-7-20
在线时间
11 小时
 楼主| 发表于 2016-9-5 08:35:52 | 显示全部楼层
happy阻电 发表于 2016-9-4 00:28
DAC的值太大了,缩小下

把DAC的值变小点,只是声音小声而言,但是破音的现象还是有的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 11:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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