科大讯飞语音芯片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在. 平时,这种整合被分成两个, ...
随机推荐
- Kubernetes概念之mater、node
很久没写博客了,终于把重心找回来了,不过没有以前有斗志.有理想.有目标了.慢慢来.你若问我我最近几年的规划是什么,还真不知道.突然发现摧毁一个人真的很简单.k8s也是一遍一遍的从入门到放弃,还是要好好 ...
- Fundebug 微信小程 BUG 监控插件更新至 1.2.1,优化错误上报次数的限制算法,新增 silentHttpHeader 配置选项
摘要: 1.2.1优化错误上报次数的限制算法,新增silentHttpHeader配置选项,请大家及时更新哈! Fundebug提供专业的微信小程序 BUG 监控服务,可以第一时间为您捕获生存环境中小 ...
- MySQL5.7 安装和配置环境变量
安装 1.下载安装包 官网地址:https://dev.mysql.com/downloads/mysql/ 2.选择 Custom,自定义 3.根据自己系统选择 x64还是x86,然后点击第一个箭头 ...
- lower_case_table_names和数据库在Linux和windows平台之间的相互迁移问题
MySQL关于 lower_case_table_names 的文档 https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivi ...
- 一文教你如何使用miniconda
安装python 之前安装python包,导致了python里面的包不兼容,用管理工具卸载也下载不掉,重新安装也安装不上,没有办法只能卸掉python重装. 安装Anaconda Anaconda指的 ...
- 子网掩码的作用与IP网段的划分
公有IP地址分类 A类:1.0.0.0 到 127.255.255.255主要分配 给大量主机而局域网网络数量较少的大型网络 B类:128.0.0.0 到191.255.255.255 一般用于国际性 ...
- recon-ng打开后显示No modules enabled/installed
今天开始学习使用 recon-ng,进去后发现这么一行: 原因 在网上找了挺久,发现了这篇文章:Recon-ng v5 Tutorial, 原来是更新的原因,需要我们自行安装模块(旧版本是自带了许多模 ...
- MySol序
1.mysql是基于C/S端的服务器软件 mysql服务端: server端开启,对文件的增删改查 , musql客户端::连接S端, 发送指令 isnert into t1 values(1); 2 ...
- vue-router路由嵌套与二级路由重定向
(1)公共路由裁减 不是每个页面都存在导航,所以不要把导航组件在根组件APP.vue里引入,哪个页面需要,在哪里引入即可. 方案: 哪个页面需要,在哪个页面引入即可 (2)嵌套路由 注意:childr ...
- 【Js】创建对象的6种方式总结、(底部包含属性名为动态的形式)
一.new 操作符 + Object 创建对象 1 var person = new Object(); 2 person.name = "lisi"; 3 person.age ...