打印
[开发板与模块]

使用ESK32-30519 触摸按键更改顯示AD數值

[复制链接]
521|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 bestsolution001 于 2022-8-18 11:28 编辑

使用ESK32-30519 触摸按键更改显示AD数值
ESK32-21001扩展版介绍
1.ESK32-21001是为了ESK32-30xxx系列Starter Kit所设计的进阶扩充底板。
1 ESK32-21001 PCBA
2.该扩展版的详细资料可以从以下的链接获取。https://www.holtek.com.cn/web/guest/esk32-21001?inheritRedirect=true

图2 ESK32-21001使用说明
链接的底部,会有一个该扩展版的使用手册,里面会有整个扩展版资源的介绍,原理图说明。

3.ESK32-21001具备以下的特性:
  • RS232 连接器
  • 一个唤醒按键,两个普通按键
  • 触摸按键
  • 三个 LED
  • I 2C – 可兼容串行接口 EEPROM
  • SPI – 可兼容串行接口 Flash
  • SPI 和 EBI 扩展接口,用于 LCD 显示应用
  • SD 卡插槽 – SPI 模式
  • PWM 输出,用于蜂鸣器驱动
  • 备份电源
  • SWD-20P 调试接口
  • 智能卡连接器
  • CMOS 传感器连接器
  • 多个接口包括 UART、I 2 C、SPI 和 GPIO 功能接口,用于连接不同的模块
  • 音频输入包括麦克风和立体声插口
  • 音频输出包括扬声器连接器和立体声插口


4.将核心板ESK32-30519与ESK32-21001整合。
图3 整合板

ESK32-21001 ADC的使用
1. ESK32-30519的介绍与使用请参考 https://bbs.21ic.com/icview-3234646-1-1.html
通过滑动电位器改变ADC通道采集的电压。选择驱动扩展板的滑动电位器,扩展板标识为Potentiometer
图4 滑动电位器

2.截取扩展板与核心板连接部分的原理图如下
图5 扩展板接口原理图

图6 核心板接口原理图
在编号29的位置上,PA6为采集滑动电位器的ADC功能的PIN脚。

3.滑动电位器的电路接法
图7 滑动电位器原理图

4.从原理图中可以看出,ADC输入通道采集滑动电位器的对地电阻的电压。
5.根据HOLTEK提供的32位固件库中example下的文件夹,可以通过脚本直接生成例程。例程的功能是将采集到的AD值通过ESK32-30519的板
载仿真器的虚拟串口功能将数据发送到PC端的串口助手。例程路径为:
    .. \example\ADC\Continuous_Potentiometer\MDK_ARMv5。然后选择HT32F54253的工程。直接编译烧录即可。
图8 ADC采集电压例程

使用USB线连接板载仿真器,打开PC端的串口助手,直接选择端口即可。连接方式如图9所示,例程在上传的数据样式如下图12所示。
图9  ESK32-30519 连接方式
   注意,图9中红框中的跳帽需要接到左边,即丝印为DAP_Tx的那一边。这个功能为仿真器自带的一个虚拟串口功能。

通过一根USB完成仿真与串口通信的功能。在例程中需要实现一个串口的功能,具体的实现代码如下图10所示.
10  ESK32-30519 默认串口配置

mian初始化中调用RETARGET_Configuration即可配置好串口。只要在需要使用串口传输数据的地方使用printf函数即可将数据上传到PC端的串口助手。
图11  printf函数使用范例

图12 串口助手显示的数据

数码管根据触控按键切换显示电压或AD值
1.需要将采集ADC的代码整合到TouchKey中来。直接将例程中的函数与ADC中断复制到TouchKey的工程中来.
项目

说明


函数名称
ADC_Configuration
输入参数
void
返回值
void
说明
初始化ADC0的通道8,参考电压为VDD

项目

说明

函数名称
ADC_Cmd
输入参数
ADC端口(ADC0),ENABLE或DISABLE
返回值
void
说明
使能或失能指定的端口

项目
说明
函数名称
ADC_SoftwareStartConvCmd
输入参数
ADC端口(ADC0),ENABLE或DISABLE
返回值
void
说明
使能或者失能指定ADC端口为软件触发

项目
说明
函数名称
HTCFG_ADC_IRQHandler
输入参数
void
返回值
void
说明
ADC中断函数

为了符合人的观测,还需要配置一个定时器来定时更新ADC采集的数据。选定为0.5s更新一次数码管显示的数值.
项目
说明
函数名称
TM_Configuration
输入参数
void
返回值
void
说明
GPTM定时器的初始化。0.5s发生一次中断

项目
说明
函数名称
GPTM0_IRQHandler
输入参数
void
返回值
void
说明
GPTM0的中断处理函数,每0.5s中断一次

数码管的显示功能采用HT32F54253的外设功能LEDC.具体的使用方法见
https://bbs.21ic.com/icview-3234646-1-1.html 中的《数码管的使用章节》。

ADC的值为一个0~4096的数值,使用数码管来显示一个4位数,则需要将原本的数值位拆分成
个位,十位,百位,千位这4个单独的数字再给到四位一体的数码管显示。
项目
说明
函数名称
getNumber
输入参数
AD值
返回值
返回一个结构体
说明
输入AD值,然后将AD值的个,十,百,千位的数字分解成单独的数字放入结构体返回。

触控按键使用一个函数来获取全部按键的状态。
项目
说明
函数名称
TKL_Get_AllKeyState
输入参数

void

返回值
u32
说明
返回一个32bit的数据,每一个bit的位代表对应位置的KEY的状态,0表示松开,1表示按下

2.主要的程序实现说明如下
             a.ADC相关函数使用到的#define,放置在ht32_board_config.h中
图13 ADC相关的#define

             b.实现PAD1按下到松开之前,按键只成立一次。KeyCounter记录按下的次数。
图14 判断PAD1是否按下
         
            c. 每隔0.5s更新此刻ADC采集到的数值,根据按键按下的次数是否为2的倍数来选择数码管显示的是AD值
              或者是经过换算以后的电压值,电压值的单位为mV。
图15 更新显示的数值

          d.数码管显示刷新数据
图16 数码管刷新数值

至此,实现了使用触控按键来切换显示ADCAD值或者电压值。将电压调至1.65V.实现的效果如下:
图17 数码管显示AD值

图18 数码管显示电压值

文章小结
这篇文章用了ESK-30519的三个功能:ADC,触控按键与LEDC。其中ADC功能是采集滑动变阻器的对地电压值,例程为.. \example\ADC\Continuous_Potentiometer\MDK_ARMv5路径下的工程。LEDC与触控功能的实现请参考
本次通过触控按键来改变数码管的显示内容,显示内容为ADC采集滑动变阻器的对地电压值或者AD值。最终的例程源码路径为
  ..\ADC+TouchKey\example\TouchKey\TouchKey_LIB\MDK_ARMv5
ADC+TouchKey.zip (43.8 MB)
例程源码


















使用特权

评论回复

相关帖子

沙发
sanxingnote7| | 2022-9-3 17:07 | 只看该作者
使用触摸了吗   

使用特权

评论回复
板凳
mollylawrence| | 2022-9-4 22:20 | 只看该作者
这个是什么按键

使用特权

评论回复
地板
gygp| | 2022-9-5 12:57 | 只看该作者
电容按键吗   

使用特权

评论回复
5
公羊子丹| | 2022-9-5 14:05 | 只看该作者
通过滑动电位器改变ADC通道采集的电压。选择驱动扩展板的滑动电位器,扩展板标识为”Potentiometer”。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

15

帖子

0

粉丝