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

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

[复制链接]
STMCU小助手 发布时间:2022-11-24 21:22
1、对于单片机而言,GPIO引脚的配置是很基础也是很重要的。错误的引脚配置非但不能实现想要的功能,而且出错时往往不容易查找,耽误调试的时间。这就需要编程调试人员对GPIO引脚的配置有很好的理解。今天这篇文章,我们就来谈谈STM32Fxx系列单片机引脚的复用功能(Alternate Function)。/ A) I; j7 i; K, u: Z

. X/ f; \8 w  |8 _  a2、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)输出等八种模式。 下图为芯片数据手册的内容:+ N  n8 m3 O; |( d

1 r$ e* S1 p6 @, D$ R d51c9f1b7c80458a81d91ecd907c0d22.png ; I  x! a0 Q8 p6 L* G" ?( A
) I% ~$ @* p- y9 l# E2 g" ]4 w6 U
3、上拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(高电平)
! B8 k& K3 y. X8 g6 p1 _; {0 }% x6 j) G# L1 o4 [
下拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(低电平)& M* ~3 t$ m: o, S( {

! r  e$ ]5 e5 w, P开漏输出,可以直接输出一个低电平,但是不能直接输出高电平(可以借助外部上拉电阻)/ N: {' ?& T! k& v" l* f

2 T, J+ t1 n4 r推挽输出,可以直接输出高电平和低电平! e: p  [% z, S6 Y1 m! ^

6 o. P# k1 J+ x4 J; R3 h! K. _/ ]        4、输入模式
; y2 o2 A7 o% Z4 c
6 N  M/ `5 L# C; c 108db4f3e3aa4248ab3e81b7bae96766.png 0 r, l# j0 N: G. u2 x7 a, n' {

) S& P7 F3 @' q. P, u注意:每个引脚内部都有两个电阻(上拉电阻+下拉电阻),但是引脚内部的上拉电阻是一个弱上拉(驱动能力比较弱),如果打算给引脚一个确定的电平,建议在引脚外部接上拉电阻。
2 R' d1 }4 C. O, {' s% K4 g! a, Y- C9 B$ Z7 C) l3 [" ~, u; a
5、输出模式+ u% l; M- F" e# c
0 P# J- n+ M: t1 m3 m  z' n5 @
882ee53dc1f84b8f9ee8bd0663c5cf94.png + e6 |. K, B4 C8 s$ \* G0 V7 P

* p' d8 ~$ d9 s5 Q$ u7 bMOS管和N-MOS管循环导通,这样的好处是可以提高负载能力和切换速度,并且可以降低功耗。. X) r' T/ G! D; d, X; r
4 A6 X( g# \6 R0 p  K
先来介绍下开漏输出和推挽输出的区别:
* z- t! L. H4 w' e7 @
6 R  n" x% g; T- Y) e" u# GSTM32Fxx系列单片机的输出电路有两个MOS管:P-MOS和N-MOS。
* A8 T# _$ ]  b3 `' W( }$ X) D/ `/ ]7 y, r& o& t
在开漏输出模式下,P-MOS管不工作,只有N-MOS管起作用。若输出数据寄存器的值为0,则N-MOS导通,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止;由于P-MOS不工作,此时IO口既不是高电平,也不是低电平,这种状态被称为高阻态。8 h- ]" ?% u0 n4 D

9 a1 w& [; v$ k$ z' R- d5 q+ q在推挽输出模式下,若输出数据寄存器的值为0,则N-MOS导通,P-MOS截止,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止,P-MOS导通,IO口输出高电平;/ v+ |# f. }0 V) E& p- u/ U

$ ?) a5 K# g) P我们知道STM32Fxx单片机还有复用开漏输出和复用推挽输出,它们和上面讲到的(普通)开漏输出和(普通)推挽输出有什么区别呢?
% W( i6 n3 q, E1 W# B: `# a/ v2 \/ [+ C" k" s
这就涉及到针脚的复用功能。0 R$ ?5 Z6 K7 z" Y& `  w7 F

- k/ Z% J% N9 t  C9 v. d1 m$ [/ j我们知道,STM32Fxx内部集成了很多的外设控制器,比如USART、SPI、bxCAN等等,这些外设控制器,也需要通过引脚与外设连接。复用功能是相对于单片机的引脚而言的。所谓“复用功能”,是指单片机的引脚既可以做普通GPIO使用,也可以作为内部外设控制器的引脚来使用。8 {$ R) a, j& W; D0 O
- Y3 M% Y7 k8 I, ]
比如我们来看看STM32F103xx单片机的PA5引脚,如下图:6 f! ^+ X( j0 z( d( V
5 }7 r0 v6 d. K8 O
c81a83f58db1dda19e8a8226676315bd.jpg + M0 z3 W- S. o. m. N! v* E

% f9 m. @' ?  w; r) h% Q. k首先,PA5可以做为普通GPIO来使用;其次,如果作为外设的引脚,它可以作为SPI1的时钟(SPI1_SCK)、DAC的输出通道1(DAC_OUT1)或者ADC的输入通道5(ADC12_IN5)。1 c3 Z, D3 S4 O& K

1 l6 x8 U* ^, H$ v0 E1 ]& u% tPA5支持的三种外设(SPI1、DAC、ADC)在同一时刻只能选择一种,选择的方法是开启相应外设的时钟,并使其它外设的时钟保持关闭状态。如果PA5被配置为复用功能,但是没有开启它支持的任何外设的时钟,它的输出是不确定的。
  ?' V+ |) x" e6 q7 [: N, g
5 d; t* I9 h! k* q7 l8 Z6 Y复用推挽输出和(普通)推挽输出在输出的时候均使用两个MOS管(P-MOS和-MOS),其输出电路是相同的。区别在于控制输出的信号来源:(普通)推挽输出控制MOS管的信号来自输出数据寄存器,而复用推挽输出的控制信号来自单片机的内置外设控制器(比如SPI1)。
7 y1 j: v  q2 g9 F! @
) P# ~; x- g! x+ E复用开漏输出和(普通)开漏输出的道理是一样的。4 ~/ \6 s# p- C- @: c

" g; m2 d. \" P5 h% }  Z9 [6 p/ }下面这张图,是普通GPIO输出的引脚配置图,可以看到其输出信号来自输出数据寄存器(Output data register):
2 B; E% X, z1 D5 [3 s# ?
+ B5 {+ G" X, N, s. R 89a50950c16733999e4c55ae6e5f358b.png - O7 j# s$ x, v$ F2 H

3 w6 n' c- D- }- a* k' I+ a& L5 x( h. l下面这张图,是选择复用功能后的引脚配置图,可以看到其输出信号来自芯片内置的外设控制器:0 o/ g* G1 o: ?, u- M, l* q

) A% I& ]! ~2 s* D+ J& H注:虽然复用模式的控制信号来自内置外设控制器,但是单片机(CPU)依然可以读取相应的数据。在复用推挽输出模式下,单片机可以通过读取输出数据寄存器(Output Data Register)的数据来获取上次输出的值;在复用开漏输出的模式下,单片机可以通过读取输入数据寄存器(Input Data Register)的值来获取引脚的状态。! j; K0 ]$ c2 v  f' [
————————————————% P) K! Z; _, Q3 I9 ^9 E
版权声明:阿文的储物间
! A: r0 Y# |6 Y( F6 n; E) I; z! ~
, _! }/ Q3 R9 h1 N" B. C. [8 [
收藏 评论0 发布时间:2022-11-24 21:22

举报

0个回答

所属标签

相似分享

官网相关资源

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