当前位置:网站首页>KT148A语音芯片ic的软件参考代码C语言,一线串口
KT148A语音芯片ic的软件参考代码C语言,一线串口
2022-07-02 18:41:00 【清月电子】
目录
一线通讯协议
目前芯片支持一线串口通讯协议,采用的也是高低电平时间宽度来确定0或者1 。
3.1 通讯格式

注意:必须高电平在前,低电平在后。
推荐使用 200us:600us。取值范围:窄脉冲=[150us--400us] 宽脉冲[500us--1000us]
注意使用 3:1 和 1:3 电平比例以保障通讯稳定。
注意起始的6ms低电平,初次调试时,尽量用示波器或者逻辑分析仪看一下,误差在10%左右都能接受
1、0x00H到0xDFH为声音地址码或定义功能码。
2、0xFE为语音停止码,发送该命令可以停止播放语音。
3、编码之间的间隔须大于20ms
3.2 通讯指令
NO.序号 | Data编码 | Voice语音表 |
0 | 0x00 | 保留 |
1 | 0x01 | 声音1 |
2 | 0x02 | 声音2 |
3 | 0x03 | 声音3 |
…… | ||
224 | 0xE0~0xEF | 15级音量,0xE0H为最小音量0,0xEFH最大音量 (上电默认)。 (若需要调节音量,则先发音量码,隔20ms再发声音码) |
225 | 0xF0 | 关机。进入超低功耗状态=1.7uA,详见4.3章节 进入此状态之后,还需要控制芯片,则需要先拉低DATA脚40ms 目的是唤醒芯片,就可以正常发指令控制了, |
242 | 0xF2 | 循环码 -- 详见4.1章节 若需要循环某个声音,则先发声音码,隔20ms再发循环码) |
243 | 0xF3 | 连码播放 -- 详见4.2章节 F3H+语音地址 A,语音地址 B,语音地址 C,… 在播放地址 A 的时候,收到后面的码不打断,播放完 A,就播放 B,然后播放 C…。F3 与地址之间需要加 20ms 的延时。而一组连码地址与下一组地址最大需要 40ms 延时(“F3+语音地址”为一组连码地址) |
254 | 0xFE | 停止码 |
/*******************************************************************************
- 函数说明:一线通数据发送【注意调试的时候,用示波器或者逻辑分析仪看一下脉冲宽度】
- 隶属模块:内部
- 参数说明:dat = 待发送的数据
- 返回说明:无
********************************************************************************/
#define IO1_HIGH() JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT |= BIT(6);
#define IO1_LOW() JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT &= ~BIT(6);
void oneline_send_one_data(u8 dat)
{
u8 i = 0 ;
IO1_LOW() ;/*现将总线拉低*/
udelay(5000) ;/*延时6MS --- 这里就是发起通讯的起始信号*/
CPU_SR_ALLOC();//关中断--芯片不同,可能接口不同
OS_ENTER_CRITICAL();//关中断
for(i=0 ; i<8 ;i++){
if(dat & 0x01){
IO1_HIGH() ;
udelay(500);/*延时600us*/
IO1_LOW();
udelay(170) ;/*延时200us*/
}else{
IO1_HIGH() ;
udelay(170);/*延时200us*/
IO1_LOW();
udelay(500) ;/*延时600us*/
}
dat = dat >> 1 ;/*发送的时候,先发送最高位,再发送次高位,以此类推*/
}
IO1_HIGH() ;/*空闲时将该脚拉高即可*/
OS_EXIT_CRITICAL();//开中断
/*同时注意,芯片初始化的时候,请将信号脚拉高。*/
}
oneline_send_one_data(0x05);//对应播放第5段声音 - 通讯举例F2--循环播放
void oneline_test_CMD_F2(void){
oneline_send_one_data(0x01) ;
udelay(20) ;/*延时25ms*/
oneline_send_one_data(0xF2) ;
udelay(20) ;/*延时25ms*/
} 实现的效果,就是第一段声音,循环播放,不停止。如果需要停止,可以发送FE指令
4.2 通讯举例F3--组合播放
void oneline_test_CMD_F3(void){
oneline_send_one_data(0xF3) ;
udelay(20) ;/*延时25ms*/
oneline_send_one_data(0x01) ;
udelay(20) ;/*延时25ms*/
oneline_send_one_data(0x02) ;
udelay(20) ;/*延时25ms*/
oneline_send_one_data(0x03) ;
udelay(20) ;/*延时25ms*/
} 组合播放第1段、第2段、第3段声音,依次按照顺序播放。如果需要停止,可以发送FE指令
同时,在组合播放的过程中,接收到新的组合播放数据,会停止当前的组合播放,转去播放新的指令
4.3 通讯指令F0描述【超低功耗】
1、专用于芯片进入超低功耗,因为芯片在播放结束之后,会自动进入待机状态,功耗维持在25uA 。
2、如果需要芯片的功耗再低,则需要发送F0指令,任何状态下都可以
3、芯片接收到F0指令之后,就会进入关机状态,功耗维持在1.7uA左右
4、如果需要芯片再次接收指令,必须先将dat信号拉低40ms,让芯片被唤醒,再发送数据就可以了
4.4 通讯细节注意事项
1、控制MCU上电之后,第一时间就要将通讯IO,也就是ONELINE脚设置为高电平输出
2、尽量和KT148A芯片的通讯之间,串1K的电阻,来适配不同的电平
3、芯片的2脚PB9,在播放的时候,电压大概是3.1V左右 。一旦进入空闲状态,此IO会变成2.8V左右
因为芯片内部有一个空闲进入低功耗待机的机制。
边栏推荐
- zabbix5客户端安装和配置
- Detailed tutorial on installing stand-alone redis
- 程序猿入门攻略(十二)——数据的存储
- 《代碼整潔之道》讀書筆記
- R language uses econcharts package to create microeconomic or macroeconomic maps, and indifference function to visualize indifference curve
- AcWing 1134. Shortest circuit counting problem solution (shortest circuit)
- Windows2008r2 installing php7.4.30 requires localsystem to start the application pool, otherwise 500 error fastcgi process exits unexpectedly
- AcWing 1137. 选择最佳线路 题解(最短路)
- MySQL
- 良心总结!Jupyter Notebook 从小白到高手,保姆教程来了!
猜你喜欢

