IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32CubeMX系列教程9:LD3320语音识别模块使用 -> 正文阅读

[嵌入式]STM32CubeMX系列教程9:LD3320语音识别模块使用

摘要

??本章记录语音识别模块LD3320的驱动库的编写,主要用到的器件为LD3320语音识别模块与STM32F103C8T6单片机,同时参考了语音识别模块的相关资料与例程。模块的例程有些杂乱,所以将其移植到我自己的工程模板中,相关代码已上传到码云,有需要请自取 stm32-code,51单片机的代码MCS-51,这里以STM32为例,51单片机类似。

参考手册

在这里插入图片描述

??通过查阅LD3320数据手册,可知模块支持两种通信接口,这里我使用串行接口。注意使用串行接口需要拉高MD,拉低SPIS
在这里插入图片描述
??通过查阅LD3320原理图,发现MD与SPIS引脚都已经引出并作上拉操作,所以这里只需要在模块复位后拉低SPIS引脚即可。
在这里插入图片描述
在这里插入图片描述
??通过查阅LD3320开发手册的SPI时序,可知在进行SPI读写操作时,高位在前,需要先进行读写指令设置。并且时钟信号空闲状态为高电平,数据时在第一个边沿(下降沿)载入模块。

编写程序

初始化外设

??复制之前创建的STM32F103C8T6的工程模板,修改文件夹名称为STM32F103C8T6_LD3320,打开STM32CUBEMX工具,使能SPI通信。速度设为最低速度,CPOL = 1,CPHA = 0。使用软件片选SPI从机。并配置复位引脚,模式与中断引脚。生成代码。
在这里插入图片描述

移植驱动程序

??驱动程序根据模块例程移植。官方给的例程文件个人感觉有点乱,所以我就根据他的例程改了一份,这里公布出来,如有需要请去文章开头的Gitee下载。
??移植我的程序仅需要修改几个地方与单片机进行适配。将LD3320的驱动文件LD3320.cLD3320.h添加到工程后分别修改头文件与C文件中的几个接口函数就可以使用LD3320语音模块,当然,我这个只是一个功能测试代码,具体的使用方式与程序结构需要自行安排。

修改头文件LD3320.h

在这里插入图片描述
??打开头文件,蓝色框中表示的是模块需要识别的语句有几句,这里我设置了5种口令,所以是5个识别码。红色框中需要根据平台的不同,修改为对应的操作指令,比如LD_RST_H()表示将模块的RST引脚拉高的操作函数,这里我使用的是stm32的hal库操作引脚的方式,需要将这里修改为对RST引脚的正确操作代码。

修改LD3320.c文件

在这里插入图片描述
??打开C文件,这里需要修改这三个函数接口,分别为毫秒级延时函数,微妙级延时函数以及SPI通信的读写接口。这里Spi_RW_Data的两个参数分别为 *p需要输出的数据指针,len 需要输出的数据字节数,返回值为输出最后一个字节时通过SPI读取到的数据。
在这里插入图片描述
??这里不重要,可改可不改,与程序运行无关。

在这里插入图片描述

??这里插入对应识别码需要执行的代码。头文件中设定的CODE_1对应的口令与这里的对应。
在这里插入图片描述
??上面第一个红框中输入需要识别的拼音,比如第一个手电筒的拼音shou dian tong。第二个红框表示的是上面每个语句对应的识别码,手电筒对应的是CODE_1蓝色对应的是CODE_5
在这里插入图片描述
??这个函数为LD3320模块听到声音后需要触发的中断函数,需要在外部中断回调函数中调用此函数,比如我的代码中使用模块触发单片机的外部中断1,在中断回调函数中调用这个函数。
在这里插入图片描述

移植完成

??在单片机的主函数main()中初始化完成后,在主循环前调用LD3320_main()函数即可。
在这里插入图片描述

注意

  1. 本例程中用到了printf函数,如果需要工作状态输出的话,需要自行重定向printf到单片机的串口,可参考STM32CubeMX系列教程8:配置工程模板(串口+不定长数据收发+DMA+IDLE中断+软中断)重定向printf章节。
  2. 此驱动函数直接放到51单片机中可能会报内存空间不足的警告,需要进行一些优化,具体可参考我移植后的51单片机的代码MCS-51/STC89_LD3320
  3. 例程中LD3320_main()函数中有死循环,在循环中进行语音识别。如果要移植进入自己已有的工程需要自行调整相关代码。
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:06:46  更:2021-11-24 08:06:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:32:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码