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

发布者:平和宽容最新更新时间:2011-10-09 关键字:SPI  语音芯片  通信设计 手机看文章 扫描二维码
随时随地手机看文章

介绍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个函数以外,该库还提供了相应的宏指令完成同样的功能,可以在程序中方便地使用。

5 lSD4002
    ISD4002工作于SPI串行接口。SPI协议是一个同步串行数据传输协议,协议假定微控制器的SPI移位寄存器在SCLK的下降沿动作。对ISD4002而言,在时钟上升沿锁存MOSI引脚数据.存下降沿将数据送至MISO引脚.协议具体内容如下:
    ①所有串行数据传输开始于SS下降沿;
    ②SS在传输期间必须保持为低电平,在两条指令之间保持为高电平;
    ③数据在时钟上升沿移入,在下降沿移出;
    ④SS变低,输入指令和地址之后,ISD才会开始录放动作;
    ⑤指令格式是10位地址码加6位控制码;
    ⑥ISD的任何操作(含快进)如果遇到EOM或OVF则产生一个中断,该中断状态在下一个SPI周期开始时被清除;
    ⑦使用读指令会使中断状态为移出ISD的MISO引脚时,控制及地址数据也同步从MOSI移入;
    ⑧所有操作在运行位(RUN)置1时开始,置0时结束;
    ⑨所有指令都在SS上升沿开始执行。
    其时序如图2所示。

    对于ISD4002,器件延时TPUD(8kHz采样时,约为25 ms)后才能开始操作;因此,用户发完上电指令后,必须等待TPUD.才能发出一条操作指令。下面是典型的操作。

    从00处发音,应遵循如下时序:
    发POWERUP命令;
    等待TPUD(上电延时);
    发地址值为00的SFTPLAY命令;
    发PLAY命令。
    器件会从00地址开始放音,当出现EOM时,立即中断,停止放音。
    如果从00处录音,则按以下时序;
    发POWER UP命令;
    等待TPUD(上电延时);
    发POWER UP命令
    等待2倍TPUD;
    发地址值为00的SETREC命令;
    发REC命令。
    器件便从00地址开始录音,一直到出现OVF(存储器末尾)时,录音停止。其工作时序如图3所示。

6 电路设计
    本电路采用dsPICC30F6014数字信号控制器,通过3个按键开关控制ISD4002录放音芯片的动作。S1、S2、S3分别接到控制器外部中断INTl、INT2、INT3上。当按下S1时,开始录音,再次按下S1时停止录音。如此反复即可实现多段录音。同理,按下S2时开始放音,再次按下S2是停止放音。如此反复顺序播放多段录音。按下S3关机。

(1)硬件电路设计
    电路原理如图4所示。整个电路由语音录放电路、话筒输入电路、按键开关电路及LCD显示电路构成。由于本设计输出直接驱动普通耳机,经实验不需外部功放电路,直接利用ISD4002内部功放输出即可。ISD4002作为从机,其SPI接口的MOSI接控制器的SDO;MISO接控制器的SDI;SCLK接SCK;SS接控制器的SS即可。LCD用于人机交互的界面显示。

(2)软件设计
    程序包括主程序以及几个子程序。主程序中,在完成初始化的工作之后,进入一个while循环,等待响应按键触发的中断,若有按键按下,则进入相应的中断服务程序。在按键S1的中断服务程序中,设置一个标志变量,Sl每按下一次,标志变量取反,用来控制录音及停止录音。同理,S2的中断服务程序中也设置一个标志变量,控制开始放音及停止放音。S3的中断服务程序中则发送Power-Down指令关机。程序清单中给出了主程序以及中断服务程序,另外包括LCD驱动程序以及dsPIC的SPI函数库等。(编者注:源程序见本刊网站www.dpi.com.cn。)

7 总 结
    该电路易于实现,功能简单实用,可扩展性较好;输出声音清晰、自然。如要增加录音时间,可选用ISD4000系列的其他芯片,程序基本相同。另外,在设计过程中有以下几点事项需要注意:
    ①在SPI的数据传输中,不同芯片所定义的传输顺序可能不同,因此要注意是先传高位还是先传低位。ISD4002要求先传高位数据,如果与主芯片所定义的顺序相反,则只要把指令码反过来传即可。
    ②由于ISD4002要求在时钟前半个周期把数据放在传输线上,因此,在使用dsPIC的SPI函数库时需要注意SPI初始化。在本设计中,使用的配置为SPl—CKE—ON&CLK_P0L_ACTIVE_HIGH。
    以上两点可能会帮助解决一些常见问题。

关键字:SPI  语音芯片  通信设计 引用地址:基于SPI实现dsPlC与ISD语音芯片的通信设计

上一篇:PIC单片机教程-内部硬件资源之I/O口
下一篇:基于单片机的多点温度测量仪的设计

推荐阅读最新更新时间:2024-03-16 12:43

