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

如何理解STM32单片机引脚的复用功能?

[复制链接]
STMCU小助手 发布时间:2022-11-24 21:22
1、对于单片机而言,GPIO引脚的配置是很基础也是很重要的。错误的引脚配置非但不能实现想要的功能,而且出错时往往不容易查找,耽误调试的时间。这就需要编程调试人员对GPIO引脚的配置有很好的理解。今天这篇文章,我们就来谈谈STM32Fxx系列单片机引脚的复用功能(Alternate Function)。
& P% U. v9 T5 Z0 b
; S4 d) _2 C0 R- ?0 r2 q# u2、STM32Fxx系列单片机的GPIO引脚可以配置为浮空输入(Input Floating)、上拉输入(Input Pull-up)、下拉输入(Input Pull-down)、模拟量(Analog)、开漏输出(Output Open-drain)、推挽输出(Output Push-pull)、复用开漏(Alternate function open-drain)输出和复用推挽(Alternate function push-pull)输出等八种模式。 下图为芯片数据手册的内容:6 j6 r+ ]) g2 h

3 @) O! S5 J* ?8 i9 E1 s' y+ Z* \ d51c9f1b7c80458a81d91ecd907c0d22.png
; _  T5 j7 |% x6 {# z* `. A  D! H8 p4 w" S* ~# R/ K; e
3、上拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(高电平)
7 e/ F' E  g& \1 @2 t$ m. G- `- F! D" d( t; z
下拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(低电平)
) t/ v! P7 _% H. J' K( r* c$ T
: X# j0 _4 b2 n9 {开漏输出,可以直接输出一个低电平,但是不能直接输出高电平(可以借助外部上拉电阻)
  R; }! U8 N8 a& w
1 s" h0 @2 _$ F- g* ]# c; I推挽输出,可以直接输出高电平和低电平  ~: D. ]/ L# }2 b8 ]+ O" A7 }# i

) z( K( \2 d' N5 z        4、输入模式# A6 h. ^+ o/ J
  u2 X4 P$ E) Y4 X
108db4f3e3aa4248ab3e81b7bae96766.png
- Q- J/ ?/ t6 E. Y+ l" E- o
! `& o) \  N$ N5 }注意:每个引脚内部都有两个电阻(上拉电阻+下拉电阻),但是引脚内部的上拉电阻是一个弱上拉(驱动能力比较弱),如果打算给引脚一个确定的电平,建议在引脚外部接上拉电阻。
2 {( f. D- q( a' E6 ]; e2 X2 n4 ~' |6 c
5、输出模式
- D' Y) G, J4 M8 k8 W/ f
' ~: z  ]0 c  ]$ h 882ee53dc1f84b8f9ee8bd0663c5cf94.png $ F$ X4 W. N1 f4 Y  G

9 r  h( r/ @0 a' i% k; g2 iMOS管和N-MOS管循环导通,这样的好处是可以提高负载能力和切换速度,并且可以降低功耗。% P' e. \. [: l% J6 D/ v' b$ j! t7 C

" A, P( ~2 j3 H 先来介绍下开漏输出和推挽输出的区别:
! |: j4 }& T# e$ l
* @: O" p; E* QSTM32Fxx系列单片机的输出电路有两个MOS管:P-MOS和N-MOS。7 w8 U; t/ T- C4 a2 }! j$ J

( s0 r  y5 G0 j4 l8 N( s$ I+ N在开漏输出模式下,P-MOS管不工作,只有N-MOS管起作用。若输出数据寄存器的值为0,则N-MOS导通,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止;由于P-MOS不工作,此时IO口既不是高电平,也不是低电平,这种状态被称为高阻态。- H: A- k! H. u! S

% X& z% S. }, j0 {, m# U" Y0 H3 c在推挽输出模式下,若输出数据寄存器的值为0,则N-MOS导通,P-MOS截止,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止,P-MOS导通,IO口输出高电平;0 [; e3 ]$ O& K; n/ I2 ]1 {$ f* }9 ~

9 t- I0 b" o% r+ x. r5 E+ h7 J我们知道STM32Fxx单片机还有复用开漏输出和复用推挽输出,它们和上面讲到的(普通)开漏输出和(普通)推挽输出有什么区别呢?& k( ]5 b8 `6 s# ~

2 d' b$ @3 i4 _1 i5 q; B/ P这就涉及到针脚的复用功能。
4 V' A6 a: v  I* P; j' D) \' c. N: _; Q$ |* @& {! V- X* p
我们知道,STM32Fxx内部集成了很多的外设控制器,比如USART、SPI、bxCAN等等,这些外设控制器,也需要通过引脚与外设连接。复用功能是相对于单片机的引脚而言的。所谓“复用功能”,是指单片机的引脚既可以做普通GPIO使用,也可以作为内部外设控制器的引脚来使用。% w7 a" T! s9 n; }
) Q/ \# {# {, r; S9 P
比如我们来看看STM32F103xx单片机的PA5引脚,如下图:. B" O, K* M* p( `
6 a5 t& R6 e9 }1 O9 D! W. p/ Q
c81a83f58db1dda19e8a8226676315bd.jpg 0 e2 \, E2 e6 ?0 W2 I5 D" c

