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

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

[复制链接]
STMCU小助手 发布时间:2022-11-24 21:22
1、对于单片机而言,GPIO引脚的配置是很基础也是很重要的。错误的引脚配置非但不能实现想要的功能,而且出错时往往不容易查找,耽误调试的时间。这就需要编程调试人员对GPIO引脚的配置有很好的理解。今天这篇文章,我们就来谈谈STM32Fxx系列单片机引脚的复用功能(Alternate Function)。
+ ^2 w  u3 m4 I, \% u, P# @' W6 ]! A6 |  }
2、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)输出等八种模式。 下图为芯片数据手册的内容:- {. R  v. x* I
! b/ x) }" I* G) _. F& d  T- d
d51c9f1b7c80458a81d91ecd907c0d22.png
2 i3 e/ Q/ E5 U/ U8 i. G5 n3 q+ a! x/ [4 k
3、上拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(高电平)$ z( T# X& e# |+ P/ M

9 H5 X, Q# v" h/ v6 v) _下拉电阻,在引脚空闲状态下(无外部输入时),给引脚一个默认的电平状态(低电平)
7 w. j* o& Q$ \4 D- {1 L1 o! Q9 F5 ?
, B  i7 a, J: g开漏输出,可以直接输出一个低电平,但是不能直接输出高电平(可以借助外部上拉电阻): b2 y3 |+ L" i& L+ q( M, t+ K" E1 j8 l

+ H* \- M! `& }推挽输出,可以直接输出高电平和低电平
- N. l( s. b! c/ y! R9 z0 |7 B8 Q0 h& c* G; K" ^  t% V" i" B
        4、输入模式5 k& F6 y2 n& j, ~- b6 g% O
# d) @4 D/ O$ b
108db4f3e3aa4248ab3e81b7bae96766.png 3 u, ~: F& x" f6 @) o

5 G, o9 F, C9 L+ u注意:每个引脚内部都有两个电阻(上拉电阻+下拉电阻),但是引脚内部的上拉电阻是一个弱上拉(驱动能力比较弱),如果打算给引脚一个确定的电平,建议在引脚外部接上拉电阻。
* v2 ^9 F! u( w3 f7 O" S( b' K/ _( g: K% X) H3 \
5、输出模式2 m- d5 z1 `# A* V5 c* e2 Q  v" C  i
  ^9 H% H* Y# m* c
882ee53dc1f84b8f9ee8bd0663c5cf94.png
. j0 j, C" u; `  E* f. N6 s# W9 }! O& p' L+ {0 Q' k3 y) p
MOS管和N-MOS管循环导通,这样的好处是可以提高负载能力和切换速度,并且可以降低功耗。9 m6 ]6 |. J, v) t5 u( X
4 A6 K2 L- F" Y9 r0 \
先来介绍下开漏输出和推挽输出的区别:0 ~3 }9 X( M: u8 G" |# z

  U/ }/ _* z3 x+ E0 l/ }; ]" V- RSTM32Fxx系列单片机的输出电路有两个MOS管:P-MOS和N-MOS。
& s- b/ e* U2 ^; u
* d9 I. h6 a# v! ~在开漏输出模式下,P-MOS管不工作,只有N-MOS管起作用。若输出数据寄存器的值为0,则N-MOS导通,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止;由于P-MOS不工作,此时IO口既不是高电平,也不是低电平,这种状态被称为高阻态。- ?( I. M8 j- @3 I) Z