STM32 基础系列教程 15 - SPI
前言 学习stm32 SPI通信接口使用,学会用SPI接口收发数据。 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。 本示例所用的最小系统板原理图: 从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置: 系统时钟树 SPI器配置 引脚配置 中断配置(保持默认即可) 工程代码 在main.c 中加入如下图所示代码: 到此,我们就通过STM32的SPI接实发送
[单片机]
STM32 基础系列教程 15 - <font color='red'>SPI</font>
基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一)
本文将介绍SPI子系统。内核版本为2.6.30。如有错误欢迎指正。 预备知识要求:1.SPI总线 2. platfrom平台 3. sysfs子系统 4. 阅读过LDD3第3,5,6,7,9,10,11章的内容。 NOTE:如果没有看过LDD3的相关内容,直接看内核源码将非常吃力!!! PC主机:Ubuntu 和 redhat 9.0 目标板:TQ2440开发板 cpu:s3c2440 linux内核:2.6.30 0.引言 本系列文章对Linux设备模型中的SPI子系统进行讲解。SPI子系统的讲解将分为4个部分。 第一部分,即本篇文章,将对S
[单片机]
富士通半导体推出0.18 µm 技术SPI FRAM
     21ic讯 7月19日,富士通半导体(上海)有限公司宣布推出基于0.18 µm 技术的全新 SPI FRAM产品家族,包括MB85RS256A、MB85RS128A和MB85RS64A这3个型号,并从即日起开始为客户提供样片。 FRAM (Ferroelectric Random Access Memory 铁电随机存储器)将SRAM 的快写与闪存的非易失性优势集中在一块芯片上。全新的SPI FRAM家族MB85RSxxx包括3个型号:MB85RS256A、MB85RS128A和MB85RS64A,分别代表256Kbit、128Kbit和64Kbit三个密度级。3个芯片的工作电压范围在3.0 ~ 3.6V,读写周
[工业控制]
MSP430程序库<五>SPI同步串行通信
SPI总线系统是一种同步串行外设接口;是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 许多的芯片都用这种协议通信:EEPROM、Flash、实时时钟、AD转换器、数字信号处理器等:MSP430的USART模块不仅能够实现异步模式(见:MSP430程序库 二 UART异步串口),而且支持同步串行通信(即SPI模式);其SPI支持3线、4线操作,支持主机模式和从机模式,字符长度可以7位或8位等。由于要用AD7708芯片完成AD采样,AD7708是通过SPI与其它设备通信的;本程序比较简化,
[单片机]
MSP430程序库<五><font color='red'>SPI</font>同步串行<font color='red'>通信</font>
低轮廓车载卫星通信天线的跟踪设计
在车载卫星通信中,由于低轮廓车载天线具有良好的隐蔽性和使用性,应用前景较为广泛。但要实现性价比达到最优,天线跟踪控制器的设计是关键技术之一。在脱离航向引导信息的情况下,要实现车载天线稳定跟踪的控制系统难度较大,提出一种新的跟踪控制策略,使这一问题得到解决。 1 系统组成 天线稳定跟踪控制系统主要由跟踪接收器、控制器、驱动器以及惯性器件组成。跟踪接收器主要提供卫星信标的AGC电平值;控制器主要提供操作和显示接口以及完成控制策略的实施;驱动器主要完成功率放大和控制电机的旋转;轴角编码器主要提供天线方位及俯仰的实时角度;惯性器件主要提供天线载体的扰动信息。天线控制系统组成如图1所示。 2 跟踪控制策略 这里所讨论的天线
[嵌入式]
stm32的SPI初始化
1 void SPIx_Init(void) 2 { 3 RCC- APB2ENR|=1 2; //PORTA时钟使能 4 RCC- APB2ENR|=1 12; //SPI1时钟使能 5 6 //这里只针对SPI口初始化 7 GPIOA- CRL&=0X000FFFFF; 8 GPIOA- CRL|=0XBBB00000;//PA5.6.7复用推挽输出 9 //GPIOA- ODR|=0X7 5; //PA5.6.7上拉,应该不起作用,因为此模式 10 SPI1- CR1&=~(1 6);//关闭SPI来配置某些位 11 12 SPI1-
[单片机]
STM32 SPI配置
用stm32的库进行深入 SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 四根线 MISO 主设备数据输入,从设备数据输出。 MOSI 主设备数据输出,从设备数据输入。 SCLK时钟信号,由主设备产生。 CS从设备片选信号,由主设备控制。 外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节 时钟极性CPOL对传输协议没有重大的影响,代表串行同步时钟的空闲状态下的电平。 时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串
[单片机]
STM32 <font color='red'>SPI</font>配置
小型足球机器人的无线通信系统设计
摘要:介绍了一种用于Robocup F-180小型组足球机器人比赛的无线通信系统的设计。包括发送端和接收端系统的硬件设计和实现及其软件设计。给出了一种适应于这套系统的通信协议,包括物理层的编码设计、纠错编码设计和帧结构设计。 关键词:串行通信 无线通信 机器人 足球机器人是一个极富挑战性的高技术密集 密集型项目,融小车机械、机器人学、机电一体化、单片机、数据融合、精密仪器、实时数字信号处理、图像处理与图像识别、知识工程与专家系统、决策、轨迹规划、自组织与自学习理论、多智能体协调以及无线通信等理论和技术于一体,既是一个典型的智能机器人系统,又为研究发展多智能体系统、多机器人之间的合作与对抗提供了生动的研究模型。它通过提供一个标
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved