讯飞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");
}
多少钱?效果如何? 建议用MEGA2560,有多个串口就不会有冲突了。
讯飞还有这个硬件设备啊?赶紧去搜下。。看起来很好玩的样子。 我也入手了一块,使用arduino中的<wrie.h>库用I2C操作也不成功,通讯不上,不知何原因,根据手册,模块的默认地址是:0x80。
不知您有没有试过I2C的操作方式? freebit 发表于 2016-4-29 12:33 static/image/common/back.gif
我也入手了一块,使用arduino中的库用I2C操作也不成功,通讯不上,不知何原因,根据手册,模块的默认地址是 ...
我的也是不好使,I2C用arduino地址扫描连程序都不运转,不知道会么原因...折腾几回模块好像坏了100大洋没了。上位机,都没动静.... 用TTL接连串口,也经常没有声音,有没有IIC成功经验的 本帖最后由 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: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]