savagego 发表于 2015-7-7 16:24:28

讯飞XFS5152CE语音合成模块入手

本帖最后由 savagego 于 2015-7-7 16:29 编辑


入手了讯飞5152模块,然后各种折腾。
因为电压不同(3.3v,uno是5v),开始的时候试图用电阻分压来解决。结果是各种没反应。
最后冒险直接连uno输出,问题就解决了。
串口OK后,又开始尝试用SPI接口。(占用串口后,调试不方便)又是各种没反应。
如果哪位大神用SPI口连接成功,喊一声。
最终的解决方法是用软串口。不废话,上程序。
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
mySerial.begin(9600);
}

void loop() // run over and over
{
byte aa[] = {0xFD, 0x00, 0x05, 0x01, 0x01, 0x31, 0x32, 0x34};
int i;
for (i = 0; i < sizeof(aa); i ++) {
    mySerial.write(aa);
}
Serial.println(digitalRead(8));//pin 8 连ready脚
delay(2000);
Serial.println(digitalRead(8));
delay(1000);
Serial.println("end");
}

zoologist 发表于 2015-7-7 20:42:41

多少钱?效果如何?

PINKWALKMAN 发表于 2015-7-8 08:03:44

建议用MEGA2560,有多个串口就不会有冲突了。

瘦网虫 发表于 2015-7-8 10:09:17

讯飞还有这个硬件设备啊?赶紧去搜下。。看起来很好玩的样子。

freebit 发表于 2016-4-29 12:33:14

我也入手了一块,使用arduino中的<wrie.h>库用I2C操作也不成功,通讯不上,不知何原因,根据手册,模块的默认地址是:0x80。
不知您有没有试过I2C的操作方式?

aas119 发表于 2016-5-4 23:37:54

freebit 发表于 2016-4-29 12:33 static/image/common/back.gif
我也入手了一块,使用arduino中的库用I2C操作也不成功,通讯不上,不知何原因,根据手册,模块的默认地址是 ...

我的也是不好使,I2C用arduino地址扫描连程序都不运转,不知道会么原因...折腾几回模块好像坏了100大洋没了。上位机,都没动静....

glmyc 发表于 2016-5-31 13:50:55

用TTL接连串口,也经常没有声音,有没有IIC成功经验的

glmyc 发表于 2016-5-31 15:09:05

本帖最后由 glmyc 于 2016-5-31 18:41 编辑

I2C 通讯模式

硬件连接
XFS5152CE 采用的标准 I 2 C 总线接口,设置为 Slave 身份。I 2 C 总线是一个为简化多个智能设
备之间相互传输信息而设计的两线、双向网络。ISL接SCL,ISA接SDA,按图要在SCL和SDA接一个上拉电阻拼VCC。

通讯传输字节格式
XFS5152CE 作为 I2C 接口的从设备, 设备地址为: 0x80。
为保证通讯的稳定性,XFS5152CE 的 I2C 接口通信速度要求不高于 15KHZ。



不成功不知道是不是没有接上拉电阻还是通信速率快了。

加了6K上拉电阻也不行!

用串口看Wire.endTransmission()返回值为2,意思是说在地址发送时收到NACK信号。

glmyc 发表于 2016-5-31 18:44:26

本帖最后由 glmyc 于 2016-5-31 18:46 编辑

luckywang1103说:
    我们平时在调试I2C的时候可能很少去关注NACK信号,只知道如果Master发送数据,MSB先发,LSB后发,连续发送一个字节(8个bit),之后Slave会回复一个ACK信号,但是有时I2C slave可能会发出NACK信号,下面让我们来看看NACK信号存在的情况。

1、从spec下摘取一段:
    每个字节后会跟随一个ACK信号。ACK bit使得接收者通知发送者已经成功接收数据并准备接收下一个数据。所有的时钟脉冲包括ACK信号对应的时钟脉冲都是由master产生的。

      ACK信号:发送者在ACK时钟脉冲期间释放SDA线,接收者可以将SDA拉低并在时钟信号为高时保持低电平。

      NACK信号:当在第9个时钟脉冲的时候SDA线保持高电平,就被定义为NACK信号。Master要么产生STOP条件来放弃这次传输,或者重复START条件来发起一个新的开始。

3、实例:
    可以看到如下波形,Master发送01101100(0x6c,MSB先发),在第9个时钟的时候SDA为高电平,表示Slave发送了NACK信号,之后整个I2C通信就结束了。这是一次失败的I2C通信,原因可能是I2C设备那边出的问题,或者访问I2C设备的地址与I2C设备实际的地址不对应,导致没接收到Master的数据从而返回NACK。


页: [1]
查看完整版本: 讯飞XFS5152CE语音合成模块入手