ADC总结.docx
- 文档编号:6295649
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:19
- 大小:21.43KB
ADC总结.docx
《ADC总结.docx》由会员分享,可在线阅读,更多相关《ADC总结.docx(19页珍藏版)》请在冰豆网上搜索。
ADC总结
✓函数ADC_DeInit将外设ADCx的全部寄存器重设为缺省值
✓函数ADC_Init根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器
✓为了能够正确地配置每一个ADC通道,用户在调用ADC_Init()之后,必须调用ADC_ChannelConfig()来配置每个所使用通道的转换次序和采样时间.
✓
1ADC状态寄存器(ADC_SR)
地址偏移:
0x00
复位值:
0x00000000
ADC_GetFlagStatus检查制定ADC标志位置1与否
例Status=ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);
位31:
15
保留。
必须保持为0。
位4
ADC_FLAG_STRTStatus=ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);
STRT:
规则通道开始位
该位由硬件在规则通道转换开始时设置,由软件清除。
0:
规则通道转换未开始
1:
规则通道转换已开始
位3
ADC_FLAG_JSTRTStatus=ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);
JSTRT:
注入通道开始位
该位由硬件在注入通道组转换开始时设置,由软件清除。
0:
注入通道转换未开始
1:
注入通道转换已开始
位2
ADC_FLAG_JEOCStatus=ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);
JEOC:
注入通道转换结束位
该位由硬件在所有注入通道组转换结束时设置,由软件清除
0:
转换未完成
1:
转换完成
位1
ADC_FLAG_EOCStatus=ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);
EOC:
转换结束位
该位由硬件在(规则或注入)通道组转换结束时设置,由软件清除或由读取ADC_DR时清除
0:
转换未完成
1:
转换完成
位0
ADC_FLAG_AWDStatus=ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);
AWD:
模拟看门狗标志位
该位由硬件在转换的电压值超出了ADC_LTR和ADC_HTR寄存器定义的范围时设置,由软件清除
0:
没有发生模拟看门狗事件
1:
发生模拟看门狗事件
2ADC控制寄存器1(ADC_CR1)
地址偏移:
0x04
复位值:
0x00000000
位31:
24
保留。
必须保持为0。
位23
ADC_AnalogWatchdog_SingleRegEnable单个规则通道上设置模拟看门狗
ADC_AnalogWatchdog_SingleInjecEnable单个注入通道上设置模拟看门狗
ADC_AnalogWatchdog_SingleRegorInjecEnable单个规则通道或者注入通道上设置模拟看门狗
ADC_AnalogWatchdog_AllRegEnable所有规则通道上设置模拟看门狗
ADC_AnalogWatchdog_AllInjecEnable所有注入通道上设置模拟看门狗
ADC_AnalogWatchdog_AllRegAllInjecEnable所有规则通道和所有注入通道上上设置模拟看门狗
ADC_AnalogWatchdog_None不设置模拟看门狗
AWDEN:
在规则通道上开启模拟看门狗
该位由软件设置和清除。
0:
在规则通道上禁用模拟看门狗
1:
在规则通道上使用模拟看门狗
位22
ADC_AnalogWatchdogCmd(ADC2,
ADC_AnalogWatchdog_AllRegAllInjecEnable);
JAWDEN:
在注入通道上开启模拟看门狗
该位由软件设置和清除。
0:
在注入通道上禁用模拟看门狗
1:
在注入通道上使用模拟看门狗
位21:
20
保留。
必须保持为0。
位19:
16
ADC_Mode_Independent
ADC1和ADC2工作在独立模式
ADC_Mode_RegInjecSimult
ADC1和ADC2工作在同步规则和同步注入模式
ADC_Mode_RegSimult_AlterTrig
ADC1和ADC2工作在同步规则模式和交替触发模式
ADC_Mode_InjecSimult_FastInterl
ADC1和ADC2工作在同步规则模式和快速交替模式
ADC_Mode_InjecSimult_SlowInterl
ADC1和ADC2工作在同步注入模式和慢速交替模式
ADC_Mode_InjecSimult
ADC1和ADC2工作在同步注入模式
ADC_Mode_RegSimult
ADC1和ADC2工作在同步规则模式
ADC_Mode_FastInterl
ADC1和ADC2工作在快速交替模式
ADC_Mode_SlowInterl
ADC1和ADC2工作在慢速交替模式
ADC_Mode_AlterTrig
ADC1和ADC2工作在交替触发模式
DUALMOD[3:
0]:
双模式选择
软件使用这些位选择操作模式。
0000:
独立模式
0001:
混合的同步规则+注入同步模式
0010:
混合的同步规则+交替触发模式
0011:
混合同步注入+快速交替模式
0100:
混合同步注入+慢速交替模式
0101:
注入同步模式
0110:
规则同步模式
0111:
快速交替模式
1000:
慢速交替模式
1001:
交替触发模式
注:
在ADC2和ADC3中这些位为保留位
在双模式中,改变通道的配置会产生一个重新开始的条件,这将导致同步丢失。
建议在进行任何配置改变前关闭双模式。
位15:
13
ADC_DiscModeChannelCountConfig
对ADC规则组通道配置间断模式
DISCNUM[2:
0]:
间断模式通道计数
软件通过这些位定义在间断模式下,收到外部触发后转换规则通道的数目
000:
1个通道
001:
2个通道
……
111:
8个通道
位12
ADC_InjectedDiscModeCmd
ADC_InjectedDiscModeCmd(ADC2,ENABLE);
JDISCEN:
在注入通道上的间断模式
该位由软件设置和清除,用于开启或关闭注入通道组上的间断模式
0:
注入通道组上禁用间断模式
1:
注入通道组上使用间断模式
位11
ADC_DiscModeCmd
ADC_DiscModeCmd(ADC1,ENABLE);
ADC_DiscModeChannelCountConfig
ADC_DiscModeChannelCountConfig(ADC1,2);
DISCEN:
在规则通道上的间断模式
该位由软件设置和清除,用于开启或关闭规则通道组上的间断模式
0:
规则通道组上禁用间断模式
1:
规则通道组上使用间断模式
位10
ADC_AutoInjectedConvCmd
ADC_AutoInjectedConvCmd(ADC2,ENABLE);
JAUTO:
自动的注入通道组转换
该位由软件设置和清除,用于开启或关闭规则通道组转换结束后自动的注入通道组转换
0:
关闭自动的注入通道组转换
1:
开启自动的注入通道组转换
位9
AWDSGL:
扫描模式中在一个单一的通道上使用看门狗
该位由软件设置和清除,用于开启或关闭由AWDCH[4:
0]位定义的通道上的模拟看门狗功能
0:
在所有的通道上使用模拟看门狗
1:
在单一通道上使用模拟看门狗
位8
ADC_ScanConvMode
SCAN:
扫描模式
该位由软件设置和清除,用于开启或关闭扫描模式。
在扫描模式中,由ADC_SQRx或ADC_JSQRx寄存器选中的通道被转换。
0:
关闭扫描模式
1:
使用扫描模式
注:
如果分别设置了EOCIE或JEOCIE位,只在最后一个通道转换完毕才会产生EOC或JEOC中断。
位7
ADC_IT_JEOC
JEOCIE:
允许产生注入通道转换结束中断
该位由软件设置和清除,用于禁止或允许所有注入通道转换结束后产生中断。
0:
禁止JEOC中断
1:
允许JEOC中断。
当硬件设置JEOC位时产生中断。
位6
ADC_IT_AWD
AWDIE:
允许产生模拟看门狗中断
该位由软件设置和清除,用于禁止或允许模拟看门狗。
在扫描模式下,如果看门狗检测到超范围的数值时,只有在设置了该位时扫描才会中止。
0:
禁止模拟看门狗中断
1:
允许模拟看门狗中断。
位5
ADC_IT_EOC
EOCIE:
允许产生EOC中断
该位由软件设置和清除,用于禁止或允许转换结束后产生中断。
0:
禁止EOC中断
1:
允许EOC中断。
当硬件设置EOC位时产生中断。
位4:
0ADC_Channel
ADC_Channel_0选择ADC通道0
ADC_Channel_1选择ADC通道1
ADC_Channel_2选择ADC通道2
ADC_Channel_3选择ADC通道3
ADC_Channel_4选择ADC通道4
ADC_Channel_5选择ADC通道5
ADC_Channel_6选择ADC通道6
ADC_Channel_7选择ADC通道7
ADC_Channel_8选择ADC通道8
ADC_Channel_9选择ADC通道9
ADC_Channel_10选择ADC通道10
ADC_Channel_11选择ADC通道11
ADC_Channel_12选择ADC通道12
ADC_Channel_13选择ADC通道13
ADC_Channel_14选择ADC通道14
ADC_Channel_15选择ADC通道15
ADC_Channel_16选择ADC通道16
ADC_Channel_17选择ADC通道17
AWDCH[4:
0]:
模拟看门狗通道选择位
这些位由软件设置和清除,用于选择模拟看门狗保护的输入通道。
00000:
ADC模拟输入通道0
00001:
ADC模拟输入通道1
……
01111:
ADC模拟输入通道15
10000:
ADC模拟输入通道16
10001:
ADC模拟输入通道17
保留所有其他数值。
注:
ADC1的模拟输入通道16和通道17在芯片内部分别连到了温度传感器和VREFINT。
ADC2的模拟输入通道16和通道17在芯片内部连到了VSS。
ADC3模拟输入通道9,14,15,16,17与Vss相连
3ADC控制寄存器2(ADC_CR2)
地址偏移:
0x08
复位值:
0x00000000
位31:
24
保留。
必须保持为0。
位23
ADC_TampSensorVrefintCmd
例ADC_TempSensorVrefintCmd(ENABLE);
AWDEN:
温度传感器和VREFINT使能
该位由软件设置和清除,用于开启或禁止温度传感器和VREFINT通道。
在双ADC的器件中,该位置出现在ADC1中。
0:
禁止温度传感器和VREFINT
1:
启用温度传感器和VREFINT
位22
SWSTART:
开始转换规则通道
由软件设置该位以启动转换,转换开始后硬件马上清除此位。
如果在EXTSEL[2:
0]位中选择了SWSTART为触发事件,该位用于启动一组规则通道的转换,
0:
复位状态
1:
开始转换规则通道
位21
ADC_GetsoftwareStartinjectedConvStatus
Status=ADC_GetSoftwareStartInjectedConvStatus(ADC1);
JSWSTART:
开始转换注入通道
由软件设置该位以启动转换,软件可清除此位或在转换开始后硬件马上清除此位。
如果在JEXTSEL[2:
0]位中选择了JSWSTART为触发事件,该位用于启动一组注入通道的转换,
0:
复位状态
1:
开始转换注入通道
位20
ADC_ExternalTrigConvConfigCmd
ADC_ExternalTrigConvCmd(ADC1,ENABLE);
EXTTRIG:
规则通道的外部触发转换模式
该位由软件设置和清除,用于开启或禁止可以启动规则通道组转换的外部触发信号。
0:
不用外部触发信号启动转换
1:
使用外部触发信号启动转换
位19:
17
ADC_ExternalTrigConv_T1_CC1选择定时器1的捕获比较1作为转换外部触发
ADC_ExternalTrigConv_T1_CC2选择定时器1的捕获比较2作为转换外部触发
ADC_ExternalTrigConv_T1_CC3选择定时器1的捕获比较3作为转换外部触发
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_None转换由软件而不是外部触发启动
EXTSEL[2:
0]:
选择启动规则通道组转换的外部事件
这些位选择用于启动规则通道组转换的外部事件
ADC1和ADC2的触发配置如下
000:
定时器1的CC1事件
100:
定时器3的TRGO事件
001:
定时器1的CC2事件
101:
定时器4的CC4事件
010:
定时器1的CC3事件
110:
EXTI线11/TIM8_TRGO,仅大容量产品具有TIM8_TRGO功能
011:
定时器2的CC2事件
111:
SWSTART
ADC3的触发配置如下
000:
定时器3的CC1事件
100:
定时器8的TRGO事件
001:
定时器2的CC3事件
101:
定时器5的CC1事件
010:
定时器1的CC3事件
110:
定时器5的CC3事件
011:
定时器8的CC1事件
111:
SWSTART
位16
保留。
必须保持为0。
位15
ADC_ExternalTrigConv
JEXTTRIG:
注入通道的外部触发转换模式
该位由软件设置和清除,用于开启或禁止可以启动注入通道组转换的外部触发信号。
0:
不用外部触发信号启动转换
1:
使用外部触发信号启动转换
位14:
12
ADC_ExternalTrigConv_T1_CC1选择定时器1的捕获比较1作为转换外部触发
ADC_ExternalTrigConv_T1_CC2选择定时器1的捕获比较2作为转换外部触发
ADC_ExternalTrigConv_T1_CC3选择定时器1的捕获比较3作为转换外部触发
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_None转换由软件而不是外部触发启动
JEXTSEL[2:
0]:
选择启动注入通道组转换的外部事件
这些位选择用于启动注入通道组转换的外部事件
ADC1和ADC2的触发配置如下
000:
定时器1的TRGO事件
100:
定时器3的CC4事件
001:
定时器1的CC4事件
101:
定时器4的TRGO事件
010:
定时器2的TRGO事件
110:
EXTI线15/TIM8_CC4事件(仅大容量产品具有TIM8_CC4)
011:
定时器2的CC1事件
111:
JSWSTART
ADC3的触发配置如下
000:
定时器1的TRGO事件
100:
定时器8的CC4事件
001:
定时器1的CC4事件
101:
定时器5的TRGO事件
010:
定时器4的CC3事件
110:
定时器5的CC4事件
011:
定时器8的CC2事件
111:
JSWSTART
位11ADC_DataAlign
ADC_DataAlign_RightADC数据右对齐
ADC_DataAlign_LeftADC数据左对齐
ALIGN:
数据对齐
该位由软件设置和清除。
参考图25和图26。
0:
右对齐
1:
左对齐
位10:
9
保留。
必须保持为0。
位8
ADC_DMACmd
DMA:
直接数据访问模式
该位由软件设置和清除。
详见DMA控制器章节。
0:
不使用DMA模式
1:
使用DMA模式
注:
在多于一个ADC的器件中,只有ADC1能产生DMA请求。
位7:
4
保留。
必须保持为0。
位3
RSTCAL:
复位校准
该位由软件设置并由硬件清除。
在校准寄存器被初始化后该位将被清除。
0:
校准寄存器已初始化
1:
初始化校准寄存器
注:
当正在进行转换时,如果设置RSTCAL,清除校准寄存器需要额外的周期。
位2
ADC_ResetCalibration
重置指定的ADC的校准寄存器
ADC_GetResetCalibrationStatus
获取ADC重置校准寄存器的状态
ADC_StartCalibration
开始指定ADC的校准状态
ADC_GetCalibrationStatus
获取指定ADC的校准程序
CAL:
A/D校准
该位由软件设置以开始校准,并在校准结束时由硬件清除。
0:
校准完成
1:
开始校准
位1
ADC_ContinuousConvMode
CONT:
连续转换
该位由软件设置和清除。
如果设置了此位,则转换将连续进行直到该位被清除。
0:
单次转换模式
1:
连续转换模式
位0
ADON:
开/关A/D转换器
该位由软件设置和清除。
当该位为0时,写入1将把ADC从断电模式下唤醒。
当该位为1时,写入1将启动转换。
在转换器上电至转换开始有一个延迟tSTAB,图21。
0:
关闭ADC转换/校准,并进入断电模式
1:
开启ADC并启动转换。
注:
如果在这个寄存器中与ADON一起还有其他位被改变,则转换不被触发。
这是为了防止触发错误的转换。
4ADC采样时间寄存器1(ADC_SMPR1)
地址偏移:
0x0C
复位值:
0x00000000
位31:
24
保留。
必须保持为0。
位23:
0
ADC_SampleTime
ADC_SampleTime_1Cycles5;
ADC_SampleTime_41Cycles5;
…
例1
ADC_InjectedChannelConfig(ADC1,ADC_Channel_12,2,
ADC_SampleTime_28Cycles5);
例2
ADC_InjectedChannelConfig(ADC2,ADC_Channel_4,11,ADC_SampleTime_71Cycles5);
SMPx[2:
0]:
选择通道x的采样时间
这些位用于独立地选择每个通道的采样时间。
在采样周期中通道选择位必须保持不变。
000:
1.5周期
100:
41.5周期
001:
7.5周期
101:
55.5周期
010:
13.5周期
110:
71.5周期
011:
28.5周期
111:
239.5周期
注:
–ADC1的模拟输入通道16和通道17在芯片内部分别连到了温度传感器和VREFINT。
–ADC2的模拟输入通道16和通道17在芯片内部连到了VSS。
-ADC3模拟输入通道14,15,16,17与Vss相连
5ADC采样时间寄存器2(ADC_SMPR2)
地址偏移:
0x10
复位值:
0x00000000
位31:
30
保留。
必须保持为0。
位29:
0
ADC_SampleTime
ADC_SampleTime_1Cycles5;
ADC_SampleTime_41Cycles5;
…
例1
ADC_InjectedChannelConfig(ADC1,ADC_Channel_12,2,
ADC_SampleTime_28Cycles5);
例2
ADC_InjectedChannelConfig(ADC2,ADC_Channel_4,11,ADC_SampleTime_71Cycles5);
SMPx[2:
0]:
选择通道x的采样时间
这些位用于独立地选择每个通道的采样时间。
在采样周期中通道选择位必须保持不变。
000:
1.5周期
100:
41.5周期
001:
7.5周期
101:
55.5周期
010:
13.5周期
110:
71.5周期
011:
28.5周期
111:
239.5周期
注:
ADC3模拟输入通道9与Vss相连
6ADC注入通道数据偏移寄存器x(ADC_JOFRx)(x=1..4)
地址偏移:
0x14-0x20
复位值:
0x00000000
位31:
12
保留。
必须保持为0。
位11:
0
JOFFSETx[11:
0]:
注入通道x的数据偏移
当转换注入通道时,这些位定义了用于从原始转换数据中减去的数值。
转换的结果可以在ADC_JDRx寄存器中读出。
7ADC看门狗高阀值寄存器(ADC_HTR)
地址偏移:
0x24
复位值:
0x00000000
用于确定模拟看门狗的高阀值
位31:
12
保留。
必须保持为0。
位11:
0ADC_AnalogWatchdongThresholdsConfig
ADC_AnalogWatchdogThresholdsConfig(ADC1,0x400,0x100);
HT[11:
0]:
模拟看门狗高阀值
这些位定义了模拟看门狗的阀值高限。
8ADC看门狗低阀值寄存器(ADC_LRT)
地址偏移:
0x28
复位值:
0x00000000
用于确定模拟看门狗的低阀值
位31:
12
保留。
必须保持为0。
位11:
0ADC_AnalogWatchdongThresholdsConfig
ADC_AnalogWatchdogThresholdsConfig(ADC1,0x400,0x100);
LT[11:
0]:
模拟看门狗低阀值
这些位定义了模拟看门狗的阀值低限。
规则通道有16个转换数目
注入通道有4个转换数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADC 总结