搭建主从模式集群redis

AcWing 340. 通信线路 题解(二分+双端队列BFS求最短路)

搭建哨兵模式reids、redis从节点脱离哨兵集群

Quanzhi A33 uses mainline u-boot

Introduction to program ape (XII) -- data storage
Bubble sort array

良心总结!Jupyter Notebook 从小白到高手,保姆教程来了!

Refactoring: improving the design of existing code (Part 2)

AcWing 342. 道路与航线 题解 (最短路、拓扑排序)

Data dimensionality reduction principal component analysis
随机推荐
AcWing 1126. 最小花费 题解(最短路—dijkstra)
Advanced performance test series "24. Execute SQL script through JDBC"
Refactoring: improving the design of existing code (Part 1)
AcWing 340. 通信线路 题解(二分+双端队列BFS求最短路)
Windows2008R2 安装 PHP7.4.30 必须 LocalSystem 启动应用程序池 不然500错误 FastCGI 进程意外退出
450 Shenxin Mianjing 1
使用 Cheat Engine 修改 Kingdom Rush 中的金钱、生命、星
AcWing 341. 最优贸易 题解 (最短路、dp)
Detailed tutorial on installing stand-alone redis
AcWing 342. Road and route problem solving (shortest path, topological sorting)
What is the MySQL backup suffix_ MySQL backup restore
Correspondence between pytoch version, CUDA version and graphics card driver version
AcWing 903. 昂贵的聘礼 题解(最短路—建图、dijkstra)
Bubble sort array
c语言里怎么设立优先级,细说C语言优先级
Windows2008r2 installing php7.4.30 requires localsystem to start the application pool, otherwise 500 error fastcgi process exits unexpectedly
Getting started with typescript
Yes, that's it!
嵌入式(PLD) 系列,EPF10K50RC240-3N 可编程逻辑器件
Registration opportunity of autowiredannotationbeanpostprocessor under annotation development mode