历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2020年12月19日 | 低功耗红外音频功率放大器的设计

2020-12-19 来源:elecfans

本系统采用TI的MSP430F2013超低功耗单片机为控制核心,主要是用来作为红外信号的解码和对音频处理芯片的控制。音频处理和功放是采用maxim公司的MAX5406和MAX9763,能够实现对音量、均衡、低音和高音控制。同时系统具有温度保护功能,在芯片温度达到135摄氏度或以上,会自动关机,保护芯片不被烧坏


方案比较设计论证

方案一

采用TDA2030芯片,这种方案耗电大,功能少,故不采用。


方案二

采用MSP430,MAX5406,MAX9763三个芯片,以MSP430超低功耗单片机为控制核心,对MAX5406芯片进行控制,可以实现对系统音量,均衡,低高音,静音,开关机等控制。


实现功能不仅很多,而且系统也保持着非常低的功耗。


系统设计

低功耗红外音频功率放大器Low-power infrared remote control Audio Amplifier

系统框图如上

各芯片功能介绍

MSP430F2013是TI公司MSP430系列的一款超低功耗微控制器,它具有以下结构特点:16位的RISC CPU、16位的寄存器和常数发生器,可以获得很高的代码效率;五种低功耗模式,在便携式的测量应用中可以延长电池的使用寿命;数控振荡器(DCO)使得从低功耗模式切换到正常模式只要不到1μs;一个16位的定时器;WATCHDOG;10个I/O口;具备同步通信协议(SPI或者I2C);一个16位的Σ-Δ ADC。

低功耗红外音频功率放大器Low-power infrared remote control Audio Amplifier

MAX9763是立体声或单声3W桥接负载(BTL)音频功率放大器,立体声单端耳机放大器,同时也包含了耳机感应电路和一个2:1输入复用器。该系列器件采用4.5V至5.5V单电源工作,具有业界顶级的100dB电源抑制比,无需另加线性调节器就可直接使用充满噪声的电源工作。0.002%的超低THD+N确保对音频信号进行高保真放大。专有的咔嗒和噼噗声抑制技术可消除上电、断电时出现的杂音。节能方面的特性包括:低至4mV的VOS (最大限度减小了通过扬声器直流电流),消耗电源电流仅为13mA,关断模式下耗电仅10µA。MUTE (静音)功能能快速地打开或关闭输出。耳机感应电路可检测到耳机的接入,并自动将放大器配置为扬声器或耳机模式。在扬声器模式下,放大器可持续地向一个3 负载提供最高达3W的平均功率。在耳机模式下,放大器则可持续地向一个16 负载提供最高达200mW的平均功率。放大器的增益在外部设定,便于对给定负载提供最优化的输出电平。此组放大器还具有一个2:1的输入复用器,可实现多音频源之间的选择切换。还可以利用复用器,通过选择外部均衡网络,实现对扬声器有限的频响进行补偿。对各种功能的控制可以通过一个简单并行控制接口来完成。


下面是音频功放模块的电路图和PCB

低功耗红外音频功率放大器Low-power infrared remote control Audio Amplifier

低功耗红外音频功率放大器Low-power infrared remote control Audio Amplifier

MAX5406是一个立体声音频处理器它能够实现音量、均衡、音质、Ambience、静音、低音、高音、重低音、伪立体声控制。该器件具有双路32抽头对数数字电位器,用于音量控制,双路数字电位器,用于均衡控制,线性数字电位器用于音质控制。通过一个简单的去抖按钮接口控制所有功能。每一次按钮按下,MAX5406会改变其滑动端的设置。Maxim公司专有的SmartWiper技术无需微控制器(µC)即可提高滑动端的变化速率。如果保持控制输入为低的时间大于1s,则滑动端以4Hz的速率变化,若保持4s,则滑动端的变化速率增至16Hz。内置的咔哒/噼噗声抑制功能可以消除抽头跳变时出现的杂音。 MAX5406具有亚低音输出,内部混合左右声道的信号。外置滤波电容允许客户自行调整亚低音输出的截止频率。低音提升模式增强了左右声道的低频响应性能。内置的偏置放大器可生成所需的(VDD + VSS) / 2偏置电压,无需外部运算放大器即可实现单极性工作。 MAX5406还具有ambience控制功能,可增强耳机和台式机扬声器的左右声道输出的隔离度;同时还具有伪立体声特性,可使单声信号接近立体声效果。


下面是音频处理系统电路图和PCB

低功耗红外音频功率放大器Low-power infrared remote control Audio Amplifier

低功耗红外音频功率放大器Low-power infrared remote control Audio Amplifier

下面是程序流程图

低功耗红外音频功率放大器Low-power infrared remote control Audio Amplifier


开始


进入睡眠LPM模式


接收到红外信号


I/O口实现相应反转


解码,判断编码是否正确


否 是

附部分源代码:

#include

#include "ir_decode.h"

