本帖最后由 bestsolution001 于 2022-8-17 17:57 编辑
使用ESK32-30519 触摸按键驱动ESK32-21001 蜂鸣器 ESK32-21001扩展版介绍
1.ESK32-21001是为了ESK32-30xxx系列Starter Kit所设计的进阶扩充底板。
2.该扩展版的详细资料可以从以下的链接获取。https://www.holtek.com.cn/web/gu ... nheritRedirect=true
在链接的底部,会有一个该扩展版的使用手册,里面会有整个扩展版资源的介绍,原理图说明。
3.ESK32-21001具备以下的特性:
- RS232 连接器
- 一个唤醒按键,两个普通按键
- 触摸按键
- 三个 LED
- I2C – 可兼容串行接口 EEPROM
- SPI – 可兼容串行接口 Flash
- SPI 和 EBI 扩展接口,用于 LCD 显示应用
- SD 卡插槽 – SPI 模式
- PWM 输出,用于蜂鸣器驱动
- 备份电源
- SWD-20P 调试接口
- 智能卡连接器
- CMOS 传感器连接器
- 多个接口包括 UART、I 2 C、SPI 和 GPIO 功能接口,用于连接不同的模块
- 音频输入包括麦克风和立体声插口
- 音频输出包括扬声器连接器和立体声插口
4.将核心板ESK32-30519与ESK32-21001整合。
ESK32-21001蜂鸣器的使用
1.ESK32-30519的介绍与使用请参考https://bbs.21ic.com/icview-3234646-1-1.html。
选择驱动扩展板的无源蜂鸣器,扩展板标识为”Buzzer”。
2.截取扩展板与核心板连接部分的原理图如下:
需要注意的一点是,在编号8的位置上,PC12为驱动蜂鸣器的PIN脚。
3.蜂鸣器的电路接法
从原理图中可以看出,只要给蜂鸣器的PIN脚不同的频率的PWM,蜂鸣器就会发出不同声调的声音。
4.根据HOLTEK提供的32位固件库中example下的文件夹,可以通过脚本直接生成例程。例程的功能是让蜂鸣器发出21个不同的声调。例程路径为:
..\example\TM\PWM_Buzzer\MDK_ARMv5。然后选择HT32F54253的工程。直接编译烧录即可。
蜂鸣器根据触控按键编号发出不同的声调
1.需要将蜂鸣器的驱动代码整合到TouchKey中来。在路径..\example\TM\PWM_Buzzer下将驱动文件buzzer_pwm.c与buzzer_pwm.h复制到..\example\TouchKey\TouchKey_LIB下。
2.将buzzer_pwm.c与buzzer_pwm.h添加到TouchKey工程中。
3.除此之外,还需要注意的两个地方是:一个是声调频率的声明数组,一个是蜂鸣器驱动的#define。声调声明数组放置在mian.c,驱动的#define放置在ht32_board_config.h中。如下图所示:
| 图11 声调声明数组
| | 图12 蜂鸣器驱动#define
|
4.在buzzer.c中提供三个函数来驱动蜂鸣器。下面给出函数的说明。
项目
| 说明
| 函数名称
| Buzzer_Init
| 输入参数
| 蜂鸣器发声的频率
| 返回值
| Void
| 说明
| 初始化蜂鸣器的功能,并且给定一个频率
|
项目
| 说明
| 函数名称
| Buzzer_Start
| 输入参数
| uBeeTimes->发声的次数,uFrequency->发声的频率uActive_ms->发声的时间uInActive_ms->不发声的时间
| 返回值
| Void
| 说明
| 给定蜂鸣器发声的次数,频率与一个发声周期内的发声与不发声的时间。
|
项目
| 说明
| 函数名称
| Buzzer_Start
| 输入参数
| uBeeTimes->发声的次数,uFrequency->发声的频率uActive_ms->发声的时间uInActive_ms->不发声的时间
| 返回值
| Void
| 说明
| 给定蜂鸣器发声的次数,频率与一个发声周期内的发声与不发声的时间。
|
项目
| 说明
| 函数名称
| Buzzer_IsFinish
| 输入参数
| Void
| 返回值
| 1或者0
| 说明
| 1->蜂鸣器完成发声的次数
0->蜂鸣器还没有完成发声的次数
|
5.重写蜂鸣器例程中的Buzzer_PlayTable函数,使得蜂鸣器根据按下的触控按键的编号1~6发出不同的音阶。
6.在查询触控按键是否成立的地方调用Buzzer_PlayTable,并且将触控按键编号传给Buzzer_PlayTable。
至此,实现了蜂鸣器会根据按键编号相应不同的频率。
文章小结
这篇文章用了ESK-30519的两个功能:PWM与触控按键。其中PWM功能是驱动蜂鸣器的,例程为..\example\TM\PWM_Buzzer路径下的工程。触控功能的实现请参考 https://bbs.21ic.com/icview-3234646-1-1.html。
本次通过触控按键驱动蜂鸣器,并且蜂鸣器会根据按键编号的1~6发出do、re、mi、fa、sol、la这6个音阶。最终的例程源码路径..\Buzzer+TouchKey\example\TouchKey\TouchKey_LIB\MDK_ARMv5
|
不是周四才开始邮寄吗?你的咋这么快?