基于STM32F401RET6的语音播报的实现

语音模块的简介

“智能锁开发平台”板载一个语音芯片和一个 8 1W 的喇叭,可以通过语音芯片和喇叭来播放 40 段语音 提示信息以及门铃音乐等。
语音芯片内的语音数据出厂时已经固化,用户不能自行烧录改变。

一:直流参数

   电源电压:2.0V-5.5V(投CODE前请先确定好电压,使内部晶振产生更加  符合规格)

   静态电流:小于10UA

这个模块的原理图如下所示

如下所示为每个引脚对应的功能

这个模块和单片机的通信时序为

1) 语言芯片内部语音编号数据输入管脚的空闲状态为“低电平”状态
2) 在每发一个语言编号数据信号前必须要有一个同步头,同步头格式为“ 8ms 的高电平 +1ms 的低电平
3) 1.5ms 的高电平 +0.5ms 的低电平”表示数据“ 1 ”,“ 0.5ms 的高电平 +1.5ms 的低电平”表示数据“ 0 ”。
4) 数据传输顺序为:先发送数据的最高位 BIT7 ,在发送 N-1 位,最后发送数据的最低位 BIT0

语音模块使用分析

语言芯片的“语言芯片测试管脚( PA0 )”通过一个按键和地连接,每按下一次按键,则会自动切换播放芯 片内部下一首语音。“语言芯片忙碌状态管脚(PB0 )”连接到 MCU PC4 管脚,“语言输入管脚( PA1 )” 连接到 MCU PC5 管脚只有在“语言输入管脚(PA1)”按语言芯片的通信时序发送“语音编号”表中对应 的编号指令 就可以播放相应的语言声音。

PB0脚(忙碌):有声音时输出高电平,无声音输出低电平。

语音编号表为
单片机按照一定的时序发送其中相应的指令给语音模块 语言芯片内部语音编号数据输入管脚(PA1)实现相应的播报
相关的代码如下
void VOICE_Init(void)
{
	//开启时钟
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);
	//初始化GPIOC
	GPIO_InitTypeDef GPIO_InitStruct = {0};
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;
	GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStruct.GPIO_Speed = GPIO_Fast_Speed;
	GPIO_Init(GPIOC,&GPIO_InitStruct);
}

这段为相应的初始化过程,配置了GPIO的初始化以及开启相应的时钟

void High(void)
{
	GPIO_SetBits(GPIO_DATA_PORT,GPIO_PIN_DATA);
	Delay_us(1500);
	GPIO_ResetBits(GPIO_DATA_PORT,GPIO_PIN_DATA);
	Delay_us(500);
}

高电平的条件为1.5ms的高电平加上0.5ms的低电平,代码如上


void Low(void)
{
	GPIO_SetBits(GPIO_DATA_PORT,GPIO_PIN_DATA);
	Delay_us(500);
	GPIO_ResetBits(GPIO_DATA_PORT,GPIO_PIN_DATA);
	Delay_us(1500);
}
低电平的条件为1.5ms的低电平加上0.5ms的高电平,配置低电平代码如上

void VoiceSendData(uint8_t data)
{
	uint8_t i = 0;
	GPIO_SetBits(GPIO_DATA_PORT,GPIO_PIN_DATA);
	Delay_ms(8);
	GPIO_ResetBits(GPIO_DATA_PORT,GPIO_PIN_DATA);
	Delay_ms(1);
	for(i = 0;i<8;i++)
	{
		if((data&0x80) == 0x80)
		{
			High();
		}
		else
		{
			Low();
		}
		data <<= 1;
	}
	GPIO_ResetBits(GPIO_DATA_PORT,GPIO_PIN_DATA);
}
这段的代码表示了单片机向语音模块的相应引脚发送相应指令的时序实现相应的语音播报
在每发一个语言编号数据信号前必须要有一个同步头
同步头过后为循环8次从高位到底为发送一个字节的指令相应的时序
发送完了之后把数据这个引脚重新置为低电平
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值