打印
[开发板与模块]

【HT32F52352 Starter Kit测评】+ADC的使用

[复制链接]
4648|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 eltonchang2001 于 2022-11-9 11:30 编辑

HT32F52352芯片内部配有一个 12-bit 多通道 A/D 转换器,并提供了 14 个通道,其中包括 12 个提供模拟信号的外部通道和2 个内部通道。另外,A/D 转换器有3种工作模式,即单次转换、连续转换及非连续转换模式。
在外部模拟信号连接PA6的情况下,若采用连续转换模式,则输出的结果如图1至图3所示。
图1 接入3.3V
图2 悬空状态
图3 接地状态

测试的主程序为:
#include "ht32.h"
#include "ht32_board.h"
#include "ht32_board_config.h"
void ADC_Configuration(void);
volatile bool gADC_SingleEndOfConversion;
vu32 gPotentiometerLevel;
int main(void)
{
    RETARGET_Configuration();
    ADC_Configuration();
    ADC_Cmd(HTCFG_ADC_PORT, ENABLE);
    ADC_SoftwareStartConvCmd(HTCFG_ADC_PORT, ENABLE);
    while (1)
    {
        if (gADC_SingleEndOfConversion)
        {
            printf("\rPotentiometer level is %04d", (int)gPotentiometerLevel);
__Delay(1000000);
        }
    }
}

所添加的ADC配置函数为:
void ADC_Configuration(void)
{
  {
    CKCU_PeripClockConfig_TypeDef CKCUClock = {{ 0 }};
    CKCUClock.Bit.AFIO = 1;
    CKCUClock.Bit.HTCFG_ADC_IPN = 1;
    CKCU_PeripClockConfig(CKCUClock, ENABLE);
  }
AFIO_GPxConfig(HTCFG_VR_GPIO_ID, HTCFG_VR_AFIO_PIN, HTCFG_ADC_AFIO_MODE);
  {
    CKCU_SetADCnPrescaler(HTCFG_ADC_CKCU_ADCPRE, CKCU_ADCPRE_DIV64);
    ADC_RegularGroupConfig(HTCFG_ADC_PORT, CONTINUOUS_MODE, 1, 0);
    #if (LIBCFG_ADC_SAMPLE_TIME_BY_CH)
    // The sampling time is set by the last parameter of the function "ADC_RegularChannelConfig()".
    #else
    ADC_SamplingTimeConfig(HTCFG_ADC_PORT, 0);
    #endif
    ADC_RegularChannelConfig(HTCFG_ADC_PORT, HTCFG_VR_ADC_CH, 0, 0);
    ADC_RegularTrigConfig(HTCFG_ADC_PORT, ADC_TRIG_SOFTWARE);
  }
  ADC_IntConfig(HTCFG_ADC_PORT, ADC_INT_SINGLE_EOC, ENABLE);
  NVIC_EnableIRQ(HTCFG_ADC_IRQn);
}

进行ADC中断处理的函数为:
void HTCFG_ADC_IRQHandler(void)
{
  extern vu32 gPotentiometerLevel;
  extern volatile bool gADC_SingleEndOfConversion;
  ADC_ClearIntPendingBit(HTCFG_ADC_PORT, ADC_FLAG_SINGLE_EOC);
  gPotentiometerLevel = (HTCFG_ADC_PORT->DR[0] & 0x0FFF);
  gADC_SingleEndOfConversion = TRUE;
}

此外,在ht32_board_config.h文件中需添加如下内容:
#if (LIBCFG_NO_ADC)
  #error "This example code does not apply to the chip you selected."
#endif
  #define HTCFG_ADC_IPN          ADC0
#if defined(USE_HT32F52352_SK)
  #define _HTCFG_VR_GPIOX        A
  #define _HTCFG_VR_GPION        6
  #define _HTCFG_VR_ADC_CHN     6
