OpenEdv-开源电子网

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

STM32驱动M62429音量控制芯片控制不了音量大小附上程序用别人的求解答

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2017-6-21
在线时间
6 小时
发表于 2017-8-1 14:43:51 | 显示全部楼层 |阅读模式
1金钱
//////////////////////////////////////////////////////
//电子音量控制芯片M62429驱动函数
//////////////////////////////////////////////////////
#include "delay.h"
#include "m62429.h"

//////////////////////////////////////////////////////
//定义音量控制数值表(递减顺序,即按datasheet上排序)
//////////////////////////////////////////////////////
u16 Volume_L[] = {0x0003,0x0001,0x0002,0x0000};
        /*D7~D8数值:  0dB,   -1dB,  -2dB,  -3dB        */

u16 Volume_H[] = {        /*D2~D6数据*/
                                                                0x0015,0x0005,0x0019,0x0009,       
                                                        /*          0db,  -4db,  -8db,  -12db        */
                                                                0x0011,0x0001,0x001e,0x000e,       
                                                        /*   -16db, -20db, -24db, -28db        */
                                                                0x0016,0x0006,0x001a,0x000a,       
                                                        /*   -32db, -36db, -40db, -44db        */
                                                                0x0012,0x0002,0x001c,0x000c,       
                                                        /*   -48db, -52db, -56db, -60db        */
                                                                0x0014,0x0004,0x0018,0x0008,       
                                                        /*   -64db, -68db, -72db, -76db        */
                                                                0x0010,0x0000};                                       
                                                        /*   -80db, -84db        */

//////////////////////////////////////////////////////
//初始化数据传送接口

void M62429_GPIOInit(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);        //开启GPIOD外设时钟       

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;        /*        初始化GPIOx.5---------->m62429_sda---->PD.4
                                                                                                                                                                                m62429_scl---->PD.5
                                                                                                                        */
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;        //GPIO翻转速度为2MHz
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //设置为推挽输出
        GPIO_Init(GPIOD, &GPIO_InitStructure);        //初始化GPIO相关结构体

        GPIO_SetBits(GPIOD, GPIO_Pin_4);        //PD.4输出高电平

        GPIO_SetBits(GPIOD, GPIO_Pin_5);        //PD.5输出高电平
}


//////////////////////////////////////////////////////
//发送音量控制数值到m62429
//Vol_dat:音量控制字节(十进制)0 ≤ Vol_dat ≤ 84
//                        最大值为:0dB
//                        最小值为:-84dB

void M62429_Write_Byte(u8 Vol_dat,u8 sum)        /*        Vol_dat为音量数据(十进制)
                                                                                                sum为通道选择数,        sum = 0 选择的是两通道同时在线
                                                                                                                                        sum = 1 选择的是通道1在线
                                                                                                                                        sum = 2 选择的是通道2在线
                                                                                        */                               
{
        static u8 Send_bit;
        static u16 channel_value;
        static u16 volume_temp1,volume_temp2;
        static u16 M62429_VolumeDATA;

        switch(sum)                /*        choice audio channel        */
        {
                case 0:                /*        both channel at a time        */
                                        channel_value = Both_Channel_Value;
                                        break;

                case 1:                /*        one channel at at time        */
                                        channel_value = One_Channel_Value;
                                        break;

                case 2:                /*        two channel at a time        */
                                        channel_value = Two_Channel_Value;
                                        break;

                default:
                                        channel_value = Both_Channel_Value;        //default is both channel at a time
                                        break;
        }

        volume_temp1 = Volume_H[Vol_dat / 4];        //D2~D6
        volume_temp2 = Volume_L[Vol_dat % 4];        //D7~D8

/*          总音量控制字节    |   D2 ~ D6控制位   |    D7、D8控制位     | 通道设置控制  | D9、D10控制位                */
        M62429_VolumeDATA = (volume_temp1 << 9) + (volume_temp2 << 7) + channel_value + Control_D9D10;                //count the 11bits volume data

        for(Send_bit = 0;Send_bit < 11;Send_bit++)
        {
                m62429_sda = 0;        //解锁数据传送限制
                delay_us(2);
                m62429_scl = 0;
                delay_us(2);
                if((M62429_VolumeDATA & 0x8000) == 0x8000)        m62429_sda = 1;
                else        m62429_sda = 0;
                delay_us(1);
                m62429_scl = 1;        //send the bit
                delay_us(2);
                M62429_VolumeDATA <<= 1;
        }
        /*        数据发送完成,冻结数据传送接口        */
        m62429_sda = 1;
        delay_us(2);
        m62429_scl = 0;        //时钟线下降沿上锁
        delay_us(2);
        m62429_scl = 1;
}


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

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2017-8-4
在线时间
15 小时
发表于 2017-8-4 14:38:39 | 显示全部楼层
M62429是不是5V版的,好像有L是3.3V版的,STM32是3.3的吧???
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165462
金钱
165462
注册时间
2010-12-1
在线时间
2114 小时
发表于 2017-8-7 02:15:09 | 显示全部楼层
帮顶
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-20 09:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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