一种控制线性马达振动的方法 【技术领域】
本发明涉及信号处理技术领域,尤其涉及一种控制线性马达振动的方法。
背景技术
目前,随着移动终端(如手机终端)的发展,振动功能得到了越来越广泛的应用,由于通过控制普通马达来实现移动终端的振动,在技术实现上简单易行,因此,目前,实现移动终端的振动最主要的方式为通过控制普通马达来实现:通过主处理芯片发送的GPIO(General Purpose Input Output,通用输入输出)信号控制普通马达振动,若GPIO为高电平时,马达振动,GPIO为低电平时,马达停止振动。但普通马达的反应速度较慢,因此振动延时较大,并且仅有振动与不振动两种状态,振动方式灵活性差,振动效果比较单调;而线性马达则反应迅速,寿命长,而且可以实现更丰富的振动效果,在移动终端采用线性马达来实现振动功能得到了较为广泛的应用。
目前,线性马达的工作原理为:采用PWM(Pulse Wideth Modulation,脉冲宽度调制)+专用驱动芯片(如ISA1200芯片)来控制线性马达振动,通过主处理芯片(如Marvell公司的PXA270芯片)的PWM功能输出22.4KHz的方波,该方波经过外部电路整形为正弦波之后发送至专用驱动芯片,由该专用驱动芯片调整该正弦波的占空比,将调整后的正弦波发送至线性马达的驱动芯片以控制线性马达振动。
目前,通过专用驱动芯片调整正弦波的占空比来控制线性马达按特定的规律振动,以实现丰富的振动效果,但由于这种通过专用驱动芯片来调整PWM输出波形的占空比来驱动线性马达按不同的规律振动的方式,需要在现有的移动终端增加专用驱动芯片才能够实现,即需要对现有的移动终端进行改进,不仅增加了成本,而且对线性马达振动进行控制的难度较大。
【发明内容】
本发明实施例针对上述问题,提供一种控制线性马达振动的方法,以解决现有技术中对线性马达振动进行控制需要改进现有的移动终端而导致对线性马达振动进行控制的难度较大的问题。
一种控制线性马达振动的方法,包括:
生成单声道音频数据;
主处理芯片将所述单声道音频数据发送至音频编解码芯片;音频编解码芯片将所述单声道音频数据转换成模拟信号后发送至线性马达,以驱动线性马达根据该模拟信号振动;
主处理芯片获取触屏点的压力值,根据获取到的所述压力值对所述音频编解码芯片的输出增益进行调整;
所述线性马达根据调整后的输出增益调整振动强度。
本发明实施例中,生成单声道音频数据,采用音频编解码芯片对该单声道音频数据进行数模转换后发送至线性马达,以驱动线性马达振动;在线性马达振动之后,中断处理程序获取触屏点的压力值,并根据获取到的压力值调整音频编解码芯片的输出增益,并控制线性马达按照音频编解码调整后的输出增益调整振动强度。采用本发明技术方案,通过移动终端中现有的音频编解码芯片控制线性马达振动以及振动强度;而不需要增加专用驱动芯片来对主处理芯片输出的波形的占空比进行调整,根据调整后的波形驱动线性马达振动,因此,本发明技术方案不需要对现有的移动终端进行改进即可实现对线性马达振动的控制,在实现丰富的振动效果的同时,还降低了对线性马达振动进行控制的难度。
【附图说明】
图1为本发明实施例控制线性马达振动的结构示意图;
图2为本发明实施例中采用WM9713芯片控制线性马达振动的流程图;
图3为本发明实施例中主处理芯片向MODR写入和读取数据的结构示意图;
图4为本发明实施例中WM9713芯片播放立体声音频数据与单声道音频数据的结构示意图。
【具体实施方式】
下面结合说明书附图对本发明实施例进行详细的描述。
参见图1,为本发明实施例中控制线性马达振动的结构示意图,该图中上层应用主处理芯片(如PXA270芯片)中的AC97(AC97为Audio Codec97的缩写,AC97一种规范)控制器包括MODR(Modem Data Register,调制解调数据寄存器),AC97控制器与音频CODEC(Coder/DECoder,编解码器)芯片通过AC97_LINK总线(AC97_LINK总线包括AC_97_reset总线、AC97_SDATA_OUT总线、AC97_SYNC总线、AC97_SDATA_IN_0总线以及AC97_BITCLK总线)进行信息交互,如AC97控制器通过AC_97_reset总线向CODEC芯片发送复位信号,通过AC97_SDATA_OUT总线发送立体声音频数据与单声道音频数据,通过AC97_SYNC总线发送帧同步信号;CODEC芯片向AC97控制器通过AC97_SDATA_IN_0总线发送音频数据,通过AC97_BITCLK总线发送时钟信号。CODEC芯片将接收到的立体声音频数据发送子数模转换器,转换成模拟信号,并将该模拟信号进行混频处理之后通过CODEC芯片的左(右)声道进行播放;将接收到的单声道音频数据发送至数模转换器,转换成模拟信号,并将该模拟信号进行混频处理后通过右(左)声道发送至线性马达,以驱动线性马达振动。
AC97控制器与CODEC芯片之间通过AC97_SDATA_OUT或AC97_SDATA_IN_0传输音频数据,需要遵守AC-LINK数字序列接口协议,如:将每256位数据组成一个数据帧,一个数据帧划分为13个时隙(用slot表示),其中,slot0被称为tag phase,其包含16bit;slot1~slot12被称为data phase,每个时隙包含20bit;slot1和slot2用于从CODEC芯片的寄存器读取数据或向CODEC芯片的寄存器写入数据:slot1为CODEC芯片的寄存器地索引值,slot2用于存储需要读/写的数据;slot3和slot4用于存储CODEC芯片的左、右声道的立体声音频数据,slot5用于存储单声道音频数据。
为了更加清楚和详细地描述本发明技术方案,下面以CODEC芯片采用WM9713芯片(WM9713芯片既具有播放立体声音频数据的功能,还具有播放单声道音频数据的功能)为例对本发明技术方案进行较为详细的描述。
参见图2,为本发明实施例中控制线性马达振动的流程图,该流程包括以下步骤:
步骤201、移动终端的操作系统生成单声道音频数据(如PCM(Pulse CodeModulation,脉冲码调制)格式的数据),由主处理芯片通过DMA(DirectMemory Access,直接存储存取)直接向AC97控制器的MODR写入该PCM格式的数据。
该步骤中,生成的PCM格式的数据的频率一般取值为当前选定的线性马达的工作点频率(线性马达在该频率工作时,振动效果较佳),如当前选用的线性马达的工作点频率为175Hz,则生成的PCM格式的数据的频率约为175Hz。
较佳地,为了进一步提高线性马达的振动效果,该PCM格式数据的峰峰值达到6伏左右。
操作系统生成175Hz的PCM格式数据所采用的方式如下:通过信号发生器(如数字音频编辑器Audacity软件)生成175Hz的正弦波,将该正弦波的音频片段转换成采样率为8K、单声道、16位采样的RAW格式文件的数据,再通过UltraEdit编辑软件将该RAW格式文件中的数据转换成以0x开头的四位十六进制数据(由于本发明实施例中的MODR存储的数据为32位,但MODR的低16位有效,若上层应用向MODR写入16位的数据时不需要进行数据转换,因此,将RAW格式文件中的数据转换成16位数据之后,上层应用可直接通过DMA向MODR写入该PCM格式的数据,可提高写入数据的效率),并将该十六进制的数据以大数组的形式存储。
该步骤中,主处理芯片通过DMA直接向AC97控制器的MODR写入PCM格式数据所采用的方式如下:如图3所示,主处理芯片通过DAM向MODR写入以0X开头的四位十六进制的PCM格式数据,该PCM格式数据被写入到MODEM(Modulator/DEModulator,调制解调器)发送FIFO(First In First Out,先输入先输出)中的TxEntry0~TxEntry15数据存储单元中,再将TxEntry0~TxEntry15中的PCM格式数据通过AC97_SDATA_OUT总线发送至WM9713芯片中。本发明实施例中主处理芯片还可以通过DMA直接从AC97控制器中的MODR中读取音频数据,如图3所示,WM9713芯片将经过模数转换后的数字音频数据通过AC97_SDATA_IN_0总线发送至AC97控制器中的MODEM接收FIFO中的RxEntry0~RxEntry15中,再将RxEntry0~RxEntry15中的数据存储至MODR中,主处理芯片通过DMA直接从MODR中读入音频数据。
步骤202、AC97控制器通过AC97_SDATA_OUT总线将PCM格式数据发送至WM9713芯片,由该WM9713芯片对该PCM格式数据进行数模转换,将转换得到的模拟信号进行混频处理后发送至线性马达。
该步骤中,WM9713芯片对该PCM格式数据进行处理并发送至线性马达的示意图如图4所示,WM9713芯片在接收到AC97控制器发送的PCM格式数据之后,由该WM9713芯片中的AUXDAC(AUXiliary Data AnalogConversion,播放单声道音频数据的功能)将该PCM格式数据进行数模转换,转换成模拟信号,并将该模拟信号发送至Headphone混频器,再将经过混频处理后的模拟信号采用差分的方式(如将该路模拟信号分别发送至SPKR与IVV1+OUT3)通过WM9713的右声道发送至线性马达,以驱动线性马达振动。
为不影响WM9713芯片正常播放立体声音频数据,本发明实施例中,WM9713芯片接收到AC97控制器发送的立体声音频数据之后,将该立体声音频数据分别发送至该WM9713芯片的第一DAC(Data Analog Conversion,数模转换器)和第二DAC中(其中第一DAC为WM9713芯片的左声道的数模转换器,第二DAC为该WM9713芯片的右声道的数模转换器),由第一DAC与第二DAC分别对接收到的立体声音频数据进行数模转换后生成两路模拟信号,再将该两路模拟信号发送至SPK混频器中进行混频处理;将混频处理后的模拟信号采用差分的方式(如将该模拟信号分别发送至SPKL,另一路模拟信号发送至INV2+OUT4)通过WM9713芯片的左声道输出,实现播放立体声音频数据的功能。
步骤203、WM9713芯片向主处理芯片发送GPIO信号,以启动主处理芯片中的中断处理程序从移动终端的屏幕上获取用户触压触摸屏的触点(后续称为坐标点)的坐标值及其压力值。
该步骤中,可通过触发WM9713的PENDOWN来触发WM9713芯片的GPIO2引脚(该WM9713芯片的GPIO2引脚与主处理芯片连接)中断,以向该主处理芯片发送GPIO信号;主处理芯片接收到该GPIO信号之后,启动中断处理程序以一定频率获取坐标点的坐标值及其压力值,并将获取到的坐标点的坐标值及其压力值发送给主处理芯片,由主处理芯片根据接收到的各坐标点的压力值确定是否需要调整WM9713芯片的输出增益,若需要,则向中断处理程序发送增益调整指令,以指示中断处理程序调整WM9713芯片的输出增益。
一般情况下,中断处理程序读取坐标点的坐标值及其压力值的频率为10ms(1秒钟内获取100个值,该100个值包括X值、Y值和压力值),即1秒钟内只能获取到约为33个坐标点的坐标值及其压力值;根据上述方式获取坐标点并不能很准确的反映出触摸屏的触压情况,根据获取到的坐标点的压力值来调整WM9713芯片的输出增益的有效性不高。较佳地,为提高输出增益调整的有效性,本发明实施例中,中断处理程序通过12位的ADC(Analog DataConversion,模数转换)读取坐标点的坐标值及其压力值,读取坐标点的坐标值及其压力值的频率为10ms,每一次读取3个值(即1秒钟内可获取300个值),即1秒钟内可获取100个坐标点的坐标值及其压力值。
较佳地,为提高获取到的坐标点的有效性,中断处理程序针对获取到的每一个坐标点,判断该坐标点的压力值是否在[100,1000]范围内,若是,则确定该坐标点为有效坐标点,则将该坐标点的坐标值及其压力值发送至主处理芯片;否则,确定该坐标点为坏点(即无效点),直接将该坐标点抛弃。
步骤204、中断处理程序根据获取到的各坐标点的压力值调整WM9713芯片的输出增益,并指示线性马达根据该输出增益调整振动强度。
该步骤中,WM9713芯片通过用于传输单声道音频数据的声道(如左声道或右声道)将调整后的增益值发送至线性马达。
该步骤中,中断处理程序调整WM9713芯片的输出增益所采用的方式如下:设定WM9713芯片输出增益的取值范围为[0,31],将该输出增益的取值范围划分成32个增益数值(如0,1,2,...,31);获取到的坐标点的压力值的取值范围为[100,1000],将该压力值的取值范围划分(可平均划分,也可按照权重划分)为32个连续的数值段(如[100,130)、[160,190)....);建立该32个增益数值与32个连续的数值段一一对应的对应关系,根据获取到的坐标点的压力值确定出该压力值所处的数值段,再根据上述对应关系确定出与该数值段对应的增益数值,再根据该增益数值对WM9713芯片的输出增益进行调整,如:获取到的坐标点的压力值在[100,130)内时将WM9713芯片的输出增益调整为0,坐标点的压力值在[130,160)内时将WM9713芯片的输出增益调整为1,坐标点的压力值在[160,190)内时将WM9713芯片的输出增益调整为2,依此类推。本发明实施例中,根据压力值的取值范围调整WM9713芯片的输出增益并不仅限于上述方式,还包括其他多种方式,本领域技术人员应该很容易理解。
较佳地,为降低系统的工作量,中断处理程序每获取到一定数量的有效坐标点时,根据该数量的坐标点的压力值对WM9713芯片的输出增益进行一次调整,如中断处理程序每获取到100个有效坐标点,计算该100个坐标点的压力值的平均值,根据该平均值所处的数值段确定出增益数值,再根据确定出的增益数值对WM9713芯片的输出增益进行相应的调整。
本发明实施例中,CODEC芯片并不仅限于WM9713芯片,还可以是其他既具有播放立体声音频数据的功能又具有播放单声道音频数据的功能的音频编解码芯片,如WM9712芯片。
本发明实施例中,采用音频编解码芯片向线性马达发送单声道模拟信号来驱动线性马达振动;在线性马达振动之后,中断处理程序获取触屏点的压力值,并根据获取到的压力值调整音频编解码芯片的输出增益;控制线性马达按照音频编解码调整后的输出增益调整振动强度。采用本发明技术方案,通过移动终端中现有的音频编解码芯片控制线性马达振动以及振动强度;而不需要增加专用驱动芯片来对主处理芯片输出的波形的占空比进行调整,根据调整后的波形驱动线性马达振动,因此,本发明技术方案不需要对现有的移动终端进行改进即可实现对线性马达振动进行控制,在实现丰富的振动效果的同时,还降低了线性马达振动的难度,并且还降低了成本。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。