完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
ADC外围功能:
●12位分辨率 ●常规转换结束时产生中断,注入转换结束时产生中断,以及发生模拟看门狗或溢出事件时产生中断。 ●单、连续转换模式。 ●扫描模式,多通道顺序转换。 ●内置数据一致性的数据对齐。 ●可编程采样时间(通道) ●常规组与注射组ADC转换。 ●常规组和注射组的外部触发器(定时器或EXTI)。 ●DMA请求生成,用于传输常规组的转换数据。 ●多模双模(可用于2台或更多adc的设备)。 ●可配置多模式双模式DMA数据存储(可用于2个或更多DCs的设备)。 ●双交错模式转换之间的可配置延迟(可用于2个或更多DCs的设备)。 ●ADC校准 ●ADC电源要求:全速时2.4 V到3.6 V,低速时降低到1.8 V。 ●ADC输入范围:从Vref-(连接到vsa)到Vref+(连接到Vdda或外部参考电压)。 一、结构体 1.ADC_InitTypeDef typedef struct { uint32_t DataAlign uint32_t ScanConvMode uint32_t ContinuousConvMode uint32_t NbrOfConversion uint32_t DiscontinuousConvMode uint32_t NbrOfDiscConversion uint32_t ExternalTrigConv } ADC_InitTypeDef 每个参数的含义: DataAlign:表示对齐模式,因为我们ADC采集的数据放在ADC_DR 寄存器,ADC分辨率是12所以只能放12位,但是ADC_DR寄存器是16位的,所以要选择向左对齐还是向右对齐 宏定义: ADC_DATAALIGN_RIGHT 右对齐 ADC_DATAALIGN_LEFT 左对齐 ScanConvMode:ADC的扫描模式,配置ADC_CR1的SCAN位,扫描模式指的是不断扫描ADC1,2,3,扫描多用在多通道上 宏定义: Enable 使能 Disable 失能 ContinuousConvMode:连续转换模式,配置的是ADC_CR2的CON位,表示ADC通道连续采集,一次采集转化完继续采集 宏定义: Enable 使能 Disable 失能 NbrOfConversion:ADC要转化的通道数目,可以设置为1-16,直接填写数字 1-16 DiscontinuousConvMode:指定正则组的转换序列是否在全序/不连续序(主序又分为连续的部分)。 只有在启用了音序器时才使用不连续模式(参数“ScanConvMode”)。 如果sequencer被禁用,该参数将被丢弃。 只有在禁用连续模式的情况下,才能启用不连续模式。 如果连续模式开启时,该参数将被丢弃。 该参数可以设置为启用或禁用。 宏定义: Enable 使能 Disable 失能 NbrOfDiscConversion:指定主序列的不连续转换的次数regular group(参数NbrOfConversion)将被细分。 如果参数DiscontinuousConvMode被禁用,该参数将被丢弃。 这个参数必须是Min_Data = 1和Max_Data = 8之间的一个数字,即必须是1-8之间的数字。 ExternalTrigConv:外部触发转换选择, 配置ADC_CR2的EXTTRIG和EXTSEL[2:0],EXTTRIG使能触发源,EXTSEL[2:0]选择哪一个触发源,如果不选择外部触发,可以选择软件触发 ADC External trigger selection for regular group ADC_EXTERNALTRIGCONV_T1_CC1 选择定时器1的捕获比较1作为转换外部触发 ADC_EXTERNALTRIGCONV_T1_CC2 选择定时器1的捕获比较2作为转换外部触发 ADC_EXTERNALTRIGCONV_T2_CC2 选择定时器2的捕获比较2作为转换外部触发 ADC_EXTERNALTRIGCONV_T3_TRGO 选择定时器3的TRGO作为转换外部触发 ADC_EXTERNALTRIGCONV_T4_CC4 选择定时器4的捕获比较4作为转换外部触发 ADC_EXTERNALTRIGCONV_EXT_IT11 选择外部中断线11事件作为转换外部触发 ADC_EXTERNALTRIGCONV_T2_CC3 选择定时器2的捕获比较3作为转换外部触发 ADC_EXTERNALTRIGCONV_T3_CC1 选择定时器3的捕获比较1作为转换外部触发 ADC_EXTERNALTRIGCONV_T5_CC1 选择定时器5的捕获比较1作为转换外部触发 ADC_EXTERNALTRIGCONV_T5_CC3 选择定时器5的捕获比较3作为转换外部触发 ADC_EXTERNALTRIGCONV_T8_CC1 选择定时器8的捕获比较1作为转换外部触发 ADC_EXTERNALTRIGCONV_T1_CC3 选择定时器1的捕获比较3作为转换外部触发 ADC_EXTERNALTRIGCONV_T8_TRGO 选择定时器8的TRGO作为转换外部触发 ADC_SOFTWARE_START 选择软件触发 2.ADC_ChannelConfTypeDef typedef struct { uint32_t Channel; //转换通道配置 uint32_t Rank; //转换序列排序 uint32_t SamplingTime; //采样时间设置 } ADC_ChannelConfTypeDef; 每个参数的含义: Channel:配置转换通道。根据设备的不同,有些通道可能在封装引脚上不可用。 ADC_CHANNEL_0 通道0 ADC_CHANNEL_1 通道1 ADC_CHANNEL_2 通道2 ADC_CHANNEL_3 通道3 ADC_CHANNEL_4 通道4 ADC_CHANNEL_5 通道5 ADC_CHANNEL_6 通道6 ADC_CHANNEL_7 通道7 ADC_CHANNEL_8 通道8 ADC_CHANNEL_9 通道9 ADC_CHANNEL_10 通道10 ADC_CHANNEL_11 通道11 ADC_CHANNEL_12 通道12 ADC_CHANNEL_13 通道13 ADC_CHANNEL_14 通道14 ADC_CHANNEL_15 通道15 ADC_CHANNEL_16 通道16 ADC_CHANNEL_17 通道17 ADC_CHANNEL_TEMPSENSOR ADC内部通道(在设备引脚上没有连接) ADC_CHANNEL_VREFINT ADC内部通道(在设备引脚上没有连接) Rank:用于配置规则通道的转换顺序,如果想禁止一个通道或者改变一个通道的顺序,可以使用新配置覆盖。写的时候可以直接写数值,不用写宏定义,以为宏定义的通道和数值是对应的,通道1的值就是1,通道2的值就是2…以此类推,例如:ADC1_ChanConf.Rank=1; ADC_REGULAR_RANK_1 1 ADC_REGULAR_RANK_2 2 ADC_REGULAR_RANK_3 3 ADC_REGULAR_RANK_4 4 ADC_REGULAR_RANK_5 5 ADC_REGULAR_RANK_6 6 ADC_REGULAR_RANK_7 7 ADC_REGULAR_RANK_8 8 ADC_REGULAR_RANK_9 9 ADC_REGULAR_RANK_10 10 ADC_REGULAR_RANK_11 11 ADC_REGULAR_RANK_12 12 ADC_REGULAR_RANK_13 13 ADC_REGULAR_RANK_14 14 ADC_REGULAR_RANK_15 15 ADC_REGULAR_RANK_16 16 SamplingTime:用于所选通道的采样时间配置,ADC的采样速度是由采样时间和转换时间同决定。用于内部通道测量时(VrefInt/Vbat/TempSensor),务必要遵循数据手册要求的参数范围。 ADC_SAMPLETIME_1CYCLE_5 采样时间1.5 ADC时钟周期 ADC_SAMPLETIME_7CYCLES_5 采样时间7.5 ADC时钟周期 ADC_SAMPLETIME_13CYCLES_5 采样时间13.5 ADC时钟周期 ADC_SAMPLETIME_28CYCLES_5 采样时间28.5 ADC时钟周期 ADC_SAMPLETIME_41CYCLES_5 采样时间41.5 ADC时钟周期 ADC_SAMPLETIME_55CYCLES_5 采样时间55.5 ADC时钟周期 ADC_SAMPLETIME_71CYCLES_5 采样时间71.5 ADC时钟周期 ADC_SAMPLETIME_239CYCLES_5 采样时间239.5 ADC时钟周期 3.ADC_AnalogWDGConfTypeDef typedef struct { uint32_t WatchdogMode; uint32_t Channel; FunctionalState ITMode; uint32_t HighThreshold; uint32_t LowThreshold; uint32_t WatchdogNumber; }ADC_AnalogWDGConfTypeDef; WatchdogMode:此参数用于设置模拟看门狗模式。 ADC analog watchdog mode ADC_ANALOGWATCHDOG_NONE ADC_ANALOGWATCHDOG_SINGLE_REG ADC_ANALOGWATCHDOG_SINGLE_INJEC ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ADC_ANALOGWATCHDOG_ALL_REG ADC_ANALOGWATCHDOG_ALL_INJEC ADC_ANALOGWATCHDOG_ALL_REGINJEC Channel:用于配置要监测的通道。对于模拟看门狗1,参数成员WatchdogMode配置为单个通道时,此参数才有意义。 对于模拟看门狗2和3,每调用一次函数HAL_ADC_AnalogWDGConfig可以指定一个通道,如果要复位那个通道,将参数WatchdogMode配置为ADC_ANALOGWATCHDOG_NONE即可。 ITMode:用于配置模拟看门狗为中断方式或者查询方式。配置为ENABEL表示使用中断方式,配置为DISABLE表示查询方式。 HighThreshold:用于配置模拟看门狗高阀值。根据配置的ADC的分辨率16, 14, 12, 10或者8bit,高阀值最小都是0x0000,最大值分别是0xFFFF, 0x3FFF, 0xFFF, 0x3FF 和 0xFF。 LowThreshold:用于配置模拟看门狗低阀值。根据配置的ADC的分辨率16, 14, 12, 10或者8bit,高阀值最小都是0x0000,最大值分别是0xFFFF, 0x3FFF, 0xFFF, 0x3FF 和 0xFF。 WatchdogNumber:此参数成员用于配置选择那个看门狗监测通道。 ADC_ANALOGWATCHDOG_1 ADC_ANALOGWATCHDOG_2 ADC_ANALOGWATCHDOG_3 4.ADC_HandleTypeDef typedef struct __ADC_HandleTypeDef { ADC_TypeDef *Instance; ADC_InitTypeDef Init; DMA_HandleTypeDef *DMA_Handle; HAL_LockTypeDef Lock; __IO uint32_t State; __IO uint32_t ErrorCode; }ADC_HandleTypeDef; *Instance:这个参数是寄存器的例化,方便操作寄存器,比如使能ADC内部稳压器。 SET_BIT(hadc->Instance->CR, ADC_CR_ADVREGEN); Init: 这个参数是用户接触最多的,用于配置ADC的基本参数,像ADC时钟、分辨率、扫描模式、过采样等。 *DMA_Handle:如果ADC使用DMA模式的话,此参数用于关联DMA的句柄,方便DMA的配置。 HAL_LockTypeDef Lock __IO uint32_t State; __IO uint32_t ErrorCode 这三个变量主要供函数内部使用。Lock用于设置锁状态,State用于设置ADC通信状态,而ErrorCode用于配置代码错误。 InjectionConfig:用于配置ADC注入模式。 二、函数 2.1所有函数的概括及功能
三、ADC的使用 3.1配置ADC相关的顶级参数: 1.启用ADC接口
RCC_PeriphCLKInitTypeDef PeriphClkInit; __ADC1_CLK_ENABLE(); PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2; HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit); 2. ADC引脚配置
|
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:13 , Processed in 1.263015 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号