芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
国民技术N32G401C8L7开发板测评(四)+调试ADC
原创 发布时间:2024/06/20 14:50
版块:
开发板测评
简介:调试国民技术的ADC功能。

一:国民技术ADC介绍

12 位 ADC 是使用逐次逼近的高速模数转换器。 它有多个通道, 19 个通道,可测量 16 个外部和 3 个内部信号源。 每个通道的 A/D 转换有四种执行模式:单次、连续、扫描或间断。 ADC 转换值存储(左对齐/右对齐)在 16 位数据寄存器中。 可以通过模拟看门狗检测输入电压是否在用户定义的高/低阈值内,并且ADC 的输入时钟的最大频率为 72MHz。 

二:ADC的主要特征

n 支持 1 个 ADC,支持单端和差分输入,最多可测量 16 个外部和 3 个内部源。
n 支持 12 位、 10 位、 8 位、 6 位分辨率, 12bit 分辨率下最高采样率为 4.2MSPS。
n ADC 时钟源分为工作时钟源、采样时钟源和计时时钟源。
u 仅可配置 AHB_CLK 作为工作时钟源。
u可配置 PLL 作为采样时钟源,最高可到 72MHz,支持分频 1,2,4,6,8,10,12,16,32,64,128,256。
u 可配置 AHB_CLK 作为采样时钟源,最高可到 72MHz,支持分频 1,2,4,6,8,10,12,16,32。
u 计时时钟用于内部计时功能,频率必须配置成 1MHz。
n 支持定时器触发 ADC 采样、各通道的采样时间间隔可编程、支持扫描模式、支持单次转换、支持连续转换、支持间断模式、支持自校准、支持 DMA、中断生成、转换结束、注入转换结束、模拟看门狗事件、带内嵌数据一致性的数据对齐、可以外部触发注入转换和规则转换、ADC 的工作电压在 2.4V 到 3.6V 之间、ADC 支持转换的电压在 VREF-和 VREF+之间

三:软件代码编写

步骤1:RCC时钟初始化,使能系统时钟来源为外部时钟,并且使能ADC时钟和GPIOA口时钟线。

步骤2:使能ADC所使用的引脚PA0,PA1;

步骤3:进行ADC的初始化

步骤4:下载代码进行调试

 

软件代码部分:

void ADC_Initial(void)

{

    /*ADC configuration ------------------------------------------------------*/

    ADC_InitStructure.MultiChEn      = DISABLE;

    ADC_InitStructure.ContinueConvEn = DISABLE;

    ADC_InitStructure.ExtTrigSelect  = ADC_EXT_TRIGCONV_REGULAR_SWSTRRCH;

    ADC_InitStructure.DatAlign       = ADC_DAT_ALIGN_R;

    ADC_InitStructure.ChsNumber      = ADC_REGULAR_LEN_1;

    ADC_Initializes(&ADC_InitStructure);

 

    /* Enable ADC */

    ADC_ON( );

    /* Check ADC Ready */

    while(ADC_Flag_Status_Get(ADC_RD_FLAG ,ADC_FLAG_AWDG ,ADC_FLAG_RDY) == RESET)

        ;

    /* Start ADC calibration */

    ADC_Calibration_Operation(ADC_CALIBRATION_ENABLE);

    /* Check the end of ADC calibration */

    while (ADC_Calibration_Operation(ADC_CALIBRATION_STS) == SET) ;

}

    while (1)

    {

        ADCTEMP1=ADC_GetData(ADC_Channel_01_PA0);

        ADCTEMP2=ADC_GetData(ADC_Channel_02_PA1);

}

 

仿真调试:

 

实物图片:

 

后记:当我们在使用某个ADC引脚时,对未使用的引脚不要进行操作和处理,当初始化后,把该引脚悬空发现,ADC读取来的数据并非是0,而是有一定数值,所以大家在调试的时候注意一下啊,只使能和操作使用的ADC引脚,不要再去操作其他引脚,防止其对使用的引脚造成影响。

开源社区
2024/06/20 14:50
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
发布者
聪聪哥哥
最新帖子
LDO串联或并联二极管有什么用?电路保护与特殊应用解析缝纫机伺服0.3秒启停稳如磐石:三招驯服“针位漂移”顽疾伺服电机过载预警:从电流纹波揪出轴承暗伤的猎杀方案芯片丝印反查求助树莓派pico 2测评 - 串口
热门版块
查看更多
每日打卡
电子元器件
维修技术
麦博大学堂
问型号
问技术
问行情
汽车电子工程师论坛
工业电子专区
新手入门指南

43

收藏

分享

微信扫码
分享给好友

评论