: D8 H2 K/ ^7 R首先,PA5可以做为普通GPIO来使用;其次,如果作为外设的引脚,它可以作为SPI1的时钟(SPI1_SCK)、DAC的输出通道1(DAC_OUT1)或者ADC的输入通道5(ADC12_IN5)。1 {: y7 k* o, Y" @" \  G
5 U$ N8 k1 Z; L/ j8 j; n
PA5支持的三种外设(SPI1、DAC、ADC)在同一时刻只能选择一种,选择的方法是开启相应外设的时钟,并使其它外设的时钟保持关闭状态。如果PA5被配置为复用功能,但是没有开启它支持的任何外设的时钟,它的输出是不确定的。
. g1 Y# w8 c  p
' B; N! f# }/ k8 l! W复用推挽输出和(普通)推挽输出在输出的时候均使用两个MOS管(P-MOS和-MOS),其输出电路是相同的。区别在于控制输出的信号来源:(普通)推挽输出控制MOS管的信号来自输出数据寄存器,而复用推挽输出的控制信号来自单片机的内置外设控制器(比如SPI1)。
7 w6 ^3 l1 z0 m0 I
" ]7 \2 f1 ]. }. B2 h% ]& h复用开漏输出和(普通)开漏输出的道理是一样的。
! z" p, k- S# O) M
  y* O1 B% x. ^& ^7 R. D0 u- b下面这张图,是普通GPIO输出的引脚配置图,可以看到其输出信号来自输出数据寄存器(Output data register):$ R0 a7 h: y. n+ ]: d' p

' I- D6 s% P5 U8 v7 l: n 89a50950c16733999e4c55ae6e5f358b.png 7 N0 Z/ @" @. X4 H* J) y5 F! F0 @
. g) O9 q: E' y/ }: O$ ~( d
下面这张图,是选择复用功能后的引脚配置图,可以看到其输出信号来自芯片内置的外设控制器:
5 |( V# t/ J8 F" C! B& Q: {+ }. Y( X1 K) @2 E8 w$ t4 [  M
注:虽然复用模式的控制信号来自内置外设控制器,但是单片机(CPU)依然可以读取相应的数据。在复用推挽输出模式下,单片机可以通过读取输出数据寄存器(Output Data Register)的数据来获取上次输出的值;在复用开漏输出的模式下,单片机可以通过读取输入数据寄存器(Input Data Register)的值来获取引脚的状态。
2 f7 N) R- `3 p$ ^1 `/ T. v————————————————2 n* |1 ?( W, }2 e' }6 C5 B/ P8 ^
版权声明:阿文的储物间/ K* S+ z% {5 j' y$ B' n3 ~

2 b/ O4 u2 a! C
收藏 评论0 发布时间:2022-11-24 21:22

举报

0个回答

所属标签

相似技术帖

官网相关资源

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