M62429驱动笔记

M62429驱动笔记

M62429是一款串行数据控制的双声道电子音量控制器芯片,它的规格书(中文),三菱(英文), RENESAS(英文)

1.功能框图

在这里插入图片描述

2.引脚说明

在这里插入图片描述

Pin no.SymbolFunction
1VIN 1声道 1 输入脚
2VOUT1声道 1 输出脚输
3GND
4DATA控制数据输入脚,与时钟同步数据输入脚
5CLOCK传输串行数据地时钟入脚
6VCC电源,必须接滤波容到地电源
7VOUT2声道 2 输出脚
8VIN2声道 2 输入脚输

3.驱动电路

在这里插入图片描述

详细说明见规格书。

4.驱动数据说明

要想驱动M62429,需要在CLOCK发出11个周期时钟,DATA脚发出11位数据

D0D1D2D3D4D5D6D7D8D9D10
0/10/1---音量---11

其中:

BIT说明
D00:选择声道1
1:选择声道2
D10:同时控制两个声道
1:只能控制一个声道
D2~D8音量控制码,Volume 0 to -83dB (1dB/step), -∞
D9默认为1,不可改变
D10默认为1,不可改变

在这里插入图片描述

音量控制器可以将声音衰减0 ~ -83dB,其中D2~D6控制步长为4dB,加上D7、D8才能达到控制步长为1dB的要求;

最大音量时衰减值为0dB,即D2 ~ D8的数据为:1010111,假如只使用通道1,只控制一个声道,则D0~D10为:01101011111;

再例如将音量衰减值-36dB,D2 ~ D8为:0011011,则D0~D10为:01001101111,D0在低位,D10在高位,在计算器中得出数据为: 0x7B2,使用单片机驱动音量控制芯片时,DATA上发送的数据为0X07B2。

在这里插入图片描述

端口仿真波形:

在这里插入图片描述

5.驱动例程

这里给出两种实现的方法:

A.取0 ~ -83dB内的数据,将D0、D1、D2~D8全部预定义好,整成一个数组,设置音量时,直接在数组内取值,使用IO口将数据发送出去;

// 第一级音量定义
#define    MainVol_0dB            0x15      // 0dB
#define    MainVol_n4dB           0x14      // -4dB
#define    MainVol_n8dB           0x13      // -8dB
#define    MainVol_n12dB          0x12      // -12dB
#define    MainVol_n16dB          0x11      // -16dB
#define    MainVol_n20dB          0x10      // -20dB
#define    MainVol_n24dB          0x0F      // -24dB
#define    MainVol_n28dB          0x0E      // -28dB
#define    MainVol_n32dB          0x0D      // -32dB
#define    MainVol_n36dB          0x0C      // -36dB
#define    MainVol_n40dB          0x0B      // -40dB
#define    MainVol_n44dB          0x0A      // -44dB
#define    MainVol_n48dB          0x09      // -48dB
#define    MainVol_n52dB          0x08      // -52dB
#define    MainVol_n56dB          0x07      // -56dB
#define    MainVol_n60dB          0x06      // -60dB
#define    MainVol_n64dB          0x05      // -64dB
#define    MainVol_n68dB          0x04      // -68dB
#define    MainVol_n72dB          0x03      // -72dB
#define    MainVol_n76dB          0x02      // -76dB
#define    MainVol_n80dB          0x01      // -80dB

// 第二级音量定义
#define    SubVol_0dB             0x03      // 0dB
#define    SubVol_n1dB            0x02      // -1dB
#define    SubVol_n2dB            0x01      // -2dB
#define    SubVol_n3dB            0x00      // -3dB

#define    _1CH              0x00
#define    _SINGLE           0x01

// 音量调节最大0dB, 最小-80dB, 分成12步
const uint  VolumeTable[] = {
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_0dB << 7) | (MainVol_0dB << 2)),        // 0dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_n2dB << 7) | (MainVol_0dB << 2)),       // -2dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_0dB << 7) | (MainVol_n4dB << 2)),       // -4dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_n2dB << 7) | (MainVol_n4dB << 2)),      // -6dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_n1dB << 7) | (MainVol_n8dB << 2)),      // -9dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_0dB << 7) | (MainVol_n12dB << 2)),      // -12dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_n2dB << 7) | (MainVol_n16dB << 2)),     // -18dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_0dB << 7) | (MainVol_n24dB << 2)),      // -24dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_0dB << 7) | (MainVol_n36dB << 2)),      // -36dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_0dB << 7) | (MainVol_n48dB << 2)),      // -48dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_0dB << 7) | (MainVol_n60dB << 2)),      // -60dB
  (0x0600 | _1CH | (_SINGLE << 1) | (SubVol_0dB << 7) | (MainVol_n80dB << 2)),      // -80dB
};