void Init_CLK(void);

unsigned int start;

unsigned int end ;

unsigned char ir_code;

unsigned char ir_systemcode;

unsigned char ir_repeat_num;

unsigned int ir_repeat = 0;

unsigned int ir_enable = 0;

static unsigned char ir_count = 0;

static unsigned int ir_pulse_width;

static union ir_code

{

unsigned char data8[4];

unsigned long int data32;

}ir;

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

P1SEL |= BIT2; //set P1.2 CCI1 input

Init_CLK(); //init clock

ir_pulse_width=end -start ;

_BIS_SR(LPM4_bits + GIE); // Enter LPM4 w/interrupt

}

void Init_CLK(void)

{

unsigned int i;

BCSCTL1 = 0X00; //将寄存器的内容清零

//XT2震荡器开启

//LFTX1工作在低频模式

//ACLK的分频因子为1

do

{

IFG1 = ~OFIFG; // 清除OSCFault标志

for (i = 0x20; i 0; i--);

}

while ((IFG1 OFIFG) == OFIFG); // 如果OSCFault =1

BCSCTL2 = 0X00; //将寄存器的内容清零

BCSCTL2 += SELM1; //MCLK的时钟源为TX2CLK,分频因子为1

BCSCTL2 += SELS; //SMCLK的时钟源为TX2CLK,分频因子为1

TACTL = TASSEL_2 + MC1 + ID_3 + TACLR; // SMCLK, up mode ,八分频

P1SEL =BIT2; //P1.2设置成功能模块

CCTL1 =CM0+SCS+CAP+CCIE; //上升沿捕获+同步捕获

}

#pragma vector=TIMERA0_VECTOR

__interrupt void Timer_A (void)

{

switch (TAIV)

{

case 2:

if(CCTL1CM0)

{

CCTL1=(CCTL1(~CM0)) | CM1;

start=CCR1; //将跳变为高电平时刻的计数值记下

}

else if (CCTL1CM1)

{

CCTL1=(CCTL1(~CM1)) | CM0;

end=CCR1; //将跳变为低电平时刻的计数值记下

TACTL |=TACLR; //将计数器清零

}

if(ir_count 32)

{

ir_count = 0;

return; //遥控第一次下降沿中断

}

//////////////////////////////////////////////////

if(ir_count == 0)

{

if((ir_pulse_width (13500-RANGE)) (ir_pulse_width (13500+RANGE)))

{

// ir_repeat = 0;//连续码

ir_count++;

return;//成功测到红外头,加1退出中断

}

if((ir_pulse_width (11250-RANGE)) (ir_pulse_width (11250+RANGE)))

{

ir_repeat = 1;//连续码

ir_succeed();

return;

}

ir_count = 33;

return;//没有测到正确红外头,清0退出中断

}

//////////////////////////////////////////////////

else

{

if((ir_pulse_width (1125-RANGE)) (ir_pulse_width (1125+RANGE)))

{

ir.data32 = 1;

if(ir_count == 32)ir_succeed();

ir_count++;

return;//读到0退出中断

}

if((ir_pulse_width (2250-RANGE)) (ir_pulse_width (2250+RANGE)))

{

ir.data32 = 1;

ir.data32 |= 0x80000000;

if(ir_count == 32)ir_succeed();

ir_count++;

return;//读到1退出中断

}

ir_count = 33;

return;//错误,清0退出中断

}

}

}

void ir_succeed()

{

if(1)//(IR_SYSCODE1 == *(ir.data8 + 3)) (IR_SYSCODE2 == *(ir.data8 + 2)))

{

if(*ir.data8 == ~(*(ir.data8 + 1)))

{

ir_code = *(ir.data8 + 1);

ir_systemcode = *(ir.data8 + 3);

ir_enable = 1;

if(ir_repeat)ir_repeat = 0;

else ir_repeat_num = 0;//连续码计数清0

}

}

}


推荐阅读

史海拾趣

杰力(EMC)公司的发展小趣事

杰力(EMC)公司成立于XXXX年,由一群具有丰富电子行业经验的专业人士创立。公司初期专注于功率组件和集成电路(IC)的设计与开发,以满足不断增长的电子市场需求。通过引进先进的生产设备和工艺,杰力迅速建立起一条高效的生产线,并开始为一些小型电子厂商提供定制化的产品。随着产品质量的不断提升和客户口碑的积累,杰力逐渐在市场中树立了良好的品牌形象。

Corning Cable Systems公司的发展小趣事

在技术创新方面,Corning Cable Systems公司积极与全球范围内的科研机构和企业开展合作。通过与这些合作伙伴的紧密合作,公司不断引进新技术、新工艺和新材料,推动光纤通信技术的不断进步。这些合作不仅增强了公司的技术实力,也为整个行业的发展注入了新的活力。

BITECH公司的发展小趣事

