1
1 引言
近几年来,我国汽车产业发展迅猛,汽车相关的电子产品市场日趋庞大。车载DVD作为新一代汽车影音市场消费潮流的代表,发展前景相当广阔。目前在中国销售的汽车影音系统以外资品牌居多,国内品牌较少。因此,研究并开发出一套有自主特色的车载DVD控制系统,有其实际应用价值。本文为此设计并实现一套基于凌阳单片机SPCE061A的车载多碟DVD播放器。
2 系统硬件
本文介绍的车载多碟DVD系统,其硬件结构图如图1所示:虚线右方为车载多碟DVD播放器的硬件结构框图,它以凌阳16位单片机SPCE061A为核心,集成了DVD控制模块、FM/AM收音模块、声音控制模块、LCD显示模块、键盘模块以及红外遥控处理模块;虚线左方为多碟DVD机盒,它受控于DVD播放器,负责音/视频解码,提供音频信号以及PAL/NTSC制式的视频信号,实时返回当前播放信息。
接下来介绍一下组成DVD播放器系统的几个主要功能模块。
2.1 微控制器SPCE061A
SPCE061A是凌阳科技推出的一款16位结构的微控制器。它功耗小,系统处于备用状态(睡眠状态)时的耗电仅为2μA/3.6V;内置2K字SRAM和32K字的FLASH;2个16位可编程定时器/计数器;2个10位DAC(数/模转换)输出通道;2个16位通用可编程输入/输出端口IOA和IOB;丰富的中断资源:定时器A/B中断、时基中断、2个外部中断以及触键唤醒中断;7通道10位电压模/数转换器(ADC)和单通道声音模/数转换器;具备串行设备接口(SIO);可通过锁相环PLL振荡器选择系统时钟信号;低电压复位功能和低电压检测功能;WatchDog功能等。与其它单片机相比,SPCE061A是一款资源丰富、功能强大、集成度高的微控制器,采用此款单片机作为本系统的微控制器具有较高的性价比。
2.2 面板模块
包括按键电路和红外接收电路两部分,其中键盘部分共有16个用户按键。为了合理利用SPCE061A的I/O端口资源和8路A/D资源,这里采用电阻阵列电路,当不同按键按下时得到不同的电压,并通过两路A/D (IOA2和IOA3)来采集按键的电压信号。由于部分按键具有长按/短按复用功能,因此设置一路A/D专门负责采集短按键信号,另一路A/D负责采集具有复用功能的按键信号,根据A/D转换得到的电压值,查表判别出对应的功能键值。
本系统的红外遥控码采用UPD6122编码方式,即引导码由一个9ms 的低电平和一个4.5ms 的高电平构成,紧跟引导码的是8位系统码、8位系统反码、8位功能码以及8位功能码的反码。红外接收电路将接收到的红外信号经过光电转换、解调以及整形,最终得到脉冲数据。连接红外码数据的IOB3(外部中断2)在常态下为高电平输入状态。当脉冲数据到达时,产生下降沿触发MCU外部中断2,这时启动定时器B开始接收串行遥控数据。
图1 系统硬件结构图
2.3 声音控制模块
声音控制模块分为声音控制器与功率放大器两部分,其中声音控制器的输出信号输入到功率放大器进行放大。本设计采用Philips公司的TEA6320芯片作为声音处理控制芯片。这是一款适用于车载音响电路的具有高保真度的声音衰减控制电路,通过I2C总线控制实现立体声预放大功能。它最多可有4路双声道的声音源输入和1路单声道的声音源输入,本系统共有三路声音源:DVD声音源、收音声音源和麦克风输入。
功率放大器选用TDA7384A芯片。该芯片适用于车载音响放大电路,能放大4路信号,具有失真小、输出噪声低、大功率输出(每路通道的功率可达35W/4Ω)等特点。此外,管脚ST-BY和MUTE可控制功率放大器的工作状态:当ST-BY和MUTE都为高电平,则功率放大器处于工作模式;当ST-BY和MUTE都为低电平,则功率放大器停止工作。
2.4 LCD显示模块
采用芯片CS1685作为液晶显示的驱动电路,直接驱动156段的LCD。本设计中将SPCE061A的串行设备输入输出端口SIO作为MCU与LCD之间的数据通信接口,以字节为单位连续发送显示数据。其中IOB0为时钟端口(SCK),IOB1为数据端口(SDA),分别与芯片的63脚CL(同步时钟)和64脚DI(传输数据)直接相连。
3 系统软件
3.1 软件结构设计
一个系统性能的好坏跟系统软件的整体设计密不可分。为了实现系统功能的稳定性和易扩展性,本系统软件设计遵循以下几点编程原理:
图2 系统主程序流程框图
(1)消息驱动的编程模式。整个软件系统由主程序、中断服务程序和功能子程序三大部分组成,其中中断服务程序仅负责设置标志位,向主程序的消息队列添加相应信息。主程序若检测到标志位,则执行对应功能。采用这种编程模式,大大减少了中断处理程序占用的时间,避免发生事件冲突,提高了系统响应的及时性和精确性。
(2)各个功能子程序模块化。功能块与功能块之间的信息通过入口参数、出口参数来传递,使模块间具有很好的独立性。
(3)主程序中,每次循环结束时清除看门狗计数器WatchDog,防止因异常情况而发生程序“跑飞”的现象。系统主程序设计流程框图如图2所示。
SPCE061A的系统时钟频率由32768Hz的实时时钟经过PLL倍频电路产生,通过对寄存器P_SystemClock单元编程可选择不同的系统时钟频率和CPU时钟频率。由于默认状态下系统时钟频率fosc=24.576 MHz,并且上电复位或系统从睡眠状态被唤醒后,默认的CPU时钟频率为fosc/8。考虑到系统的稳定性,本设计方案选用24.576 MHz作为系统时钟频率,fosc/8作为CPU时钟频率。
3.2 MCU与多碟DVD机之间的通信
车载多碟DVD播放器中,如何实时控制DVD机的播放/暂停、停止、选取上/下碟等功能是本设计的核心部分。DVD机与MCU之间的通信数据采用脉宽调制(PWM)波形,根据脉冲不同的宽度决定是“0”或是“1”。为了及时、准确地发送控制码,选择采用外部中断1(IOB2)和定时器A,实现控制码字的发送跟接收。发送控制字时,根据当前比特数据是“0”还是“1”,设置BUS电平为低或高,同时设置定时器的初始值,启动定时器。由于DVD机播放时,每隔1秒左右返回播放信息,如当前碟号、当前播放时间等。为了及时收到返回的信息,利用外部中断1下降沿触发方式,当有信息返回时,BUS线由常态高电平变为低电平,产生一个外部中断请求信号。MCU检测到外部中断信号,则开始接收数据。接收数据时,定时器用来计量相邻比特的间隔,判断是否接收超时。若在接收数据过程中进入定时器中断,则表示接收超时。
3.3 声音控制器程序设计
由于SPCE061A无I2C总线接口,所以分别用两个I/O口模拟I2C总线的数据线SDA和时钟线SCL,对TEA6320写入不同的控制字,实现音量控制、低音控制、高音控制、左右平衡/前后平衡控制、静音控制和响度开关控制等功能。I2C总线写入格式如图3所示,其中该芯片的从地址MAD为80H;子地址SAD从00H到07H,对应的寄存器依次为音量/响度(Vol/Loud)控制寄存器、前右声道(FFR)控制寄存器、前左声道(FFL)控制寄存器、后右声道(FRR)控制寄存器、后左声道(FRL)控制寄存器、低音(Bass)控制寄存器、高音(Treble)控制寄存器和声道选择(Switch)控制寄存器。SAD后的一个字节是写入相应寄存器的控制字。TEA6320提供三种静音方式:一种是利用管脚12实现硬件静音,一种是利用Switch控制字的最高位GMU直接实现整体静音,还有一种是由Vol/Loud控制字的最高位ZCM和GMU组合来实现静音功能。最后一种静音方式可实现直接静音或过零点静音。
图3 TEA6320 I2C总线控制字格式
各个功能的软件实现原理基本相同,这里只介绍TEA6320的初始化。图4是初始化的软件流程图。由于TEA6320在写入的数据超过1个字节时,子地址能自动递增,所以只要SAD取00H,8个控制字依次写入对应的控制寄存器即可完成。特别要注意,每次电路上电复位后,均要对TEA6320的8个寄存器初始化。初始化完毕,后续写入的控制字才会有效。
4 系统设计方案的独特性
4.1 节能设计
任何电子产品,节约能源永远是设计者追求的目标。利用SPCE061A的IOA0“IOA7触键唤醒功能,设置IOA2、IOA3作为采集键盘电压信号的两路A/D。若在一定时间间隔内没有按键按下,则关闭系统时钟(PLL振荡器),转入睡眠状态。若系统接收到唤醒信号,则接通PLL振荡器,同时CPU响应唤醒事件的处理。触键唤醒的设计方法降低了系统的功耗。
4.2 电源检测
由于车载电子工作环境的特殊性,供应的电源往往不稳定,尤其是电压过高时对车载电子器件的损伤较大。利用SPCE061A低电压复位(LVR)和低电压监测(LVD)功能,当检测到电源不稳或电压不在工作范围内时,显示屏提示电源错误的信息,系统进入关机模式,避免由于电源不稳造成器件的损坏。
4.3 软件更新
凌阳单片机SPCE061A内嵌有32K字的FLASH ROM,只要在电路面板上引出程序下载接口,可随时实现软件更新,软件升级相当方便。
4.4 实时音量显示
不同于市面上很多产品采用的音量模拟显示方式,本文介绍的系统能真实地反映出当前音量。通过对左右声道音量的电压采集以及AD转换,在LCD的音量指示区实时准确地显示音量大小。
5 结束语
本文介绍的车载多碟DVD播放器系统实现了设计模块化、通用化,同时亦具有自身的特色。目前整个系统已经顺利通过测试阶段,现场测试结果令人满意。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !