Ⅰ、串口工作模式。
串口协议
串口(SPI)通信由三条线组成:CS线, SCL线, SDA线。在芯片中他们分别对应着P05~P07。
串口通信必须遵循下边的协议:
CS是低电平使能的,因此一旦CS被拉高,原有的通信状态都会被复位;而且一旦为低电平,将一直处于收码状态,这时候如果SCL有误码,将会一直错下去。因此要求CS只有在发码时拉低,其他状态要拉高。
CLK在CS处于低电平下才有效。在通信中,程序是采到上升沿才读DATA,所以在上升沿来到之前要准备好DATA,以免出现读码出错。另外受录音采样的限制,CLK的速度不应该达到和采样率接近,更不可以大于采样率,否则将出现量化噪音,所以在通信时,CLK线的数度要限制在1.7K以下。
SDA是通信的数据线,允许与CLK的上升沿同时或者更早发出,因为它不会触发程序读码,但不能慢于CLK上升沿,否则读出来的结果和可能会错。程序要求DATA线发码应是自低向高位发送,也就是说程序中检查到的第一个码为最低位,第八个码为最高位。
串口命令
语音地址: 00H――EFH
音量控制: F0H――F8H 注:F0为静音,F8为最大音量。
上 一 曲: F9H 注:播放上一曲,到了最前,就播放第一曲。
下 一 曲: FAH 注:播放下一曲,到了最后,就播放最后一曲。
停 止: FBH 注:停止放音/录音。
录 音: FCH 注:从最后地址开始录音。
当前擦除: FEH03H55H 注:擦除当前语音。
后续擦除: FEH08H55H 注:擦除当前地址以后的语音。
语音地址: 语音地址允许的范围为00H~~EFH,也就是说录音最大允许有F0H段;但要这些地址有效也是有条件的,必须是对应段里面已经有录音了;如果收到的码在这个范围内,但该码对应段里面又没有录音段,则认为无效,不做任何操作,直接丢掉。如果该段内有录音,则播放该段(它允许打断原有的播放曲子,但如果原来是出于录音状态将不能打断,但备份了该地址)。
音量控制: 串口模式下音量控制命令范围是F0~~F8,也就是说有9级音量调整范围,无论当前状态是录放音状态,还是一般的空闲状态,他都有效。为方便调节音量,每次上电后都会自动恢复为F4这一级的音量。
上一曲: 这个串口命令和语音地址命令类似,也是允许打断播放曲子,直接跳到上一曲播放;对录音状态下也只是备份了地址。但是如果当前地址为0,接到这个串口命令后,地址就会变成最后一段的地址了。
下一曲: 参考“上一曲”
停 止: 停止命令允许停止包括录音,放音两种状态,使程序回到空闲状态。
录 音: 当程序收到这个串口命令后,就会再最后一段的地址后面开始录音,同时将这个录音的地址作为当前地址备份,但是它只能在空闲状态下被触发。结束录音只能通过停止命令正常结束,或者是由于FLASH录音满了退出,但此时会有BEEP两声提示。如果已经录音了F0H段了,将不再录音,但是有BEEP一声提示。
擦 除: 无论在什么状态下,程序收到这个串口命令后,都会停止当前的状态,同时删除当前地址的录音内容,然后其后续段的录音内容均会往前移,使段号连续。
擦 除: 无论在什么状态下,程序收到这个串口命令后,都会停止当前的状态,同时删除当前地址以后的录音内容。
在发送当前擦除和后续擦除命令后,要等400uS以上才能作其它操作。
Ⅱ、标准按键模式
标准按键模式下的功能和串口的功能类似,但他是通过按键来实现的。对应按键的功能如下:
REC _P00 录音
PlayPause_P01 播放/暂停
BACK _P02 上一曲
NEXT _P03 下一曲
STOP _P04 停止
VOL+ _P05 音量加(8级)
VOL- _P06 音量减(8级)
ERASE _P07 当前段擦除
ERASE + STOP 后续段擦除
说明:
录音: 参考“串口模式”下的录音控制。
放音/暂停:该功能可以实现对所在地址的放音/暂停操作,当然暂停只能是在放音状态下有效。
上一曲:参考“串口模式”下的上一曲控制。
下一曲:参考“串口模式”下的下一曲控制。
停止:该功能与“串口模式”下的停止控制类似,但这里的停止功能还包括能停止暂停功能。
音量+: 音量共8级,每次上电默认都是处于中间位置(第五级),无论在任何状态按下音量+都有效,音量达到第八级后不再往上加。
音量-: 参考“音量+”
当段擦除:和“串口模式”下的当前擦除控制类似,但是这里只允许在空闲状态下执行这个操作,同时要求长按有效(2S以上)。
后续擦除:和“串口模式”下的后续擦除控制类似,但是这里只允许在空闲状态下执行这个操作,同时要求两个按键按下要尽可能同时,否则将会被认为是两个独立的操作。
按键去抖动时间:50MS
每个按键的间隔时间:100MS