微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于SPI实现dsPlC与ISD语音芯片的通信设计

基于SPI实现dsPlC与ISD语音芯片的通信设计

时间:12-14 来源:互联网 点击:

介绍dsPIc数字信号控制器以厦ISD4002语音芯片的功能特点;特别介绍dsPIC的SPl库函数的功能及使用,并给出一种简单的语音录放电路。具有低成本、易使用等特点,有较高的实用价值。

1 dsPlC系列的简单介绍
dsPIC系列是Microchip公司推出的新型16位高性能数字信号控制器。它结合了单片机的控制优点及数字信号处理器(DSP)的高速运算特性,为嵌入式系统提供了单一芯片解决方案。它继承了PlC单片机系列的哈佛总线结构和精简指令集(RISC)技术,以及寻址方式简单、运行速度快、功耗低、驱动能力强等优点,同时集成了主板级的DSP功能,能够提供强大的数字信号处理能力;此外,还提供了如UART、CAN、SPI等丰富的外围接口,可以方便地与其他设备进行通信互联。本文介绍使用dsPIC数字信号控制器的SPI接口与ISD语音芯片进行通信控制,使用的芯片型号为dsPIc30F6014。

2 ISD系列语音录放芯片
ISD系列语音芯片是美国ISD公司推出的产品。该系列芯片采用多电平直接模拟存储(Chip Corder)专利技术,声音不需要A/D转换和压缩,每个采样直接存储在片内的闪烁存储器中,避免了A/D转换的误差;能够真实、自然地还原语音、音乐及效果声;避免了一般固体录音电路量化和压缩造成的量化噪声和金属声。ISD4000系列采用CM0s技术,内含晶体振荡器、防混叠滤波器、平滑滤波器、自动静噪、音频功率放大器及高密度多电平闪烁存储阵列等,只需要很少的外围器件即可构成一个完整的语音录放系统。它的操作命令通过串行通信接口(SPI)或Microwire送入;采样频率可为4.O Hz、5.3 Hz、6.4 Hz、8.O Hz,频率越低,录放时间越长,但音质会有所下降;片内信息存于闪烁存储器中,可在断电情况下保存100年(典型值),反复录音10万次;器件工作电压3 v,工作电流25~30 mA,音质好,适用于移动电话及其他便携式电子产品。本设计使用的芯片型号为ISD4002,单片录放时间为120 s。

3 SPI接口介绍
SPI是由美国摩托罗拉公司推出的一种同步串行传输规范,常作为单片机外设芯片串行扩展接口。SPI有4个引脚:SS(从器件选择线)、SDO(串行数据输出线)、SDI(串行数据输入线)和SCK(同步串行时钟线)。SPI可以用全双工通信方式同时发送和接收8(16)位数据,过程如下:主机启动发送过程,送出时钟脉冲信号,主移位寄存器的数据通过SDO移入到从移位寄存器,同时从移位寄存器中的数据通过SDI移人到主移位寄存器中。8(16)个时钟脉冲过后,时钟停顿,主移位寄存器中的8(16)位数据全部移人到从移位寄存器中,随即又被自动装入从接收缓冲器中,从机接收缓冲器满标志位(BF)和中断标志位(SSPIF)置“1”。同理,从移位寄存器中的8位数据全部移入到主寄存器中,随即又被自动装入到主接收缓冲器中.主接收缓冲器满标志位(BF)和中断标志位(SSPIF)置“1”。主CPU检测到主接收缓冲器的满标志位或者中断标志位置1后,就可以读取接收缓冲器中的数据。同样,从CPU检测到从接收缓冲器满标志位或中断标志位置1后,就可以读取接收缓冲器中的数据,这样就完成了一次相互通信过程。这里设置dsPIC30F6014为主控制器,ISD4002为从器件,通过SPI口完成通信控制的过程。

4 dsPIC的SPI函数库
dsPIC30F6014提供了2个SPI接口模块,每个接口模块包括三个特殊功能寄存器和四个引脚。SPIxBUF是数据缓冲寄存器。需要注意的是,接收缓冲SPIxRBF和发送缓冲SPIxTBF共享同一个地址,即它们都是地址映射到SPIxBUF的。也就是说,当对接收或发送缓冲寄存器操作时,都只能对SPIxBUF进行操作,而不能直接对SPIxRBF或SPIxTBF进行操作。SPIxCON是控制寄存器,用来对sPI模块的操作模式等进行配置;SPIxSTAT是状态寄存器,用来标示SPI模块所处的状态。其模块框图如图1所示。

通过对控制寄存器的配置,可以将SPI模块设置为8位或16位模式、主模式或从模式、帧同步等多种操作模式,还可以对时钟边沿、时钟分频倍数等进行配置。这里使用了以dsPIC为主,ISD为从的主从模式。Microchip提供的外围接口库可以方便地完成这些配置工作。

dsPIC Language Tools Libraries是MictoChip公司提供给开发者的一套工具库,其中主要含3个子库.DSP库,提供常用的DSP函数;外围接口库,提供对dsPIC系列所有外围接口的驱动函数,包括SPI接口;标准C及数学函数库,可在Microchip的官方网站下载(www.microchip. com)。我们使用其中的外围接口库中的SPI库函数即可。SPI库中主要包括以下几个函数:
①configIntSPIx SPI中断配置函数。该函数可以对sPI接口的中断使能位以及中断优先级进行配置,返回值为空。
②CloseSPlx关闭SPI接口。
③DataRdySPlx SPl接口数据就绪。该函数用来判断SPI接收缓冲区中是否有数据等待读出。若返回值为1,表示缓冲区中数据已经就绪,等待读出;若返回值为0,则标示缓冲区为空。
④ReadSPIx读SPI接口缓冲区。
⑤WriteSPIx向SPI接口发送缓冲区写数据。
⑥OpenSPIx打开SPI接口。该函数包含2个参数:configl和config2。configl中包含对SPI接口操作模式的配置信息,将写入控制寄存器;config2中包含SPI的状态信息,将写入状态寄存器。该函数在打开SPI接口的同时完成对其的配置。
⑦puasSPIx函数将一个字符串数据写入到发送缓冲区中。
⑧getsSPIx函数将从接收缓冲区读人指定长度的字符串数据,并转存到指定的空间。

除了这8个函数以外,该库还提供了相应的宏指令完成同样的功能,可以在程序中方便地使用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top