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

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

[复制链接]
STMCU小助手 发布时间:2022-11-24 21:22
1、对于单片机而言,GPIO引脚的配置是很基础也是很重要的。错误的引脚配置非但不能实现想要的功能,而且出错时往往不容易查找,耽误调试的时间。这就需要编程调试人员对GPIO引脚的配置有很好的理解。今天这篇文章,我们就来谈谈STM32Fxx系列单片机引脚的复用功能(Alternate Function)。
% B8 x7 I( F' K+ o/ P* X
7 u. w$ {6 Z! f" v2、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)输出等八种模式。 下图为芯片数据手册的内容:
: e+ ]" `) T9 d" e+ |" f" J6 h  G: R: j- g0 b' `
d51c9f1b7c80458a81d91ecd907c0d22.png 4 X; l* e. L% n- s7 p- V
1 \1 a5 k0 c/ A& o9 @
3、上拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(高电平)7 O0 d0 s' ~2 y' b0 b
/ x5 w/ u+ @6 Y; L; G
下拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(低电平)
3 o" ]' V& I9 v9 @4 `+ a" S
4 b  z5 I  I* j9 d6 m开漏输出,可以直接输出一个低电平,但是不能直接输出高电平(可以借助外部上拉电阻)
2 ~5 S6 l, N! R: M: p
# U! w0 ~4 s0 z4 E% S. g6 O推挽输出,可以直接输出高电平和低电平
, B% J- G; K- z/ h
. g! u1 `+ n0 H& C        4、输入模式. l8 X# @" Y' w, f; Z) O& b# Q

; N: F/ U# ~; n: ]! J 108db4f3e3aa4248ab3e81b7bae96766.png
7 h! G, g& ]2 Z: U, ]. |! E/ d/ d4 U! l' L
注意:每个引脚内部都有两个电阻(上拉电阻+下拉电阻),但是引脚内部的上拉电阻是一个弱上拉(驱动能力比较弱),如果打算给引脚一个确定的电平,建议在引脚外部接上拉电阻。
$ A6 k# o/ z* _7 Y8 {, E# v! ]
" T& K8 O) C4 i$ w& b, V5、输出模式
3 _) e/ ?+ t8 z1 j! n9 _
# `. y% V6 Q" s/ Y 882ee53dc1f84b8f9ee8bd0663c5cf94.png " y: E9 d6 ]6 e$ z( C( g# z

& |3 _0 s6 }% |, A; x  y% Q" R$ cMOS管和N-MOS管循环导通,这样的好处是可以提高负载能力和切换速度,并且可以降低功耗。
5 M4 t5 f$ ~8 I$ E8 n% S- _( R+ X  u7 R4 D) C3 Q
先来介绍下开漏输出和推挽输出的区别:
3 f: B# _. ?* b. ], B. P+ J
. {4 B6 Z9 u7 j& H/ gSTM32Fxx系列单片机的输出电路有两个MOS管:P-MOS和N-MOS。
  ?8 ]0 [+ `9 K( Y
$ |- M" J4 ^! z0 z: @; b在开漏输出模式下,P-MOS管不工作,只有N-MOS管起作用。若输出数据寄存器的值为0,则N-MOS导通,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止;由于P-MOS不工作,此时IO口既不是高电平,也不是低电平,这种状态被称为高阻态。
1 v, }5 G0 u3 q7 _; V( f) E: ?% [) p4 P5 j
在推挽输出模式下,若输出数据寄存器的值为0,则N-MOS导通,P-MOS截止,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止,P-MOS导通,IO口输出高电平;/ N; z0 |9 Y1 E$ E8 v
- A" ^6 n8 Z7 E" X- w8 k+ ^
我们知道STM32Fxx单片机还有复用开漏输出和复用推挽输出,它们和上面讲到的(普通)开漏输出和(普通)推挽输出有什么区别呢?
9 s. e/ N0 {; h5 e8 o5 h2 I
. ?+ {2 \* `) q) y& K0 N, ^" Y: m这就涉及到针脚的复用功能。
1 v% I5 e' r3 p7 }
2 \# V7 n2 A! m4 z9 k; v我们知道,STM32Fxx内部集成了很多的外设控制器,比如USART、SPI、bxCAN等等,这些外设控制器,也需要通过引脚与外设连接。复用功能是相对于单片机的引脚而言的。所谓“复用功能”,是指单片机的引脚既可以做普通GPIO使用,也可以作为内部外设控制器的引脚来使用。
! ?8 c( E- }# X0 |; i! f
; Y$ i% c7 n, t* i* M+ O' D& }- ?; g比如我们来看看STM32F103xx单片机的PA5引脚,如下图:
. z* Z) \0 P$ |7 V" h# Y  l
( H- j9 t" o% Z6 @ c81a83f58db1dda19e8a8226676315bd.jpg ) V$ q2 d+ b# Q* p9 |- E0 h& X
( e0 M0 i0 v: q0 f$ `  O( N$ {" G
首先,PA5可以做为普通GPIO来使用;其次,如果作为外设的引脚,它可以作为SPI1的时钟(SPI1_SCK)、DAC的输出通道1(DAC_OUT1)或者ADC的输入通道5(ADC12_IN5)。! C% f/ U4 U1 R8 p, A% A4 m
+ F2 e1 |2 X- W
PA5支持的三种外设(SPI1、DAC、ADC)在同一时刻只能选择一种,选择的方法是开启相应外设的时钟,并使其它外设的时钟保持关闭状态。如果PA5被配置为复用功能,但是没有开启它支持的任何外设的时钟,它的输出是不确定的。$ ?. J3 u- n) L

& N" Z3 i( d$ ^0 N; {复用推挽输出和(普通)推挽输出在输出的时候均使用两个MOS管(P-MOS和-MOS),其输出电路是相同的。区别在于控制输出的信号来源:(普通)推挽输出控制MOS管的信号来自输出数据寄存器,而复用推挽输出的控制信号来自单片机的内置外设控制器(比如SPI1)。: O/ d8 Y# W# ]0 o
4 U7 p/ E  J4 f( v) F. z
复用开漏输出和(普通)开漏输出的道理是一样的。
. ?' ?$ y6 x/ q6 I6 @, w; w% a# J% W
下面这张图,是普通GPIO输出的引脚配置图,可以看到其输出信号来自输出数据寄存器(Output data register):
4 h/ h6 A7 k: [6 ~& d6 M3 |  |, l9 n1 F$ _1 e
89a50950c16733999e4c55ae6e5f358b.png
$ F  Z- V6 ], C0 r# w* k: D  a: u# R" }  ]5 k
下面这张图,是选择复用功能后的引脚配置图,可以看到其输出信号来自芯片内置的外设控制器:' j* G" i5 {% Y4 t

( {* K1 ?$ {$ m注:虽然复用模式的控制信号来自内置外设控制器,但是单片机(CPU)依然可以读取相应的数据。在复用推挽输出模式下,单片机可以通过读取输出数据寄存器(Output Data Register)的数据来获取上次输出的值;在复用开漏输出的模式下,单片机可以通过读取输入数据寄存器(Input Data Register)的值来获取引脚的状态。9 U4 z6 K' D6 V# S0 B5 G
————————————————8 I. [5 R2 j) l) q
版权声明:阿文的储物间: D" J) [& x  |$ H6 D6 w
; N5 E; m) }- c6 G. ]: g1 w2 ~' a7 o
收藏 评论0 发布时间:2022-11-24 21:22

举报

0个回答

所属标签

相似分享

官网相关资源

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