你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F1系列的ADC配置

[复制链接]
STMCU小助手 发布时间:2022-12-25 13:10
ADC引脚

9c468174d08843a3b0f9c2550031f931.png


注入通道与规则通道
1. 注入通道
相当于中断,最多4个通道,注入通道和它的转换顺序在ADC_JSQR寄存器中选择,注入通道转化的总数应写入ADC_JSQR寄存器的最低两位

注入通道的转换结果保存在下图中的注入通道寄存器(4*16位)

转换结束后产生标志位,能够产生相应的中断


2. 规则通道
相当于正常运行的程序,最多16个通道,规则通道和它的转化顺序在ADC_SQRx寄存器中进行选择,规则通道转换的总数应写入ADC_SQR1寄存器的最低4位中

规则通道的转换结果保存在下图中的规则通道数据寄存器(16位)

转换结束后产生标志位,能够产生相应的中断

83c46e90a3694bc98318ce1868cb9329.png

ADC时钟

2d08de46565b4fb78e14ba8f3bdef7c9.png


ADC的触发事件

2ff7e13244294919b528a57e5741d2d4.png

ADC的运行模式
1. 单次转换模式

只执行一次转换
可以通过以下方式启动:
设置ADC_CR2寄存器的ADON位(规则通道)
外部触发启动(规则通道或注入通道)

如果一个规则通道转换完成,则:
转换结果数据被存储在16位的ADC_DR寄存器中饭
EOC转换结束标志被置1
如果设置了EOCIE,则产生中断

如果一个注入通道被转换,则:
转换结果数据被存储在16位的ADC_DRJ1寄存器中饭
JEOC注入转换结束标志被置1
如果设置了JEOCIE,则产生中断

2. 连续转换模式
ADC转换已结束马上启动另一次转换

此模式可以通过外部触发启动或通过设置ADC_CR2寄存器的ADON位启动

如果一个规则通道转换完成,则:
转换结果数据被存储在16位的ADC_DR寄存器中饭
EOC转换结束标志被置1
如果设置了EOCIE,则产生中断

如果一个注入通道被转换,则:
转换结果数据被存储在16位的ADC_DRJ1寄存器中饭
JEOC注入转换结束标志被置1
如果设置了JEOCIE,则产生中断

3. 扫描模式
用于扫描一组模拟通道

可以通过设置ADC_CR1的SCAN位来控制

一旦开启,ADC将会扫描所有被ADC_SQRX寄存器(针对规则通道)或ADC_JSQR寄存器(针对注入通道)选中的通道

在每个扫描组的每个通道上执行单次转换,每次转换结束时,同一组的下一个通道被自动转换

如果设置了CONT位,则转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换

如果设置了DMA位,每次EOC后,DMA控制器把规则通道的转换数据传输到SRAM中,而注入通道转换的数据总是存储在ADC_JDRx寄存器中

ADC的中断
规则通道转换结束和注入通道转换结束都能产生中断,有独立的中断使能位

ADC1和ADC2的中断映射在同一个中断向量上,而ADC3的中断有自己的中断向量

N80NWZK@NPHXWM1@58PNA7P.png

ADC的时钟
RCC_CFGR寄存器

9a3df94c1fef41e3a009f859acef8a02.png

注意不要让ADC的时钟超过14 MHz


ADC控制寄存器
ADC_CR1

571dedfd6f6441d68334fde83c897b9f.png

5d94fadaa9af4292b0b6971acd1c0aed.png

1bd77f456f4044f0a7fb1128be62ad5f.png


ADC_CR2控制器

cf7aa3fb597346f6b233d2b2ebbc2741.png

cd891e79d2a74fa394a1f7554da88229.png

9b4ed28cfe50460ea835259ffd2cf603.png


ADC的数据对齐
左对齐或右对齐
由于STMF1自带的ADC是12位的,而数据寄存器是16位的,因此可以设置转化结果为左对齐或右对齐

04bc5d1f94014d7b9f91d35f72c04c97.png

f84bc3f984fb401db816d4bf9b032abc.png

2f76811c19fa4215a27b0f61d8e74d05.png

ADC的采样时间设置

设置好预分频后相当于确定了ADC的时钟,即ADC时钟的周期(ADC_CLK)

需要用多少的ADC采样周期来完成一次采样,可以在这2个寄存器里进行设置

总的转换时间为采样时间+12.5个ADC时钟周期

通过计算可知,STM32F1自带ADC的最小转换时间是1微秒

244669253ddb41b0a0b5244b8b3989a0.png

64a8b88109a248139eb7fccf45ea19e0.png

ADC的规则转换通道寄存器

9b39c2089c164fb5a60dcfba07a52c3d.png

adc6e082cd514c9091eba8c9d3f621ea.png

32c0f2b1a2574d27b1138b375b2d77b7.png

ADC的注入转换通道寄存器

d4c5b5bbd60248ec982052834264768a.png


ADC数据寄存器

5fa563cdb4a849ed84a40a1174b51d8e.png

ADC状态寄存器

88056bb3b272413a96a4997ab4b39b94.png

ADC使用的配置过程
1. 开启相关时钟,记住配置相应的GPIO引脚为模拟输入
开启相关时钟

2b7e02a014e743659747a8586e635fa6.png

配置GPIO引脚

7c1339bd21494ba6a2c13ecabc7e368a.png


2. 设置ADC时钟

0f33fc887017496e8c16c21ac98498b2.png

设置完后复位

79b008f95a10491dbb0d9c378c7dde85.png

这里的ADC_DeInit函数的实现如下

eb6b211aa1464f448f71887f68ddb14a.png

3. 初始化ADC的相关参数
ADC初始化

2b3eb019b0954578bc42c3ca036be617.png

这个函数的实现如下

bb2a9566c4314859b9b09533d064a4ef.png

初始化的结构体如下:
ADC_InitTypeDef

62a5c56341d0459a8d64aab4b450fb78.png

使用单次转换还是连续转换,可以选择的参数:

846cb02ab0ff4bda89f9440c3de8793c.png

触发方式的可选择项:

98dc548b5f424b08b03923f0bd310d5d.png

数据对齐方式的可选性:

3dec232f769d4b778b7e5dadb3868942.png

4. 使能ADC并进行校准

76f0909548ef471086c127c8bb629cb1.png

ADC_Cmd函数的实现如下

6244b1ca38724e25b626b0e50ea9acc5.png

ADC_ResetCalibration函数实现如下

4332d10fab3446e7b060ca2210be7707.png

5. ADC配置规则转换通道参数使能软件启动并获取结果

1fe906b04b364f0c80ec99379e454f4b.png

ADC_GetConversionValue函数的实现

2a5ef44b92c846f7bca3e7c6f7652bb5.png

c537d56ac50241ac948ed0c0b49910b1.png

ADC_SoftwareStartConvCmd函数的实现


deeea7a536fd40ba80c83b3b3ec78768.png

ADC_ITConfig的实现

bd8dd6575ce04ee7abd1b2246066f4ac.png

ADC_StartCalibration的实现

de75b54e10d14722b5b80c29f62e797e.png

————————————————
版权声明:CodeForCoffee


收藏 评论0 发布时间:2022-12-25 13:10

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版