摘 要 介绍ISD4002与AVR单片机的通信过程。ISD4002与AVR单片机的相互通信是通过SPI接口。SPI可以用全双工通信方式实现语音录放。其操作简单,使用方便,成本低廉等特点。ISD4002能连续录音120分钟,具有音质高,可反复录音,内部集成了大容量的EEPROM,不需要扩展存储器等优点。
关键词 ISD4002 SPI 通信
1 SPI协议
SPI协议是一个同步串行数据传输协议,协议假定微控制器的SPI移位寄存器在SCLK的下降沿动作。因此,对ISD4002而言,在时钟上升沿锁存MOSI引脚数据,在下降沿将数据送至MISO引脚。协议具体内容如下:①所有串行数据传输开始于SS下降沿;②SS在传输期间必须保持为低电平,在两条指令之间保持为高电平;③数据在时钟上升沿移入,在下降沿移出;④SS变低,输入指令和地址之后,ISD才开始录放动作;⑤指令格式是11位地址码加5位控制码;⑥ISD的任何操作(含快进)如果遇到EOM或OVF则产生一个中断,该中断状态在下一个SPI周期开始时被清除;⑦使用读指令会使中断状态在移出ISD的MISO引脚时,控制及地址数据也同步从MOSI移入;⑧ 所有操作在运行位(RUN)置“1”时开始,置“0”时结束;⑨所有指令都在SS上升沿开始执行。
ISD4002作为从机,其SPI接口的MOSI接控制器的SDO,MISO接控制器的SDI,SCU接SCK,SS接控制器的SS,LCD用于人机交互的界面显示。SPI 库中主要包括以下几个函数:
Config2IntSPIx SPI 中断配置函数。 该函数可以对SPI 接口的中断以及中断优先级进行配置,返回值为空。
CloseSPIx 函数关闭SPI接口。
DataRdySPIx 函数使SPI接口数据就绪。该函数用来判断SPI接收缓冲区中是否有数据等待读出。若返回值为1,表示缓冲区中数据已经就绪,等待读出;若返回值为0,则表示缓冲区为空。
ReadSPIx 函数读SPI接口缓冲区。
WriteSPIx 函数向SPI接口发送缓冲区写数据。
OpenSPIx 函数打开SPI接口。该函数包含两个参数,config1和config2。config1 中包
含了对SPI接口操作模式的配置信息,写入控制寄存器;con2fig2 中则包含了SPI的状态信息,将写入状态寄存器。该函数在打开SPI接口的同时完成对其的配置。
pusSPIx 函数将一个字符串数据写入到发送缓冲区中。
getsSPIx 函数从接收缓冲区读入指定长度的字符串数据并转存到指定的空间。
SPI串口的命令的输入和数据、地址的输人输出为8位方式,其数据的传送格式是高位(MSB)在前,低位(LSB)在后。其命令主要有6条,包括写锁存使能、写锁存复位、写状态寄存器、读状态寄存器、写数据和读数据。写数据操作顺序是:写锁存使能,写命令,地址,数据输人(8位1和写使能复位。写状态寄存器操作顺序是:写锁存使能,写状态寄存器命令,命令字。读数据操作顺序为:读数据命令,地址,数据(8位)输出。读状态寄存器顺序是:读状态寄存器命令,数据输出。操作过程中,无论是命令、地址还是数据均以8位形式进行。SI脚上的指令、地址及数据在SCK时钟的上升沿被锁存,SO脚上的数据在时钟的下降沿输出。
|