#endif
#define HTCFG_VR_GPIO_ID         STRCAT2(GPIO_P,         _HTCFG_VR_GPIOX)
#define HTCFG_VR_AFIO_PIN        STRCAT2(AFIO_PIN_,      _HTCFG_VR_GPION)
#define HTCFG_VR_ADC_CH         STRCAT2(ADC_CH_,        _HTCFG_VR_ADC_CHN)
#define HTCFG_ADC_PORT          STRCAT2(HT_,            HTCFG_ADC_IPN)
#define HTCFG_ADC_AFIO_MODE    STRCAT2(AFIO_FUN_,      HTCFG_ADC_IPN)
#define HTCFG_ADC_CKCU_ADCPRE  STRCAT2(CKCU_ADCPRE_,   HTCFG_ADC_IPN)
#define HTCFG_ADC_IRQn          STRCAT2(HTCFG_ADC_IPN, _IRQn)



使用特权

评论回复

相关帖子

沙发
dzfansman| | 2022-6-20 15:49 | 只看该作者
16通道的ADC转换吗

使用特权

评论回复
板凳
wwppd| | 2022-6-20 17:12 | 只看该作者
这个是多少位的ADC?

使用特权

评论回复
地板
xietingfeng| | 2022-9-3 19:20 | 只看该作者
HT32F52352不同通道之间的有影响吗

使用特权

评论回复
5
jinglixixi|  楼主 | 2022-9-3 20:45 | 只看该作者
xietingfeng 发表于 2022-9-3 19:20
HT32F52352不同通道之间的有影响吗

在非悬空状态下,应该没有什么影响。

使用特权

评论回复
6
suzhanhua| | 2022-9-5 13:36 | 只看该作者
可以dma直接转换吗?   

使用特权

评论回复
7
jinglixixi|  楼主 | 2022-9-5 15:53 | 只看该作者
wwppd 发表于 2022-6-20 17:12
这个是多少位的ADC?

12位

使用特权

评论回复
8
macpherson| | 2022-9-7 16:47 | 只看该作者
HT32F52352 最大转换速度是多少

使用特权

评论回复
9
hudi008| | 2022-11-3 21:17 | 只看该作者
可以使用DMA+ADC实现转换吗?

使用特权

评论回复
10
jinglixixi|  楼主 | 2022-11-3 21:36 | 只看该作者
hudi008 发表于 2022-11-3 21:17
可以使用DMA+ADC实现转换吗?

好像例程中有

使用特权

评论回复
11
pixhw| | 2022-11-3 21:50 | 只看该作者
这个多通道之间是如何切换的?              

使用特权

评论回复
12
jinglixixi|  楼主 | 2022-11-3 22:00 | 只看该作者
pixhw 发表于 2022-11-3 21:50
这个多通道之间是如何切换的?

控制内部的寄存器

使用特权

评论回复
13
pl202| | 2022-11-5 09:50 | 只看该作者
HT32F52352 的ADC不同引脚之间存在干扰吗

使用特权

评论回复
14
cemaj| | 2022-11-5 10:18 | 只看该作者
连续转换方式是经常使用的,这个HT32F52352 转换时间最短是多少?

使用特权

评论回复
15
bartonalfred| | 2022-12-2 21:21 | 只看该作者
定时器触发ADC怎么配置               

使用特权

评论回复
16
iyoum| | 2022-12-2 21:30 | 只看该作者
如何用HT32F52352 的ADC采集0到120V的直流电压?   

使用特权

评论回复
17
jinglixixi|  楼主 | 2022-12-3 00:32 | 只看该作者
iyoum 发表于 2022-12-2 21:30
如何用HT32F52352 的ADC采集0到120V的直流电压?

成比例的分压

使用特权

评论回复
18
tifmill| | 2022-12-3 12:53 | 只看该作者
ADC的通道与引脚是如何对应的  

使用特权

评论回复
19
primojones| | 2022-12-3 14:01 | 只看该作者
HT32F52352  adc用什么校准?  

使用特权

评论回复
20
jinglixixi|  楼主 | 2022-12-3 23:09 | 只看该作者
tifmill 发表于 2022-12-3 12:53
ADC的通道与引脚是如何对应的

查技术手册

使用特权

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

本版积分规则

455

主题

2756

帖子

38

粉丝