$ u9 {; I4 O% y. c' v在推挽输出模式下,若输出数据寄存器的值为0,则N-MOS导通,P-MOS截止,IO口输出低电平;若输出数据寄存器的值为1,则N-MOS截止,P-MOS导通,IO口输出高电平;+ f2 v* j+ ^2 M  u
+ R" U& [4 c; l9 }& s8 @( \
我们知道STM32Fxx单片机还有复用开漏输出和复用推挽输出,它们和上面讲到的(普通)开漏输出和(普通)推挽输出有什么区别呢?- S  T! d5 q3 a; t" W
( x8 K( U- E$ T' o
这就涉及到针脚的复用功能。
1 x/ z, }9 y0 R. f& I% n8 I/ H6 H
我们知道,STM32Fxx内部集成了很多的外设控制器,比如USART、SPI、bxCAN等等,这些外设控制器,也需要通过引脚与外设连接。复用功能是相对于单片机的引脚而言的。所谓“复用功能”,是指单片机的引脚既可以做普通GPIO使用,也可以作为内部外设控制器的引脚来使用。# w* I$ D9 O% r* X! V/ A8 _6 _
; R  t( o! P/ z: }& u$ Q7 L9 e
比如我们来看看STM32F103xx单片机的PA5引脚,如下图:% [- r, U, Q" k2 x9 y5 J7 b
: P& i+ h. y- e7 J0 h2 M
c81a83f58db1dda19e8a8226676315bd.jpg 7 [9 _; T! o2 e) r0 |

5 c3 L/ f. A( J4 L, H# P* {- ]首先,PA5可以做为普通GPIO来使用;其次,如果作为外设的引脚,它可以作为SPI1的时钟(SPI1_SCK)、DAC的输出通道1(DAC_OUT1)或者ADC的输入通道5(ADC12_IN5)。
: H( x$ M% W2 A" V
. g, F5 t9 ?; q. s4 `  x# ^PA5支持的三种外设(SPI1、DAC、ADC)在同一时刻只能选择一种,选择的方法是开启相应外设的时钟,并使其它外设的时钟保持关闭状态。如果PA5被配置为复用功能,但是没有开启它支持的任何外设的时钟,它的输出是不确定的。
! m; g4 E( }1 P* U
5 \1 |+ S; {+ ~8 Y- j" U复用推挽输出和(普通)推挽输出在输出的时候均使用两个MOS管(P-MOS和-MOS),其输出电路是相同的。区别在于控制输出的信号来源:(普通)推挽输出控制MOS管的信号来自输出数据寄存器,而复用推挽输出的控制信号来自单片机的内置外设控制器(比如SPI1)。3 T3 x8 H& `7 Y' @3 ?- k& k* ^
9 I/ q) ?: z" h  P0 z9 C
复用开漏输出和(普通)开漏输出的道理是一样的。4 H( P  u! w" K$ j7 {

6 I( ^4 v" j$ H0 R# I; x+ @( ?1 j下面这张图,是普通GPIO输出的引脚配置图,可以看到其输出信号来自输出数据寄存器(Output data register):" ]$ \- |! i8 R5 }' U6 ^+ f! _. C
( F) o) z/ i4 H8 _, @+ G
89a50950c16733999e4c55ae6e5f358b.png ; P6 a* H  Y$ W4 _6 [2 ^

% d  M5 J4 e; p1 W- J下面这张图,是选择复用功能后的引脚配置图,可以看到其输出信号来自芯片内置的外设控制器:' |! E  Q! q9 X- P' ^" }- I( `
/ }: W' m5 a  l8 `5 {' \
注:虽然复用模式的控制信号来自内置外设控制器,但是单片机(CPU)依然可以读取相应的数据。在复用推挽输出模式下,单片机可以通过读取输出数据寄存器(Output Data Register)的数据来获取上次输出的值;在复用开漏输出的模式下,单片机可以通过读取输入数据寄存器(Input Data Register)的值来获取引脚的状态。
3 J- D' N/ a8 F- O7 S————————————————
8 y8 o- _. j9 I% [5 O3 x6 W版权声明:阿文的储物间
& D3 s6 d2 y5 ^) R
; i; r. T8 D4 E6 R/ A2 [
收藏 评论0 发布时间:2022-11-24 21:22

举报

0个回答

所属标签

相似分享

官网相关资源

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