stm32单片机与LD3320语音模块交互法一

stm32单片机与LD3320语音模块交互法一

串口交互法链接

## 交互方式: stm32读取LD3320对应管脚的电平变化,实现控制

1. 硬件接线
LD3320 和 stm32
GND —— GND
5V —— 5V
注:
①LD3320的RXD,TXD,3.3V管脚可以不用管
②LD3320的P1^0外接一个LED小灯,小灯负极与LD3320和stm32共GND

2.LD3320 程序部分
LD3320参考官方的列程(YS-V0.7口令模式工程模板中),具体改动如下:
①main函数
stm32单片机与LD3320语音模块交互法一_第1张图片
stm32单片机与LD3320语音模块交互法一_第2张图片stm32单片机与LD3320语音模块交互法一_第3张图片
LD3320列程:
链接:https://pan.baidu.com/s/1DuKH3GuQ08w8RABLPgQajA
提取码:49xo

3.stm32 程序部分
大致的思路:通过stm32f103的一个管脚(PA1)去读取LD3320的P1^0管脚的电平变化,然后stm32另一个管脚(PA2)去控制LED小灯的状态

LD3320收到开灯指令, P1^0输出高电平,则stm32管脚PA1读取电平,PA2输出高电平
LD3320收到关灯指令, P1^0输出低电平,则stm32管脚PA1读取电平,PA2输出低电平

参考程序:


void GPIO_Configuration(void)
{	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);	
	GPIO_InitTypeDef GPIO_InitStructure;
	//输出管脚配置
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	//输入管脚配置
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //下拉输入
	GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
}

主函数:

#define LED GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) //读取PA1电平  
int main(void)
{
	GPIO_Configuration();
	while(1)
	{
		if(LED == 1)
		{					
			GPIO_SetBits(GPIOA,GPIO_Pin_2);	//PA2输出高电平
		}
		else
		{
			GPIO_ResetBits(GPIOA,GPIO_Pin_2);//PA2输出低电平		
		}
			
   }
}

4.总结
因此这里可以举一反三:比如其他打开舵机,打开风扇等指令只需修改相应的口令,配置对应的IO口即可实现控制。

优点:
整体的实现思路相比于串口交互就很简单,容易实现
缺点:
需要的模块较多的时候就比较浪费单片机的IO口

stm32单片机与LD3320语音模块交互法一_第4张图片
工程代码
链接:https://pan.baidu.com/s/1191TB0TjnUsKqab1KhVgpA
提取码:ar29

你可能感兴趣的:(实物制作,stm32,嵌入式,单片机)