40 20051 11
用 S PI 实现 ds PIC 与
ISD 语音芯片的通信※
■电子科技大学 刘永亮 仇三山
摘 要 介绍 dsPIC 数字信号控制器以及 ISD4002 语音芯片的功能特点 ;特别介绍 dsPIC 的 SPI 库函数的功能及
使用 ,并给出一种简单的语音录放电路。具有低成本、易使用等特点 ,有较高的实用价值。
关键词 dsPIC dsPIC30F6014 ISD4002 语音芯片
在很多应用场合中 ,需要用到语音录放功能 ,如复读
机、电话自动应答装置等。本文介绍一种简单实用的
dsPIC 数字信号控制器 ,用来完成语音录放功能。由于
dsPIC 强大的数字信号处理功能 ,可以提供后续的复杂处
理等 ,具有良好的易扩展性。
1 dsPIC 系列的简单介绍
dsPIC 系列是 Microchip 公司推出的新型 16 位高性
能数字信号控制器。它结合了单片机的控制优点及数字
信号处理器 (DSP) 的高速运算特性 ,为嵌入式系统提供了
单一芯片解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。它继承了 PIC 单片机系列的哈佛总
线结构和精简指令集 ( RISC) 技术 ,以及寻址方式简单、运
行速度快、功耗低、驱动能力强等优点 ,同时集成了主板级
的 DSP 功能 ,能够提供强大的数字信号处理能力 ;此外 ,
还提供了如 UART、CAN、SPI 等丰富的外围接口 ,可以方
便地与其他设备进行通信互联。本文介绍使用 dsPIC 数
字信号控制器的 SPI 接口与 ISD 语音芯片进行通信控制 ,
使用的芯片型号为 dsPIC30F6014。
2 ISD 系列语音录放芯片
ISD 系列语音芯片是美国 ISD 公司推出的产品。该
系列芯片采用多电平直接模拟存储 ( Chip Corder) 专利技
术 ,声音不需要 A/ D 转换和压缩 ,每个采样直接存储在片
内的闪烁存储器中 ,避免了 A/ D 转换的误差 ;能够真实、
自然地还原语音、音乐及效果声 ;避免了一般固体录音电
路量化和压缩造成的量化噪声和金属声。
ISD4000 系列采用 CMOS 技术 ,内含晶体振荡器、防
混叠滤波器、平滑滤波器、自动静噪、音频功率放大器及高
密度多电平闪烁存储阵列等 ,只需要很少的外围器件即可
构成一个完整的语音录放系统。它的操作命令通过串行
通信接口 ( SPI) 或 Microwire 送入 ;采样频率可为 4. 0 Hz、
5. 3 Hz、6. 4 Hz、8. 0 Hz ,频率越低 ,录放时间越长 ,但音质
会有所下降 ;片内信息存于闪烁存储器中 ,可在断电情况
下保存 100 年 (典型值) ,反复录音 10 万次 ;器件工作电压
3 V ,工作电流 25~30 mA ,音质好 ,适用于移动电话及其
他便携式电子产品。本
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
使用的芯片型号为 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 检测到主接收缓冲器的满标志位或者中断
© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
20051 11 Microcontrollers & Embedded Systems 41
标志位置 1 后 ,就可以读取接收缓冲器中的数据。同样 ,
从 CPU 检测到从接收缓冲器满标志位或中断标志位置 1
后 ,就可以读取接收缓冲器中的数据 ,这样就完成了一次
相互通信过程。这里设置 dsPIC30F6014 为主控制器 ,
ISD4002 为从器件 ,通过 SPI 口完成通信控制的过程。
4 dsPIC 的 SPI函数库
dsPIC30F6014 提供了 2 个 SPI 接口模块 ,每个接口
模块包括三个特殊功能寄存器和四个引脚。SPIxBUF 是
数据缓冲寄存器。需要注意的是 ,接收缓冲 SPIxRBF 和
发送缓冲 SPIx TBF 共享同一个地址 ,即它们都是地址映
射到 SPIxBUF 的。也就是说 ,当对接收或发送缓冲寄存
器操作时 ,都只能对 SPIxBUF 进行操作 ,而不能直接对
SPIxRBF 或 SPIx TBF 进行操作。SPIxCON 是控制寄存
器 ,用来对 SPI 模块的操作模式等进行配置 ; SPIxSTA T
是状态寄存器 ,用来标示 SPI 模块所处的状态。其模块框
图如图 1 所示。
图 1 SPI模块框图
通过对控制寄存器的配置 ,可以将 SPI 模块设置为 8
位或 16 位模式、主模式或从模式、帧同步等多种操作模
式 ,还可以对时钟边沿、时钟分频倍数等进行配置。这里
使用了以 dsPIC 为主 , ISD 为从的主从模式。Microchip
提供的外围接口库可以方便地完成这些配置工作。
dsPIC Language Tools Libraries 是 Microchip 公司提
供给开发者的一套工具库 ,其中主要含 3 个子库 :DSP 库 ,
提供常用的 DSP 函数 ;外围接口库 ,提供对 dsPIC 系列所
有外围接口的驱动函数 ,包括 SPI 接口 ;
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
C 及数学函
数库 ,可在 Microchip 的官方网站下载 ( www. microchip.
com) 。我们使用其中的外围接口库中的 SPI 库函数即可。
SPI 库中主要包括以下几个函数 :
①ConfigIntSPIx SPI 中断配置函数。该函数可以对
SPI 接口的中断使能位以及中断优先级进行配置 ,返回值
为空。
②CloseSPIx 关闭 SPI 接口。
③DataRdySPIx SPI 接口数据就绪。该函数用来判
断 SPI 接收缓冲区中是否有数据等待读出。若返回值为
1 ,
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示缓冲区中数据已经就绪 ,等待读出 ;若返回值为 0 ,
则标示缓冲区为空。
④ReadSPIx 读 SPI 接口缓冲区。
⑤WriteSPIx 向 SPI 接口发送缓冲区写数据。
⑥OpenSPIx 打开 SPI 接口。该函数包含 2 个参数 :
config1 和 config2。config1 中包含对 SPI 接口操作模式的
配置信息 ,将写入控制寄存器 ;config2 中包含 SPI 的状态
信息 ,将写入状态寄存器。该函数在打开 SPI 接口的同时
完成对其的配置。
⑦pusSPIx 函数将一个字符串数据写入到发送缓冲
区中。
⑧get sSPIx 函数将从接收缓冲区读入指定长度的字
符串数据 ,并转存到指定的空间。
除了这 8 个函数以外 ,该库还提供了相应的宏指令完
成同样的功能 ,可以在程序中方便地使用。
5 ISD4002
ISD4002 工作于 SPI 串行接口。SPI 协议是一个同步
串行数据传输协议 ,协议假定微控制器的 SPI 移位寄存器
在 SCL K的下降沿动作。对 ISD4002 而言 ,在时钟上升沿
锁存 MOSI 引脚数据 ,在下降沿将数据送至 MISO 引脚。
协议具体内容如下 :
①所有串行数据传输开始于 SS 下降沿 ;
②SS 在传输期间必须保持为低电平 ,在两条指令之
间保持为高电平 ;
③数据在时钟上升沿移入 ,在下降沿移出 ;
④SS 变低 ,输入指令和地址之后 ,ISD 才会开始录放
动作 ;
⑤指令格式是 10 位地址码加 6 位控制码 ;
⑥ ISD 的任何操作(含快进) 如果遇到 EOM 或 OVF
则产生一个中断 ,该中断状态在下一个 SPI 周期开始时被
清除 ;
⑦使用读指令会使中断状态为移出 ISD 的 MISO 引
脚时 ,控制及地址数据也同步从 MOSI 移入 ;
⑧所有操作在运行位 ( RUN) 置 1 时开始 ,置 0 时
结束 ;
⑨所有指令都在 SS 上升沿开始执行。
© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
42 20051 11
其时序如图 2 所示。
图 2 SPI时序
对于 ISD4002 ,器件延时 TPUD (8 k Hz 采样时 ,约为
25 ms) 后才能开始操作 ;因此 ,用户发完上电指令后 ,必须
等待 TPUD ,才能发出一条操作指令。下面是典型的
操作。
从 00 处发音 ,应遵循如下时序 :
发 POWERUP 命令 ;
等待 TPUD(上电延时) ;
发地址值为 00 的 SETPLA Y命令 ;
发 PLA Y命令。
器件会从 00 地址开始放音 ,当出现 EOM 时 ,立即中
断 ,停止放音。
如果从 00 处录音 ,则按以下时序 :
发 POWER UP 命令 ;
等待 TPUD(上电延时) ;
发 POWER UP 命令
等待 2 倍 TPUD ;
发地址值为 00 的 SETREC 命令 ;
发 REC 命令。
器件便从 00 地址开始录音 ,一直到出现 OVF (存储器末
尾) 时 ,录音停止。其工作时序如图 3 所示。
图 3 ISD4002 录放时序
6 电路设计
本电路采用 dsPIC30F6014 数字信号控制器 ,通过 3
个按键开关控制 ISD4002 录放音芯片的动作。S1、S2、S3
分别接到控制器外部中断 IN T1、IN T2、IN T3 上。当按下
S1 时 ,开始录音 ,再次按下 S1 时停止录音。如此反复即
可实现多段录音。同理 ,按下 S2 时开始放音 ,再次按下
S2 是停止放音。如此反复顺序播放多段录音。按下 S3
关机。
(1) 硬件电路设计
电路原理如图 4 所示。整个电路由语音录放电路、话
筒输入电路、按键开关电路及 LCD 显示电路构成。由于
本设计输出直接驱动普通耳机 ,经实验不需外部功放电
路 ,直接利用 ISD4002 内部功放输出即可。ISD4002 作为
从机 ,其 SPI 接口的 MOSI 接控制器的 SDO ; MISO 接控
制器的 SDI ;SCL K接 SCK;SS 接控制器的 SS 即可。LCD
用于人机交互的界面显示。
图 4 电路原理
(2) 软件设计
程序包括主程序以及几个子程序。主程序中 ,在完成
初始化的工作之后 ,进入一个 while 循环 ,等待响应按键触
发的中断 ,若有按键按下 ,则进入相应的中断服务程序。在
按键 S1 的中断服务程序中 ,设置一个标志变量 ,S1 每按下
一次 ,标志变量取反 ,用来控制录音及停止录音。同理 ,S2
的中断服务程序中也设置一个标志变量 ,控制开始放音及
停止放音。S3 的中断服务程序中则发送 PowerDown 指
令关机。程序清单中给出了主程序以及中断 (下转 45)
© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
20051 11 Microcontrollers & Embedded Systems 45
若干个对象类的集合 ,每个对象有特定的功能 ,具有自己
的属性和服务 ,表现出一定的行为。网络寻址的过程是 :
根据节点的 MAC ID 值确定当前被访问的设备 ,并由对
象、实例、属性为路径定位具体的操作。
图 5 适配器对象建模
(2) 事件驱动与消息响应
事件是指改变系统运行状态和运行流程的系统外部
或内部的变化 ,消息是表示事件是否发生的标志。当系统
一有事件发生 ,系统并不立即处理 ,而是发送一个事件对
应的消息 ,系统的后台不停地捕捉消息。根据收到的消息
执行相应的任务。这样尽管系统事件的触发是随机、分散
的 ,但是事件的处理是集中的 ,程序思路清晰 ,管理简单。
图 6 是基于这种思想的软件结构。
图 6 软件结构
适配器采用这种程序组织思路 ,定义了十多个事件。
将这些事件分为 6 类 , 即故障事件、DeviceNet 事件、
Modbus事件、RS232 事件、定时器事件、设备更新事件和
空闲事件 ,每一类事件中又包含若干个子事件。利用全局
变量 Global_ Event 来定义各事件的优先级 ,优先级高的
事件先处理 ,优先级低的事件后处理。
4 总 结
本设计将无线技术应用于 DeviceNet 网络的从站适
配器的设计中 ,使得无线领域的发展惠及传统的控制领
域。其主要特点为 :物理层使用了 802. 11b 协议通信 ,传
送距离远 ,突破了传统的铺线环节的局限性 ;利用 FP GA
实现链路层功能 ,而对象建模和事件驱动与消息响应则是
协议软件设计中的重点。总之 ,基于无线技术是当前总线
技术领域中研究的重要方向 ,而 802. 11b 具备应用广泛、
价格低廉的特点 ,成为其中的热点。
参考文献
1 吕晓奕 ,孟昭鹏. 基于 802. 11b 标准的无线局域网络管理系
统的设计. 天津理工学院学报 ,2002 (5)
2 IEEE. 802. 11b Standard specification. 1999
3 王忠锋 ,高路 ,王宏. 基于 802. 11b 的无线现场设备通信协议
的研究. 计算机应用研究 ,2003 (8)
4 徐达银 ,胡仁杰. DeviceNet 通讯产品开发. 工业控制计算机 ,
2003 (6)
5 ADI. ADSP BF533 Blackfin Processor Hardware Reference.
2003
(收稿日期 :2005206202)
(上接 42)
服务程序 ,另外包括 LCD 驱动程序以及 dsPIC 的 SPI 函数
库等。(编者注 :源程序见本刊网站 www. dpj. com. cn。)
7 总 结
该电路易于实现 ,功能简单实用 ,可扩展性较好 ;输出
声音清晰、自然。如要增加录音时间 ,可选用 ISD4000 系
列的其他芯片 ,程序基本相同。另外 ,在设计过程中有以
下几点事项需要注意 :
①在 SPI 的数据传输中 ,不同芯片所定义的传输顺
序可能不同 ,因此要注意是先传高位还是先传低位。
ISD4002 要求先传高位数据 ,如果与主芯片所定义的顺序
相反 ,则只要把指令码反过来传即可。
②由于 ISD4002 要求在时钟前半个周期把数据放在
传输线上 ,因此 ,在使用 dsPIC 的 SPI 函数库时需要注意
SPI 初始化。在本设计中 ,使用的配置为 SPI_ CKE_ ON
& CL K_POL_ACTIV E_ HIGH。
以上两点可能会帮助解决一些常见问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
。
参考文献
1 Microchip Technology. dsPIC30F Family Reference Manual ,
2003
2 Microchip Technology. dsPIC Language Tools Library , 2004
3 Winbond Elect ronics Corps. ISD4002 Series , 2003
(收稿日期 :2005206201)
© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net