/*
************************************************************************************************************************
**函数原型:  	void VolumeSet(uchar VolIndex)
**参数说明:  	VolIndex: 音量调节
**返回值:    	无
**说明:			该函数用于控制音量的大小,一共12项选择
************************************************************************************************************************
*/
void VolumeSet(uchar VolIndex)
{
	uint Dat;
	uchar i;

	// 音量调节最大0dB, 最小-80dB, 分成12步
	Dat = VolumeTable[VolIndex];

	for(i=0;i<10;i++)	//发送10位数据,共11位,最后1位另外发
	{
		SDA_VOL=Dat&0x01;
		SCL_VOL=1;
		DELAY5US();
		SDA_VOL=0;
		SCL_VOL=0;
		Dat>>=1;
	}
	SDA_VOL=1;		//最后1位D10 = 1
	SCL_VOL=1;
	DELAY5US();
	SCL_VOL=0;
}

SDA_VOL和SCL_VOL是单片机的输出脚,连接CLOCK和DATA,例如51中,定义为:

// M62429 IO 定义
sbit 	SDA_VOL 	= P2^2;
sbit 	SCL_VOL		= P2^1;

调用函数

VolumeSet(8);		//设置音量大小

B.将需要设置的音量根据规格书的说明,一一换算出来。

// ----------------- M62429 D0 控制位 --------------------------------
#define	M62429_D0_SW_0		0x0	//选择声道1
#define	M62429_D0_SW_1		0x1	//选择声道2

// ----------------- M62429 D1 控制位 --------------------------------
#define	M62429_D1_SW_0		(0x0 << 1)	//同时控制两个声道
#define	M62429_D1_SW_1		(0x1 << 1)	//只能控制一个声道

/*
************************************************************************************************************************
**函数原型:  	void VolSet(uchar ChnSet, uchar Volume)
**参数说明:  	ChnSet: 通道控制(bit 0:D0,bit 1: D1)
				Volume: 音量控制,实际是0 ~ -83dB(1dB/step)
**返回值:    	无
**说明:			该函数用于控制音量的大小
************************************************************************************************************************
*/
void VolSet(uchar ChnSet, uchar Volume)
{
	/* m62429数据格式(D0~D10)
	D0: 0:1CH / 1:2CH
	D1: 0: Both channels at a time / 1: A channel at a time
	D2~D6: 音量控制码(-4dB步进)
	D7~D8: 音量控制码(-1dB步进)
	D9:1
	D10:1
	*/
	uint Dat;
	uchar i;
	Volume=87-Volume;  //加上此句最大为0dB,最小为87dB
	
	Dat=0x600|(Volume&0xfc)|((Volume&0x03)<<7);  //音量合并成控制数据,查看DATASHEET
	Dat=Dat|(ChnSet&0x03);	//音量与通道控制合并成控制数据,查看DATASHEET

	for(i=0;i<10;i++)        //发送10位数据,共11位,最后1位另外发
	{
		SDA_VOL=Dat&0x01;
		SCL_VOL=1;   
		_nop_();
		_nop_();
		_nop_();
		SDA_VOL=0;  
		SCL_VOL=0;    
		Dat>>=1;
	}
	SDA_VOL=1;	//最后1位D10 = 1
	SCL_VOL=1;
	_nop_();
	_nop_();
	_nop_();
	SCL_VOL=0;
}

调用函数

VolSet(M62429_D0_SW_0|M62429_D1_SW_1, 36);//设置音量大小

两种方法实现的效果是一样的。

  • 9
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要下载小米笔记本无线网卡驱动,您可以按照以下步骤进行操作: 1. 首先,您可以尝试从小米官方网站下载无线网卡驱动程序。您可以访问小米官方网站并在支持页面中找到您的笔记本型号。然后,在相关的驱动程序下载页面中查找无线网卡驱动程序。您可以选择适合您操作系统版本的驱动程序并下载它。 2. 如果您无法从小米官方网站获取所需的驱动程序,您还可以尝试从第三方驱动程序下载网站获取无线网卡驱动程序。请注意,从第三方网站下载驱动程序时,确保选择可信赖和可靠的网站,并仔细检查下载的驱动程序与您的笔记本型号和操作系统的兼容性。 3. 另外,如果您在以上方法中仍然无法找到适合您的无线网卡驱动程序,您可以尝试使用驱动人生或驱动精灵等驱动程序管理工具来自动检测并下载适合您的无线网卡驱动程序。这些工具可以帮助您自动识别和下载最新的驱动程序。 请注意,在下载和安装驱动程序之前,建议您备份您的数据,并确保您的计算机与互联网连接稳定。此外,在安装驱动程序之前,您可能需要卸载旧的驱动程序版本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [小米笔记本无线网络打不开怎么办](https://blog.csdn.net/weixin_39656174/article/details/116967004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [TP-LINK 300M USB无线网卡 TL-WN823N 台式机 笔记本 迷你wif unbuntu 驱动](https://download.csdn.net/download/u011803898/11058850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [小米笔记本网卡驱动失效,无法联网](https://blog.csdn.net/fac613/article/details/80767183)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值