极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 27842|回复: 8

讯飞XFS5152CE语音合成模块入手

[复制链接]
发表于 2015-7-7 16:24:28 | 显示全部楼层 |阅读模式
本帖最后由 savagego 于 2015-7-7 16:29 编辑


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

  9. void loop() // run over and over
  10. {
  11.   byte aa[] = {0xFD, 0x00, 0x05, 0x01, 0x01, 0x31, 0x32, 0x34};
  12.   int i;
  13.   for (i = 0; i < sizeof(aa); i ++) {
  14.     mySerial.write(aa[i]);
  15.   }
  16.   Serial.println(digitalRead(8));//pin 8 连ready脚
  17.   delay(2000);
  18.   Serial.println(digitalRead(8));
  19.   delay(1000);
  20.   Serial.println("end");
  21. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-7-7 20:42:41 | 显示全部楼层
多少钱?效果如何?
回复 支持 反对

使用道具 举报

发表于 2015-7-8 08:03:44 | 显示全部楼层
建议用MEGA2560,有多个串口就不会有冲突了。
回复 支持 反对

使用道具 举报

发表于 2015-7-8 10:09:17 | 显示全部楼层
讯飞还有这个硬件设备啊?赶紧去搜下。。看起来很好玩的样子。
回复 支持 反对

使用道具 举报

发表于 2016-4-29 12:33:14 | 显示全部楼层
我也入手了一块,使用arduino中的<wrie.h>库用I2C操作也不成功,通讯不上,不知何原因,根据手册,模块的默认地址是:0x80。
不知您有没有试过I2C的操作方式?
回复 支持 反对

使用道具 举报

发表于 2016-5-4 23:37:54 | 显示全部楼层
freebit 发表于 2016-4-29 12:33
我也入手了一块,使用arduino中的库用I2C操作也不成功,通讯不上,不知何原因,根据手册,模块的默认地址是 ...

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

使用道具 举报

发表于 2016-5-31 13:50:55 | 显示全部楼层
用TTL接连串口,也经常没有声音,有没有IIC成功经验的
回复 支持 反对

使用道具 举报

发表于 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信号。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 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。


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 07:27 , Processed in 0.039992 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表