STM32f401驱动【语音模块】

news/2024/11/23 20:11:26/

物理链路层

 

 需要处理VOICE_BUSY与VOICE_DATA线

VOICE_BUSY:PC4 通用输入

VOICE_DATA:PC5 通用推挽输出

BUSE线说明:有声音输出高、无声音时输出低、发协议码之前先判断是否忙碌

while(VOICE_BUSY);

VOICE_SEND(cmd);

数据层(软件层)

通过数据引脚(DATA)发送特定的协议码播报对应的语音

同步头:8ms高,1ms低

数据1:1.5ms高,0.5ms低

数据0:0.5ms高,1.5ms低

每次发送八位数据、先处理高位(MCU发到高位)

数据处理

//伪代码说明:先发送高位
void fun(u8 data)
{u8 i;for(i=0;i<8;i++){if(data & 0x80){DATA=1;}else{DATA=0;}data<<=1;}
}

代码流程分析

1.配置IO(PC4 输入 PC5 输出)

/*
Function name:Voice_Broad_Config
Description:MCU驱动语音模块基本配置
param:None
retval:None
Remarks:
PC5-->通用推挽输出
PC4-->通用输入
*/
void Voice_Broad_Config(void)
{/*************************库函数********************************/GPIO_InitTypeDef gpio_InitTypeDef;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);//打开PC时钟gpio_InitTypeDef.GPIO_Mode=GPIO_Mode_OUT;//通用输出模式gpio_InitTypeDef.GPIO_OType=GPIO_OType_PP;//输出类型 推挽gpio_InitTypeDef.GPIO_Pin=GPIO_Pin_5;//引脚gpio_InitTypeDef.GPIO_PuPd=GPIO_PuPd_NOPULL;//无上下拉gpio_InitTypeDef.GPIO_Speed=GPIO_Fast_Speed;//速度GPIO_Init(GPIOC,&gpio_InitTypeDef);gpio_InitTypeDef.GPIO_Mode=GPIO_Mode_IN;//通用输出模式gpio_InitTypeDef.GPIO_Pin=GPIO_Pin_4;//引脚GPIO_Init(GPIOC,&gpio_InitTypeDef);
}

2.同步头

/*
Function name:synchro_head
Description:同步头
param:None
retval:None
Remarks:
8ms高 1ms低
*/
void synchro_head(void)
{SEND_DATA=1;time_delay(8000);SEND_DATA=0;time_delay(1000);	
}

3.数据1

/*
Function name:data_1
Description:数据1
param:None
retval:None
Remarks:
1.5ms高 0.5ms低
*/
void data_1(void)
{SEND_DATA=1;time_delay(1500);SEND_DATA=0;time_delay(500);
}

4.数据0

/*
Function name:data_0
Description:数据0
param:None
retval:None
Remarks:
0.5ms高 1.5ms低
*/
void data_0(void)
{SEND_DATA=1;time_delay(500);SEND_DATA=0;time_delay(1500);
}

5.发送协议码(按先发送高位来)

/*
Function name:send_data_high
Description:先发送数据最高位
param:u8 data
retval:None
Remarks:
*/
void send_data_high(u8 data)
{u8 i;synchro_head();for(i=0;i<8;i++){if(data & 0x80)//第二种方法{data_1();}else{data_0();}data<<=1;}
}

6.判断BUSY线不忙的时候发(发声音时忙碌,无声音时不忙碌):注意两句话发出的间隔不能小于等于1ms

for(i=0;i<3;i++)
{send_data_high(i);while(REV_DATA);Delay_us(1100);
}


http://www.ppmy.cn/news/754313.html

相关文章

unity+pico neo3入门教程1-基础传送

tips&#xff1a;之前入门教程如果没有左手柄&#xff0c;查看一下自己的手柄设置&#xff0c;左右手柄&#xff0c; Helloworld型 1.基础传送&#xff0c;调式地面传送功能&#xff0c;通过手柄默认的“握手键”&#xff0c;瞬移&#xff0c; VR头显&#xff0c;添加Teleport…

ELK部署安装

目录 一、环境准备 1.准备三台服务器&#xff08;带图形化的linuxCentOS7&#xff0c;最小化缺少很多环境&#xff09; 2.修改主机名 3.关闭防火墙 4.elk-node1、elk-node2 用系统自带的java 5.上传软件包到node1和node2 二、部署elasticsearch 1、node1、node2操作 2.no…

dell电脑插耳机还外放

声卡驱动冲突&#xff0c;卸载其中一个

戴尔win10插耳机还外放_联想小新,win10系统,外放声音嘶哑,用耳机正常,现已找到解决办法,希望对面临同样困扰的朋友有所帮助!...

方法如下&#xff1a;找到控制面板—设备管理器—声音、视频和游戏控制器—双击Realtek(R) Audio—驱动程序—回退驱动程序&#xff08;R&#xff09;—点击确定。就恢复正常了。问题是声卡驱动自动更新后&#xff0c;不能和电脑匹配&#xff0c;所以要回到以前的驱动版本。我也…

笔记本电脑只能外放,插上耳机还是外放

一般来说声音的播放问题都是出在驱动上&#xff0c;网上有很多的硬件设置方法也可以试一下&#xff0c;如果都不行的话很可能是驱动误删了&#xff0c;可以在这个目录下看看有没有驱动&#xff1a;C:\Program Files\Realtek 如果没有的话就需要重新安装驱动了&#xff0c;网上…

search:笔记本插上耳机还是外放?(Dell win10)

怀疑是win10更新的问题&#xff0c;因为之前一直没出现过这种事 插上耳机仍外放&#xff0c;重启之后&#xff0c;刚开始可以 但是拔掉耳机再插上又不行了。。。 任务管理器&#xff0c;启用这“Waves MaxxAudio ...” 重启电脑后&#xff0c;它自启 之后插上耳机&#xff0c;他…

Python实现Excel的批量合并和拆分操作

Python实现Excel的批量合并和拆分操作 引言 Excel是一种常用的电子表格软件&#xff0c;广泛应用于数据处理、数据分析和报表生成等工作中。在处理大量的Excel文件时&#xff0c;人工逐个操作无疑是费时费力的。然而&#xff0c;通过使用Python编程语言和相关扩展库&#xff…

播放失败,请在设置中切换输出设备(电脑插入耳机还是外放的问题)

https://zhidao.baidu.com/question/2204377126188229188.html我先看的这个百度网友的评论 找到桌面“此电脑”&#xff0c;单击右键“管理”&#xff0c;找到“设备管理器”&#xff0c;“声音、视频和游戏控制”&#xff0c;找到下图中箭头指的那一个 选中“Realtek High D…