当前位置:首页 > 公众号精选 > 程序员小哈
[导读]学习目标 学习ISD1820语音芯片的使用方法 学习STM32 GPIO的输入输出 按键扫描功能实现 芯片特点 工作电压3~5V; 单段录放控制简单; 带话筒放大直通功能——可用作喊话器模块; 边沿/电平触发放音; 内置8Ω喇叭驱动放大电路,即可直接驱动8欧0.5W小喇叭;

学习目标

  • 学习ISD1820语音芯片的使用方法

  • 学习STM32 GPIO的输入输出

  • 按键扫描功能实现


芯片特点

  1. 工作电压3~5V;

  2. 单段录放控制简单;

  3. 带话筒放大直通功能——可用作喊话器模块;

  4. 边沿/电平触发放音;

  5. 内置8Ω喇叭驱动放大电路,即可直接驱动8欧0.5W小喇叭;

  6. 无需单片机参与即可实现录放音功能;

  7. 取样率和录放音时间可以由外部振荡电阻调节。外接电阻调整录音时间,可以实现8~20秒语音录放。录入的时间越短音质越好,录入的时间越长音质越差;

振荡电阻(ROSC): 此端接振荡电阻至VSS,由振荡电阻的阻值决定录放音的时间。


推荐应用电路


应用场景

  • 录音喊话器

  • 录音门铃

  • 留言

  • 播放固定欢迎语


封装及引脚功能

  • 1脚为录音端(REC),高电平有效。只要REC变高电平(不管芯片处在节电状态还是正在放音),芯片即开始录音。录音期间,REC必须保持为高电平。REC变低电平或内存录满后,录音周期结束,芯片自动写入一个信息结束标志(EOM),使以后的重放操作可以及时停止。

如果用户只需要电路做放音用,可以在芯片录好音测试无误后,将芯片的REC端长期接地,取消REC按键,这样可以防止意外抹音。

  • 2脚为边沿触发放音端(PLAYE),此端出现上升沿时,芯片开始放音。放音持续到EOM标志或内存结束。开始放音后,可以释放PLAYE。

  • 3脚为电平触发放音端(PLAYL),此端从低电平变高电平时,芯片开始放音。放音持续至此端回到低电平,或遇到EOM标志,或内存结束。

  • 4脚为话筒输入端(MIC)。

  • 5脚为话筒参考端(MICREF)。

  • 6脚为自动增益控制端(AGC)。通常4.7μF的电容器在多数场合下可获得满意的效果。

  • 7脚、9脚为喇叭输出端(SP+、SP-),这对输出端可直接驱动8Ω以上的喇叭。

ISD1820能够直接推动喇叭,但音量不是很大。如果用户需要更大音量的输出,可以外加集成功率放大器。

  • 8脚、14脚为地线(VSSA,VSSD),芯片内部的模拟和数字电路的不同地线汇合在这两个引脚。

  • 10脚为振荡电阻端(ROSC),此端接振荡电阻至VSS,由振荡电阻的阻值决定录放音的时间。

  • 11脚为电源端(VCC),芯片内部的模拟和数字电路使用的不同电源总线在此引脚汇合,这样使得噪声最小。去耦电容应尽量靠近芯片。

  • 12脚为直通模式端(FT),此端允许接在MIC输入端的外部语音信号经过芯片内部的AGC电路、滤波器和喇叭驱动器而直接到达喇叭输出端,形成话筒扩音机功能。平时FT端为低电平,要实现直通功能,需将FT端接高电平,同时REC、PLAYE和PLAYL保持低电平。

  • 13脚为录音指示端(/RECLED),处于录音状态时,此端为低电平,可驱动LED。此外,放音遇到EOM标志时,此端输出一个低电平脉冲。此脉冲可用来触发PLAYE,实现循环放音。


录放音控制方式

按键控制或者单片机IO控制;


实例分析

实现的功能
  • 按下松开按键PLAYE可以边沿触发播放语音;

  • 持续按下按键PLAYL可以电平触发播放语音;

  • 持续按下按键REC实现录音;

以上功能实现不需要单片机参与。

  • 按下松开按键REC,LED1点亮,相当于指示有录音留言;

  • 按下松开按键PLAYE,LED1熄灭,相当于指示留言已读。



原理图


代码实现
  • 按键BTN_PLAYE和BTN_REC初始化

//按键初始化函数//PB12 设置成输入void KEY_Init(void){         GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(GPIOC, &GPIO_InitStructure);}


  • 按键声明


#define BTN_PLAYE GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_11)#define BTN_REC GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_10)
#define BTN_PLAYE_PRES 1#define BTN_REC_PRES 2


  • 实现按键扫描函数

