STM32f4日记9之声控LD3320(您的私人语音助手MICRO)


/

注:网络上常见的关于此芯片的STM32F1系列代码不适用于STM32F4

板子:stm32f407zgt6正点原子迷你版
作者:shawn
2021.2.22
23:38
All rights reserved

//
鉴于目前网上的教学形态各异,很多带有迷惑、误导性质,所以写这篇文章交流自己的看法,也权当纪录自己的学习经历。
//
如果你觉得对你有帮助,请点赞同,这对我很重要,谢谢。
//
一、硬件介绍
LD3320 SPI版本

应用场景

LD3320是icroute公司针对非特定人声的语音识别芯片
而我们选择的SPI版本是将这个芯片集成到一块PCB板子上作为一个单独模块,
可以实现与大多数MCU的交互比如STC,STMF1,STMF4系列等等,
而某宝上还有常见的一种将单片机STC11跟此模块做到一个板子上的模块,价格更加低廉,属于串口版本,这篇文章我们讨论SPI版本的用法。
二、SPI通信的讲解
建议没接触过的同学点这里
我们根据正点做的库函数讲义再讲讲

四个接口控制分别为
MISO 主设备输入
MOSI 主设备输出
SCLK 时钟信号
CS 片选
SPI接口的优点
1.支持全双工操作;
2.操作简单;
3.数据传输速率较高。
同时,它也具有如下缺点:
1.需要占用主机较多的口线(每个从机都需要一根片选线);
2.只支持单个主机;
3.没有指定的流控制,没有应答机制确认是否接收到数据。
三、硬件接线
每一次的硬件连接都是让人头疼的,很多刚玩这个模块的同学看到这个模块,第一次接线就把所有3V3跟5V全接好,其实并不用,3V3,5V二选一接线就行,也就是说一共12个接口,只要接9个就足够划重点

RST复位,WR似乎是AD里面的写的意思,IRQ是中断
对于我的那块正点的迷你版,我分配的引脚如下
MI ---- PC2
MO ---- PC3
CLK ---- PB13
CS ---- PB1
RSR ---- PB6
IRQ ---- PE8

划重点
其他板子的用户记得看自己板子的原理图,找SPI总线这些MISO,MOSI,CLK对于SPIX都是固定的,其他随意,推荐使用STMCUBE看,简单直观。
分配IO是门哲学
四、软件编写
鉴于代码太长500多行我主要节选几个函数说说
需要的评论区留个邮箱我发你
主要的复用配置函数:
开SPI2

static void LD3320_SPI_cfg(void)               //  PC2   PC3   PB13
{SPI_InitTypeDef  SPI_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB1PeriphClockCmd(LD3320SPI_CLK,ENABLE);                   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin = LD3320SPIMISO_PIN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_Init(LD3320SPIMISO_GPIO_PORT,&GPIO_InitStructure);     GPIO_InitStructure.GPIO_Pin = LD3320SPIMOSI_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_Init(LD3320SPIMOSI_GPIO_PORT,&GPIO_InitStructure);        GPIO_InitStructure.GPIO_Pin = LD3320SPISCK_PIN;GPIO_Init(LD3320SPISCK_GPIO_PORT,&GPIO_InitStructure);      GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);GPIO_PinAFConfig(GPIOC, GPIO_PinSource3, GPIO_AF_SPI2);GPIO_PinAFConfig(GPIOC, GPIO_PinSource2, GPIO_AF_SPI2);LD_CS_H();                                                                        SPI_Cmd(LD3320SPI, DISABLE);SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;         SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                                  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                              SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                                        SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;                                   SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                                      SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;               SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                             SPI_InitStructure.SPI_CRCPolynomial = 7;                                       SPI_Init(LD3320SPI, &SPI_InitStructure);SPI_Cmd(LD3320SPI, ENABLE);spi_send_byte(0xFF);
}

主要控制函数

void LD3320_main(void)
{uint8 nAsrRes=0;LD3320_init();      printf("1流水灯\r\n"); printf("2闪烁\r\n");                printf("3按键触发\r\n");      printf("4全灭\r\n");            printf("5状态\r\n");        nAsrStatus = LD_ASR_NONE;while(1){switch(nAsrStatus){case LD_ASR_RUNING:case LD_ASR_ERROR:     break;case LD_ASR_NONE:nAsrStatus=LD_ASR_RUNING;if (RunASR()==0)                             {       nAsrStatus = LD_ASR_ERROR;}break;case LD_ASR_FOUNDOK:nAsrRes = LD_GetResult( );                                                        printf("\r\n识别码:%d", nAsrRes);                   switch(nAsrRes)                             {case CODE_LSD:                         printf("流水灯 指令识别成功\r\n"); break;case CODE_SS:                         printf("闪烁 指令识别成功\r\n"); break;case CODE_AJCF:                            printf("按键触发 指令识别成功\r\n"); break;case CODE_QM:                            printf("全灭 指令识别成功\r\n");break;case CODE_JT:                           printf("状态 指令识别成功\r\n");default:break;}   nAsrStatus = LD_ASR_NONE;break;case LD_ASR_FOUNDZERO:default:nAsrStatus = LD_ASR_NONE;break;}Board_text(nAsrRes );}
}

五、实验视频
点这里

