用SPI实现dsPlC与ISD语音芯片的通信
[10-10 20:38:44] 来源:http://www.88dzw.com 电子制作 阅读:8697次
文章摘要: 通过对控制寄存器的配置,可以将SPI模块设置为8位或16位模式、主模式或从模式、帧同步等多种操作模式,还可以对时钟边沿、时钟分频倍数等进行配置。这里使用了以dsPIC为主,ISD为从的主从模式。Microchip提供的外围接口库可以方便地完成这些配置工作。 dsPIC Language Tools Libraries是MictoChip公司提供给开发者的一套工具库,其中主要含3个子库.DSP库,提供常用的DSP函数;外围接口库,提供对dsPIC系列所有外围接口的驱动函数,包括SPI接口;标准C及数学函数库,可在Microchip的官方网站下载(www.microchip. com
用SPI实现dsPlC与ISD语音芯片的通信,标签:电子小制作,http://www.88dzw.com 通过对控制寄存器的配置,可以将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命令;
- 上一篇:超声波遥控电路应用举例
《用SPI实现dsPlC与ISD语音芯片的通信》相关文章
- › 用SPI实现dsPlC与ISD语音芯片的通信
- 在百度中搜索相关文章:用SPI实现dsPlC与ISD语音芯片的通信
- 在谷歌中搜索相关文章:用SPI实现dsPlC与ISD语音芯片的通信
- 在soso中搜索相关文章:用SPI实现dsPlC与ISD语音芯片的通信
- 在搜狗中搜索相关文章:用SPI实现dsPlC与ISD语音芯片的通信