在追求经济效益的同时,Corning Cable Systems公司也积极履行社会责任,致力于推动绿色环保理念的实践。公司注重环保材料的选择和使用,并在生产过程中采取多项环保措施,以降低对环境的影响。此外,公司还积极推广绿色通信解决方案,为全球通信行业的可持续发展做出了积极贡献。

通过以上五个故事,我们可以看到Corning Cable Systems公司在电子行业中的发展历程和取得的成就。作为光纤通信领域的领军企业,公司凭借其创新技术、扩大生产规模、技术合作和绿色环保理念等方面的努力,不断推动着整个行业的进步和发展。

Gruner AG公司的发展小趣事
在信号处理电路中,光耦合器可以隔离噪声和干扰,确保信号的完整性和准确性。
Global Communications公司的发展小趣事
温度传感器的输出与温度之间的线性关系可能不理想,导致补偿效果不准确。此时,可以采用非线性补偿技术或选择具有更好线性度的温度传感器来解决问题。
E-CMOS(飞虹高科)公司的发展小趣事

在技术创新的同时,飞虹高科公司也积极拓展市场。然而,市场拓展的过程并非一帆风顺。公司面临着来自国内外众多竞争对手的激烈竞争,同时还要应对客户不断变化的需求。为了应对这些挑战,公司制定了一套完善的市场营销策略,积极参加国内外各类电子展会和技术交流活动,与客户建立了长期稳定的合作关系。同时,公司还不断优化产品性能和服务质量,提高客户满意度。通过这些努力,公司逐渐在市场上树立了良好的品牌形象。

问答坊 | AI 解惑

自制简易热风焊台

现代电子产品广泛采用表面焊接技术,这给维修人员拆卸元器件带来不便。特别是拆卸多引脚芯片和塑封无引脚芯片,更使无专用工具的维修人员感到无从下手。   当然,采用热风焊台,可使上述难题迎刃而解。但是,一台进口热风焊台价格昂贵,国产的热 ...…

查看全部问答>

VC++ --->> WinCE 的问题(对大家应该不会很难)

在VC中用到了一个类CxImage,编译和链接都没有问题,(*.lib的调用也正常)。但是把程序移植到WinCE中,在链接的时候总是出现这样的错误信息,这是什么原因呢? ximage.obj : error LNK2019: 无法解析的外部符号 \"public: void __cdecl CxImage::S ...…

查看全部问答>

EVC 提示错误 one or more file from the emulator for windows ce is missing.please ret

各位大虾们,帮帮菜鸟吧 刚装EVC,新建一工程编译后没问题,但出现报错 one or more file from the emulator for windows ce is missing.please retinstall emulator for window ce and try again。是什么意思啊?我重装好几次也是这样啊,难道与 ...…

查看全部问答>

怎么从/PROC/DEVICES中得到动态主设备号?脚本怎么样写,应该写在哪个文件里,怎么样在linux启动时运行这个脚本?谢谢!

怎么从/PROC/DEVICES中得到动态主设备号?脚本怎么样写,应该写在哪个文件里,怎么样在linux启动时运行这个脚本?谢谢!…

查看全部问答>

主机和目标机连接不上什么原因???????????????????????????

初学VXWORKS不太清楚是不是网卡驱动没有加载?ping也ping不通 我用ifShow显示: lo (unit number 0):      Flags: (0x8069) UP LOOPBACK MULTICAST ARP RUNNING      Type: SOFTWARE_LOOPBACK   ...…

查看全部问答>

电子膨胀阀驱动控制器

电子膨胀阀驱动控制器…

查看全部问答>

2418的电流过大问题太烦了。

现在重新测试,同样的板子,程序也一样。 用149一切正常, 换为2418,电流有1.3ma,而且会经常自动重启。。。 郁闷啊。。。。。。。 lierda的工程师们知道为什么吗?…

查看全部问答>

MC9S08QG8单片机实现单位时间捕获脉冲次数计数

最近正在做玩具智能车,不可避免的要用到单片机的捕获功能。 现想通过MC9S08QG8单片机实现单位时间捕获脉冲次数计数,来计算小车的速度。 问题卡在了捕获功能的实现上。   所用单片机:MC9S08QG8     8位机 实现功能 ...…

查看全部问答>

MSP430 ADC12 使用P6.1没有反应啊!很急啊 谢谢

/********************************************************* 程序功能:将ADC对P6.1端口电压的转换结果按转换数据在液晶上显示 **********************************************************/ #include #include \"allfunc.h\" #include \" ...…

查看全部问答>

ADI总结的放大器设计技术和放大器工艺

箝位放大器 箝位放大器允许设计人员指定高(VCH)和低(VCL)输出箝位电压,以使输出信号箝位在特定电平。与传统的输出箝位器件相比,ADI公司独特的CLAMPIN™输入箝位架构显著改善了箝位性能,箝位区的箝位误差和失真极小。 共模线性化放大器 ...…

查看全部问答>