六、其他
我给自己的这款语音助手取名micro
你的呢,欢迎在评论区留言
//
七、代码下载
点这里
我已设置关注我就可以免费下载,关注我一定不会让你失望!

//
作者:shawn
2021.2.22
23:38
All rights reserved

STM32f4日记9之LD3320语音识别(您的私人语音助手MICRO)相关推荐

  1. LD3320语音识别模块开发

    达者为先  师者之意 LD3320语音识别模块开发 1 LD3320语音识别模块基本参数 1.1 基本参数 1.2 识别原理 1.3 解决方案: 2 LD3320语音识别模块二次开发 2.1 源码修改 ...

  2. 基于Arduino IDE开发的LD3320语音识别模块

    基于Arduino的LD3320语音识别模块设计详解 文章目录 基于Arduino的LD3320语音识别模块设计详解 前言 一.LD3320驱动编写 step 1.0 使用Arduino的SPI库,通 ...

  3. LD3320语音识别模块分析

    LD3320语音识别模块分析   LD3320是非特定人语音识别芯片,即语音声控芯片.最多可以识别50条预先内置的指令. 识别原理  声音分帧:   声音是一种波,常见的mp3等格式都是压缩格式,必 ...

  4. 基于FPGA的LD3320语音识别模块驱动设计

    一.设计要求 以FPGA为控制核心,接收语音控制信号和识别控制信息: 通过继电器完成对热水器.加湿器.空调等三个家用电器的控制: 二次升级要求:使用无线模块完成对热水器.加湿器.空调等三个家用电器的控 ...

  5. 第三章 LD3320语音识别模块的使用

    上一章给大家介绍了SYN6288语音识别模块的使用方法,它的作用是播报声音信息,所以这章教大家使用LD3320语音识别模块,让毕设能够"听懂"我们在说什么. 下图是我经常使用的一款 ...

  6. LD3320语音识别模块:LDV7模块使用详解

    喜欢请关注微信公众号:嵌入式从0到1 公众号内容面向在校大学生.电子爱好者.嵌入式工程师: 涉及电子制作.模块使用.单片机技术.物联网相关知识分享: 软硬件全栈工程师,玩模块,学硬件,带你从0走到1 ...

  7. 单片机设计:基于stm32智能语音识别蓝牙音响(ld3320语音识别模块+mp3模块+喇叭+点阵屏+OLED+蓝牙+手机app)

    单片机设计:基于stm32智能语音识别蓝牙音响(ld3320语音识别模块+mp3模块+喇叭+点阵屏+OLED+蓝牙+手机app) 一.主要功能: 1.手机app播放内存卡的音乐.同时点阵屏随音乐进行跳 ...

  8. LD3320语音识别模块+MP3-TF-16P模块实现语音交互功能

    LD3320语音识别模块+MP3-TF-16P模块实现语音交互功能

  9. 基于ArduinoUNO的LD3320语音识别+SYN6288语音合成的智能分类垃圾桶

    文章目录 写在前面 器件 连接 部分代码 运行结果 小结 写在前面 接上一篇文章,这次是集合了语音识别+语音合成(就是语音播报实现一种反馈)+SG90舵机实现垃圾桶的开与闭,给出上篇文章链接,如果对L ...

  10. 基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+

    ## **基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块(阿里云 或ONENET或局域网)+DHT11温湿度采集+MQ系列 烟雾及可燃气体+ ...

最新文章

  1. STM32FLASH读写程序
  2. golang 面向对象编程
  3. .net Remoting(1)基本内容
  4. spark UDAF
  5. python 乱码转码_Python解决乱码问题
  6. facebook人脸照片_为什么您的Facebook照片看起来如此糟糕(以及您可以如何做)...
  7. 大学生应当趁早谋划未来
  8. c语言编程 float p,C语言编程经典例题
  9. C语言课程设计题库及答案,C语言课程设计题目.docx
  10. Nginx+php+mysql+wordpress搭建自己的博客站点
  11. 大型项目用python吗_在大型项目上,Python 是个烂语言吗?
  12. Spark项目实践--基于 TMDB 数据集的电影数据分析
  13. ps把模糊图片变清晰
  14. 网站搭建niushop系统,全面搭建,打包app,h5详细教程
  15. centos 安装Times New Roman
  16. python访问局域网共享文件夹
  17. Proteus:logic contentions detected on net B15
  18. 软考高项——【第一章-信息系统】超详细知识点
  19. Android 模拟登陆正方教务系统
  20. 为什么我们从 Python 切换到 Go

热门文章

  1. 手把手教你破解软件,每一步都有图示,你若再不会就太XX
  2. 判断字符是数字字符还是大写字符或者是小写字符
  3. 苹果系统虚拟机无usb服务器,苹果电脑Mac系统中VMware虚拟机无法识别USB Key的解决方法...
  4. u大师u盘装系统win7_黑鲨U盘重装win7系统教程
  5. 【OpenGL】斯坦福兔子、显示列表
  6. 电脑快捷键横屏变竖屏_电脑屏幕横屏与竖屏之间怎么来回切换?
  7. 毕业论文排版,格式总结
  8. Xuxiang Qi--Deep Learning based Semantic Labelling of 3D Point Cloud in Visual SLAM
  9. 163邮箱注册及授权密码开通
  10. c语言判断字符串是否对称,c语言 判断字符串是否中心对称