清洁机器人之音频方案 ISD2360 开发总结1
文章目录
- 一. **ISD2360 音频方案**
- 1.开发环境搭建篇
- 2.常见开发问题
-
-
- 2.1 **问:**QFN32 and SOP16 都可以供应?
- 2.2 问:官方网站上的I2360SYI 就是这个ISD2360吧?
- 2.3 问:芯片丝印 SYI YYI什么区别
- 2.4 问:QFN 32 的封装多了这么PIN 脚?实际没看到功能差异啊
- 2.5 问:8 kHz/4-bit ADPCM 这个是基于8K 8BIT的 PCM转?还是8K 16BIT的 PCM转?
- 2.6 问:外面的音频录制文件 之前没有录制过8K 16BIT这种格式.你们有工具可以转?
- 2.7 问:ADPCM 有2种 这个cool edit 转成microsoft 还是dia的? 还是DVI/IMA?
- 2.8 问:这种ADPCM 的专业芯片 与MCU 直接进行软件ADPCM 解码再播放的优势是什么?
- 集成音频功放 ,音频存储FLASH的综合成本低? 降低MCU CPU 占有率?
- 2.9 问:喇叭的选择如何确定?选择多少阻抗 如8欧姆 1W 。供电电压不同的情况下,看手册可以支持到6V
- 2.10问: SPI 接口可以配置成GPIO,这个GPIO啥作用?什么产品场景下使用?
- 2.11 问:Audio streaming for up to 3 channels can be mixed and played back concurrently 这个3 channels 是什么含义?
- 2.12 问:这个EXT模式对吗?是不是usb设备没识别 控制不了音频板子
- 2.13 问:用安装目录下的工程,如何播放出声音?
- 2.14 问:burn device 烧写数据?
- 2.15 问:喇叭电源单独供电?3.3还是5V
- 2.16 问:上位机控制音频播放方法
- 2.17 问:上位机按照上图 无法播放出声音?USB 转接板+ISD2360全部链接好的
- 2.18 手动安装驱动方法
- 2.19 问:3.3V 下的供电 喇叭声音咋这么小 8欧姆 1W的喇叭 蚊子叫一样 很轻
- 2.20 问: voice macros voice prompts 这个两个啥区别
- 2.21 问:友商的芯片电源与喇叭电源也是共用一个? MCU是3.3V的供电 ,ISD 如果VDD 是5V ,两者SPI通信的电平不匹配
- 2.22 问:ISD 支持音量控制吗?
- 2.23 问:PWM 载波频率如何选?
- 2.24 问:压缩算法如何选 ?不同的 voice propts
- 2.25 问:生产的时候用什么烧写?
- 2.26 问: 后续用MCU进行升级音频资源文件的话 ,用这几个命令?
- 2.27 问 :一拖八的量产烧录器---那我这边如何做出一个烧写文件
- 2.28 问:有一拖八的量产烧录器--多少钱一个的 ?
- 2.29问:其他友商是根据芯片下订单 直接找你们烧写吗?还是买芯片回来 用这个烧录器烧写?
- 2.30 问:这个SPI CLK 按照手册 最小是60NS ,转换成频率的话是 16.67MHZ SPI 的频率并不高
- 提供的代码的是GPIO 模式的,实际如果以SPI控制 一般用多少的频率
- 2.31 问:录音棚的录音文件 一般是44.1KHZ 16BIT 或者48KHZ 这两种频率都可以作为输入?
- 2.32 问:pin脚的功能 是可以通过上位机下载的程序直接配置好的吗?
- 2.33 问:这个Play_Vp 函数的index参数如何传递
- 2.33 问:单个音频播放完成如何判断?
- 2.34 问:播放声音结束一直查状态?还是用INT B中断?用中断如何做 ,INTB中断 有时候不产生。
- 2.35 问:Reset_Device 这个什么时候使用?
- 2.36 问:上位机单独发送SPI命令 模拟MCU控制如何发送?
- 2.37 问:Config_GPIO4_RDY函数 这个需要调用来配置RDY IO吧? 每次发命令前读取下 RDY状态?
- 2.38 问:路径设置是去如何的?mem to pwm
- 2.39 问: POI PU WAKEUP 是必须的VM?
- 2.40 问:这个checksum软件算法是什么?后续需要通过SPI 升级 ,需要校验是否升级正确
- 2.41 问:fletcher32_RevrseCalculate 函数参数的data --?传递的是结束地址?
- 2.42 问:软件计算的 跟硬件计算的不一致?check sum配置 流程问题?
- 2.43 问:进行check sum校验和之前 这个REG4 的BIT 4 写1 ?
- 2.44 问:INT B 管脚的中断 请跟原厂确定一下 是否可用 ? 按道理可用啊 不然不是鸡肋啊. 没有中断 太麻烦 ,异常的时候什么时候出现都不知道
- 2.45 问:播放静音 一般什么时候使用?
- 2.46 问: WP RP CEP 的目的是什么?保护数据根本保护不了 啊 ,发个命令 写寄存器 去除保护就可以解除。这种意义是什么呢?
- 2.47 问:这个device image iD是什么用途?能否指定位置?这个不能指定存储位置 ?
- 2.48问:device image iD是什么用途? 看了BIN LAYOUT 存储在最后的256 字节开始处
- 2.49问:自定义了VM 这个是十进制还是16进制?
- 2.46 问: WP RP CEP 的目的是什么?保护数据根本保护不了 啊 ,发个命令 写寄存器 去除保护就可以解除。这种意义是什么呢?
- 2.47 问:这个device image iD是什么用途?能否指定位置?这个不能指定存储位置 ?
- 2.48问:device image iD是什么用途? 看了BIN LAYOUT 存储在最后的256 字节开始处
- 2.49问:自定义了VM 这个是十进制还是16进制?
-
一. ISD2360 音频方案
1.开发环境搭建篇
ISD2360开发小板+USB 下载控制器+上位机软件+文档资料(手册+DEMO说明)
The ISD2360 evaluation kit consists of three parts:
- ISD-DEMO2360 (QFN or SOP)
- ISD-ES_MINI_USB: a small interface board providing USB connection to PC
- ISD-VPE2360: free downloadable GUI evaluation software for ISD2360.
-
EN_ISD2360_Datasheet_Rev1-0.pdf
-
EN_ISD2360_Design_Guide_Rev1.15.pdf
-
EN_ISD-DEMO2360_User_Manual.pdf
-
VPE2360_Win7-64bit_236.0010.zip
其中VPE软件:用户名 Linpo SH 密码 47406216
2.常见开发问题
2.1 **问:**QFN32 and SOP16 都可以供应?
答:应该是sop16的,两个管脚功能是一样的,QFN不过是多了些NC空脚
2.2 问:官方网站上的I2360SYI 就是这个ISD2360吧?
答:是的
2.3 问:芯片丝印 SYI YYI什么区别
答:SYI --SOP
YYI-QFN32
2.4 问:QFN 32 的封装多了这么PIN 脚?实际没看到功能差异啊
答:是的,仅是封装差异
2.5 问:8 kHz/4-bit ADPCM 这个是基于8K 8BIT的 PCM转?还是8K 16BIT的 PCM转?
答:印象里是8k16bit
2.6 问:外面的音频录制文件 之前没有录制过8K 16BIT这种格式.你们有工具可以转?
答:cool edit
2.7 问:ADPCM 有2种 这个cool edit 转成microsoft 还是dia的? 还是DVI/IMA?
答:microsoft的
2.8 问:这种ADPCM 的专业芯片 与MCU 直接进行软件ADPCM 解码再播放的优势是什么?
集成音频功放 ,音频存储FLASH的综合成本低? 降低MCU CPU 占有率?
答:对,还有调试简单了
音源按序号放入VPE软件,生成ISD2360固件下载到ISD2360中,MCU只要通过SPI 发送 播放哪一段音源或几段音源的组合即可播放音频。
2.9 问:喇叭的选择如何确定?选择多少阻抗 如8欧姆 1W 。供电电压不同的情况下,看手册可以支持到6V
答:是的,8Ω1W的
2.10问: SPI 接口可以配置成GPIO,这个GPIO啥作用?什么产品场景下使用?
答:一般demo模式下用,相当于按键触发播放。
2360两种触发方式,一个是按键触发,一个是MCU通过SPI 发送命令触发
VPE安装好后,在安装目录下有例程,一般都是按键触发的
2.11 问:Audio streaming for up to 3 channels can be mixed and played back concurrently 这个3 channels 是什么含义?
答:声音可以3通道播放,类似背景音的效果
就是说可以支持最多3个声道的含义,看手册说实际播放是时分复用模式
2.12 问:这个EXT模式对吗?是不是usb设备没识别 控制不了音频板子
答:看图片,插反了。demo板翻过来,芯片朝上
2.13 问:用安装目录下的工程,如何播放出声音?
答:我记得安装目录下的例程都是按键触发的
2.14 问:burn device 烧写数据?
答:对的,烧之前要先 。
2.15 问:喇叭电源单独供电?3.3还是5V
答:都可 。但是建议喇叭5V 不然 ,喇叭功率上不去。
2.16 问:上位机控制音频播放方法
答:
2.17 问:上位机按照上图 无法播放出声音?USB 转接板+ISD2360全部链接好的
关掉,拔掉USB,然后重新插上打开,还是不行
答:是不是驱动没装好。安装好的电脑是
2.18 手动安装驱动方法
驱动安装选这个路劲
手动安装后如下:
2.19 问:3.3V 下的供电 喇叭声音咋这么小 8欧姆 1W的喇叭 蚊子叫一样 很轻
答:要达到1w的输出需要5.5v的驱动 然后声音的大小还有很多影响因素,比如音腔、音源本身、电压等等
2.20 问: voice macros voice prompts 这个两个啥区别
看index 是从0 开始的,voice macros 是0-B voice prompts 是C-12
答:简称VP是音源,VM是编辑过得,可能是几个VP的组合
2.21 问:友商的芯片电源与喇叭电源也是共用一个? MCU是3.3V的供电 ,ISD 如果VDD 是5V ,两者SPI通信的电平不匹配
PWM 供电这样的话 得单独供应才正确
答:可以把电源分开,VCCD给3.3,VCC_PWM给5v
2.22 问:ISD 支持音量控制吗?
支持音量控制的。
从这个寄存器看出,音量控制默认是0dB ,其他的控制都是减少音量.默认是最大音量
2.23 问:PWM 载波频率如何选?
这个不要动了,默认已经优化到最好了
2.24 问:压缩算法如何选 ?不同的 voice propts
根据你需求手动调整,单独不同的都是可以的.默认就是你声音导进来的时候按照默认的压缩算法
2.25 问:生产的时候用什么烧写?
就用这个调试器,或者有一拖八的量产烧录器,我们也提供付费代烧录服务
2.26 问: 后续用MCU进行升级音频资源文件的话 ,用这几个命令?
对的,其实和烧录spi flash一个道理
2.27 问 :一拖八的量产烧录器—那我这边如何做出一个烧写文件
mem文件
2.28 问:有一拖八的量产烧录器–多少钱一个的 ?
2000多RMB好像,要问下销售
2.29问:其他友商是根据芯片下订单 直接找你们烧写吗?还是买芯片回来 用这个烧录器烧写?
看具体芯片用量
2.30 问:这个SPI CLK 按照手册 最小是60NS ,转换成频率的话是 16.67MHZ SPI 的频率并不高
提供的代码的是GPIO 模式的,实际如果以SPI控制 一般用多少的频率
答:不高的,gpio模拟都可以实现
2.31 问:录音棚的录音文件 一般是44.1KHZ 16BIT 或者48KHZ 这两种频率都可以作为输入?
可以,上位机会自己转的,不过只有wav格式哦 。
2.32 问:pin脚的功能 是可以通过上位机下载的程序直接配置好的吗?
是的,芯片上电后自动执行POI VM。里面定义POI执行的动作。
2.33 问:这个Play_Vp 函数的index参数如何传递
void Play_Vp(unsigned int index)
{
Spi_Enable();
SendByte(Play_Vp_Code);
SendByte((unsigned char)(index>>8));
SendByte((unsigned char)index);
Spi_Disable();
}
播放单个音源的命令是a6,那么命令加上个16位的地址位这里是index号,那么就是发送比如a6 00 09就是播放第9号音源
2.33 问:单个音频播放完成如何判断?
查询状态
while (1) { ReadStatus(); printf("Device_status 0x%02x\r\n", Device_status[0]); printf("Device_status 0x%02x\r\n", Device_status[1]);if(Device_status[0] == 0x40 )break;else if(Device_status[0] == 0x60 && Device_status[1] == 0x01)//play end{ReadInt();//clear int statuscontinue;} Delay_10ms(); }
2.34 问:播放声音结束一直查状态?还是用INT B中断?用中断如何做 ,INTB中断 有时候不产生。
13 GPIO3/INTB O
Active low interrupt request pin.
This pin is an open-drain output
答:一般都是用的查询的方式,中断的目前不支持
查询的话可以在这个界面直观的看出来哪些状态位,中断位变化了
2.35 问:Reset_Device 这个什么时候使用?
软件复位 ,一般用不到吧。
备注:
JTAG直接下载程序不断电运行,与ISD2360重新断电上电启动的状态数值不一样。
需要硬件支持下 可控制ISD2360电源的通断,这样可做硬件复位。
2.36 问:上位机单独发送SPI命令 模拟MCU控制如何发送?
2.37 问:Config_GPIO4_RDY函数 这个需要调用来配置RDY IO吧? 每次发命令前读取下 RDY状态?
答:这个用来看命令是否忙状态,RDY高电平的时候命令才会接收
2.38 问:路径设置是去如何的?mem to pwm
答:默认就是
2.39 问: POI PU WAKEUP 是必须的VM?
答:power up的动作就会执行PU,里面就会有REG2的配置,配置了就好了 。这3个是默认的
2.40 问:这个checksum软件算法是什么?后续需要通过SPI 升级 ,需要校验是否升级正确
答:design guide里面有的
2.41 问:fletcher32_RevrseCalculate 函数参数的data --?传递的是结束地址?
unsigned int fletcher32_RevrseCalculate(unsigned char *data, size_t len){ int temp; unsigned int sum1 = 0xffff, sum2 = 0xffff; while (len) { unsigned tlen = len> 360 ? 360 : len; len -= tlen; do { sum1 += *data; data--;
答:地址是结束地址
2.42 问:软件计算的 跟硬件计算的不一致?check sum配置 流程问题?
答:传入flash结束地址,计算出来的check sum也跟上位机计算出来的不一致
同一固件可几种计算。
上位机对固件 按照算法进行软件计算
MCU处理器运行算法按照软件计算
linux开发环境下 linux c运行算法按照软件计算
MCU发送计算checksum命令给ISD2360 进行硬件计算
2.43 问:进行check sum校验和之前 这个REG4 的BIT 4 写1 ?
byData = Read_CFG_REG(REG4); printf("byData 0x%02x\r\n", byData); byData |= 1<<4 ; Write_CFG_REG(REG4,byData);
To recalculate the checksum with a different end address, the user must write register 1 followed
by 0 to CFG_REG4 bit-4 to clear the registers 0x10 – 0x13.
这句英文有点绕. 写BIT 4 为1 后 REG 0x10
答:checksum流程:
1、复位checksun寄存器,B8命令写04寄存器,先写10,再写00即可,命令为:B8 04 10,B8 04 00;
2、checksum命令 F2 +endaddress,命令为 F2 03 B7 FF;
3、依次读取checksum值寄存器10-13,命令为:BA 10 00,BA 11 00,BA 12 00,BA 13 00
04寄存器 BIT 4,需要先写1 再写0 。
2.44 问:INT B 管脚的中断 请跟原厂确定一下 是否可用 ? 按道理可用啊 不然不是鸡肋啊. 没有中断 太麻烦 ,异常的时候什么时候出现都不知道
答:不可用
2.45 问:播放静音 一般什么时候使用?
一般在组合的时候用,比如音源“今天的温度是”“三十”“二”“摄氏度”,为了调整中间的间隔会添加一些静音来使听感上舒服一些
VM编辑使用了
2.46 问: WP RP CEP 的目的是什么?保护数据根本保护不了 啊 ,发个命令 写寄存器 去除保护就可以解除。这种意义是什么呢?
答:只是为了误擦除操作而已,不是像MCU那种保护芯片的意思
2.47 问:这个device image iD是什么用途?能否指定位置?这个不能指定存储位置 ?
答:不可以
2.48问:device image iD是什么用途? 看了BIN LAYOUT 存储在最后的256 字节开始处
答:单独存放在256 字节开始处
2.49问:自定义了VM 这个是十进制还是16进制?
答:16进制
“摄氏度”,为了调整中间的间隔会添加一些静音来使听感上舒服一些
VM编辑使用了
2.46 问: WP RP CEP 的目的是什么?保护数据根本保护不了 啊 ,发个命令 写寄存器 去除保护就可以解除。这种意义是什么呢?
答:只是为了误擦除操作而已,不是像MCU那种保护芯片的意思
2.47 问:这个device image iD是什么用途?能否指定位置?这个不能指定存储位置 ?
答:不可以
2.48问:device image iD是什么用途? 看了BIN LAYOUT 存储在最后的256 字节开始处
答:单独存放在256 字节开始处
2.49问:自定义了VM 这个是十进制还是16进制?
答:16进制