//按键处理函数//返回按键值//mode:0,不支持连续按;1,支持连续按;//返回值://0,没有任何按键按下//BTN_PLAYE_PRES,BTN_PLAYE按下//BTN_REC_PRES,BTN_REC按下//注意此函数有响应优先级,PLAYE>REC!!u8 KEY_Scan(u8 mode){ static u8 key_up=1;//按键按松开标志 if(mode) key_up=1; //支持连按
if(key_up&&(BTN_PLAYE==1||BTN_REC==1)) { delay_ms(10);//去抖动 key_up=0;
if(BTN_PLAYE==1)return BTN_PLAYE_PRES; else if(BTN_REC==1)return BTN_REC_PRES; } else if(BTN_PLAYE==0&&BTN_REC==0) { key_up=1; }
return 0;// 无按键按下}


  • LED1声明

#define LED1 PAout(15) // PA15


  • LED1初始化,根据原理图设计,LED1为低电平的时候,LED1亮。

//LED IO初始化void LED_Init(void){
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_15);}


  • 主函数实现,实现按键扫描,当得到BTN_PLAYE按键按下后,LED1熄灭;当得到BTN_REC按键按下后,LED1点亮。

#include "sys.h"#include "delay.h"#include "usart.h" #include "led.h" #include "key.h"
int main(void){ u8 key=0XFF; uart_init(115200);
delay_init(); LED_Init(); KEY_Init();
//主循环 while(1) { key = KEY_Scan(0);
if(key) { switch(key) { case BTN_PLAYE_PRES: { LED1 = 1; printf("BTN_PLAYE_PRES \r\n"); } break; case BTN_REC_PRES: { LED1 = 0; printf("BTN_REC_PRES \r\n"); } break; } }
delay_ms(10); }
}


推荐阅读:

STM32单片机最小系统详解

STM32F103 串口的使用方法

STM32中精确延时函数的实现

DHT11及DHT21温湿度传感器时序图解析(STM32)

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

基于STM32固件库的MDK5工程建立

修改Keil工程名称并添加其他模块文件

Keil环境下STM32工程加入cJSON

常用电路板制作方法

让步进电机动起来







喜欢请关注微信公众号:程序员小哈

公众号内容面向在校大学生、电子爱好者、嵌入式工程师;

涉及电子制作、模块使用、单片机技术、物联网相关知识分享;

玩模块,学硬件,带你从0走到1


若觉得本次分享的文章对您有帮助,随手点[在看]并转发分享,也是对我的支持。


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

4月30日消息,西安紫光国芯UniIC宣布正式推出全新SSD产品,共有四大系列,包括面向行业应用的高端产品“CTD700”、

关键字: 紫光展锐 芯片

近日,美国研究机构TechInsights经过拆解与分析认为,麒麟9010是中芯国际制造的,所用工艺是第二代7nm,也就是N+2。

关键字: 华为 芯片 处理器

TWSC 2985系列SD6.0存储芯片 国内首颗支持4K LDPC纠错技术 增强纠错、耐久可靠、性能升级

关键字: 德明利 半导体 存储 芯片 国产存储企业

2024年4月11日,中国——意法半导体的ST25R100近距离通信(NFC)读取器芯片独步业界,集先进的技术功能、稳定可靠的通信连接和低廉的成本价格于一身,在大规模制造的消费电子和工控设备内,可以提高非接触式互动功能的...

关键字: 嵌入式 数据读取器 芯片

其最新一代开创性系统集成芯片及配套软件将为4600万辆汽车提供更多安全和便利功能 上海2024年4月17日 /美通社/ -- Mobileye今日宣布,其已向客户交付其最新的EyeQ™6 Lite (EyeQ...

关键字: 芯片 MOBILEYE ADAS 自动驾驶

随着2024年的到来,北斗系统建设已走过栉风沐雨、接续奋斗的30年,几代北斗人也走过了北斗系统建设从无到有,从有源定位到无源定位,从服务中国到服务亚太,再到全球组网的“三步走”发展历程。

关键字: 华大北斗 芯片

微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是一种针对特定应用的控制处理而设计的微处理器芯片,其工作频率(在1M...

关键字: MCU 芯片 半导体

今日凌晨,中国台湾东部的花莲县连续发生地震,最高强度为6.3级,震源深度10公里,据中国地震台网分析,本次地震均为4月3日台湾花莲县海域发生的7.3级地震的余震。中国台湾地区在全球半导体供应链中扮演者重要角色,其10nm...

关键字: 固态硬盘 芯片 存储

在科技飞速发展的今天,电子设备已经成为了我们日常生活中不可或缺的一部分。而在这些电子设备的内部,一个不可或缺的组成部分便是开关电源芯片。作为电源管理集成电路的核心,开关电源芯片在电子设备中发挥着至关重要的作用。本文将深入...

关键字: 开关电源 芯片

开关电源芯片作为电子设备中的重要组成部分,是实现电源转换和管理的核心器件。随着科技的不断进步,开关电源芯片的种类也在不断增加,各具特色,满足了不同设备和应用场景的需求。本文将深入探讨开关电源芯片的种类及其科技应用,带领读...

关键字: 开关电源 芯片
关闭
关闭