科大讯飞语音芯片xfs5152CE,分享遇到的一些坑
首先 芯片手册的I2C地址是写地址,是8位的,真正的地址是7位地址,应该是0x40,最低位是读写位,读置1,为0x81,写置0,为0x80.
如果是模拟I2C倒无所谓,最坑的是我用的是寄存器,所以必须要用7位地址才可以,这个地方坑了我好几天。
其次,在用uart串口的是时候,每次上电芯片会返回一个状态值0x4A,但I2C是不会主动返回的,需要你去读取
我是在写入语音之后接着读取状态字节

上电第一次写入数据并读取,会得到0x4A,之后的再读取都是0x41,0x4F

程序部分
我用的是msp430F5438A,I2C3
void i2c3_start(unsigned char address)
{
UCB3I2CSA = address;
while(UCB3CTL1 & UCTXSTP);
UCB3CTL1 |= (UCTR + UCTXSTT);
while(!(UCB3IFG & UCTXIFG));
UCB3IFG &= ~UCTXIFG;
}
void i2c3_writebyte(unsigned char data)
{
UCB3TXBUF =data;
while(!(UCB3IFG & UCTXIFG));
UCB3IFG &= ~UCTXIFG;
}
void i2c3_writeNbyte(unsigned char* data,int len)
{
for(int i=;i<len;i++)
{
i2c3_writebyte(*data++);
}
}
void i2c3_readNbyte(unsigned char *data,unsigned char len)
{
UCB3CTL1 &= ~UCTR;
UCB3CTL1 |= UCTXSTT;
for(int i=;i<len;i++)
{
while(!(UCB3IFG & UCRXIFG));
UCB3IFG &= ~UCRXIFG;
if(i==len-)UCB3CTL1 |= UCTXSTP;
*data++ = UCB3RXBUF;
}
}
int xfs_set(unsigned char* cmd,int len,unsigned char *data,int n)
{
i2c3_start(0x40);
i2c3_writeNbyte(cmd,len);
i2c3_readNbyte(data,n);
return ;
}
未完待续
8月19号更新
上面的停止条件处需要加上标志位判断,不然后续i2c控制会卡死
void i2c3_readNbyte(unsigned char *data,unsigned char len)
{
UCB3CTL1 &= ~UCTR;
UCB3CTL1 |= UCTXSTT;
for(int i=;i<len;i++)
{
while(!(UCB3IFG & UCRXIFG));
UCB3IFG &= ~UCRXIFG;
if(i==len-)
{
UCB3CTL1 |= UCTXSTP;
while(UCB3CTL1 & UCTXSTP);
}
*data++ = UCB3RXBUF;
}
}
更新
以上为原创,请勿转载
欢迎讨论!
科大讯飞语音芯片xfs5152CE,分享遇到的一些坑的更多相关文章
- 安卓TTS语音合成经验分享(科大讯飞语音+)集成
应用场景:足浴软件,技师钟房安排调派和队列排序查看,语音播报提醒.老程序是使用双屏显卡,windows系统PC上运行一个无人值守桌面程序.如今安卓机顶盒(WIFI)和MINI电视棒通过HDMI接口和支 ...
- OTP语音芯片和掩模语音芯片(mask)的区别
OTP(One Time Programable)是MCU的一种存储器类型,意思是一次性可编程:程序烧入IC后,将不可再次更改和:因此OTP语音芯片就是指一次性烧录的语音IC. 从OTP定义上来看,只 ...
- AngularJS进阶(十八)在AngularJS应用中集成科大讯飞语音输入功能
在AngularJS应用中集成科大讯飞语音输入功能 注:请点击此处进行充电! 前言 根据项目需求,需要在首页搜索框中添加语音输入功能,考虑到科大讯飞语音业务的强大能力,遂决定使用科大讯飞语音输入第三方 ...
- 专业语音芯片MT8516 华为AM08蓝牙音箱
天猫精灵和亚马逊专用的语音芯片哦!联发科! 华为AM08蓝牙音箱 WT51F5161T的8052 微处理器,RC内振12MHz,具有16Kx8 的flash,硬件IIC,SPI,CEC,IR,RTC, ...
- 转:基于科大讯飞语音API语音识别开发详解
原文来自于: http://www.52wulian.org/android_voice/ 最近项目需要用到android语音识别,立马就想到科大讯飞,结合官方实例及阅读API文档,初步的完成了And ...
- 基于科大讯飞语音云windows平台开发
前记: 前段时间公司没事干,突发奇想想做一个语音识别系统,看起来应该非常easy的,但做起来却是各种问题,这个对电气毕业的我,却是挺为难的.谷姐已经离我们而去,感谢度娘,感谢CSDN各位大神,好歹也做 ...
- <交流贴>android语音识别之科大讯飞语音API的使用
因为最近在研究语音识别,所以借鉴了一下CreAmazing网友的帖子 Android系统本身其实提供有语音识别模块,在它的APIDemo里也有关于语音识别的sample,不过经过大多开发者的真机测 ...
- ROS语音交互(三)科大讯飞语音在ROS平台下使用
以上节tts语音输出为例 下载sdk链接:http://www.xfyun.cn/sdk/dispatcher 1.下载SDK,解压: 2.在ROS工作空间下创建一个Package: catkin_c ...
- Android 通过调用系统,如接口 谷歌语音、百度语音、科大讯飞语音等语音识别方法对话框
现在app在发展过程中会集成一些语音识别功能,不具有其自己的显影剂一般正在开发的语音识别引擎,所以在大多数情况下,它是选择一个成熟的语音识别引擎SDK集成到他们的app在. 平时,这种整合被分成两个, ...
随机推荐
- nginx rewrite模块
return 从0.8.42版本开始, return 语句可以指定重定向 url (状态码可以为如下几种 301,302,303,307), 也可以为其他状态码指定响应的文本内容,并且重定向的url和 ...
- mysql 无法连接提示 Authentication plugin 'caching_sha2_password' cannot be loaded
mysql 无法连接提示 Authentication plugin 'caching_sha2_password' cannot be loaded 可能是密码没有设置或者,密码设置类型不符,可参考 ...
- MySQL数据备份概述
MySQL备份类型 热备份.温备份.冷备份 (根据服务器状态) 热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 物理备份与逻辑备份 (从对象来分) 物理备份 ...
- php静态化介绍
1.动态URL地址设置成静态形式http://state.com/index.php?c=play&a=index&id=16267 ------>http://state.co ...
- Codeforces G. The Brand New Function(枚举)
题目描述: The Brand New Function time limit per test 2 seconds memory limit per test 256 megabytes input ...
- 使用ARP获取局域网内设备IP和MAC地址
根据Arp列表数据,查询本地设备在线状态 使用 arp -a 获得所有内网地址,首先看Mod对象 public struct MacIpPair { public string HostName; p ...
- LCD编程_画点线圆
上篇博客中进行了lcd的简单测试,这篇博客将进行更加复杂的测试——画点.画线.画圆.画线和画圆是在画点的基础上实现的,因此本篇博客重点实现画点操作. 先抛出这样的一个问题,已知: (x,y)的坐标: ...
- shell脚本启动所有集群节点
#profile变量追加到.bashrc中 cat /etc/profile >> ~/.bashrc #start-all-cluster.sh 启动脚本 #!/bin/bash ec ...
- mysql命令查询语句&MTdata
1.单表查询 select * from student; 采用*效率低,不推荐,多用列名 一.单表查询的语法: SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY ...
- mybatis学习3
parameterType(输入类型) 传递简单类型::使用#{}占位符,或者${}进行sql拼接 传递pojo对象: Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为p ...