STM32 外设介绍-stm32入门

1. 面包板

  1. 面包板正面
  2. 面包板背面双面胶撕掉,内部的金属爪
  3. 金属爪的示意图
  • 把元件的引脚插到面包板的孔里后,它内部的金属爪就会夹住引脚。
  • 金属爪的排布规律是,中间的金属爪是竖着放的,上下四排是连在一起的四个整体的金属爪,对应着面包板孔的连接关系。中间竖着的五个孔内部都是连接在一起,因此元件插在一纵排的不同孔位时,内部的金属爪就实现了线路的连接;而上下四排孔整体是连在一起的,这四排是用于供电的,有标正负极,如果我们需要供电,就从上下的孔位中,用跳线引出来即可。

这个供电的引脚,有的面包板不是一整排都是连接的,如果断开需要用跳线把两边连起来

2. 输出设备

2.1 LED 介绍

LED:发光二极管,正向通电点亮,反向通电不亮
STM32 外设介绍-stm32入门_第1张图片

  • LED 电路符号,左边是正极,右边是负极。
  • LED 实物图,引脚没有剪过的 LED,长脚是正极,短脚是负极。
  • LED 内部,较小的一半是正极,较大的一半是负极。

硬件电路:

STM32 外设介绍-stm32入门_第2张图片
使用 STM32 的 GPIO 口驱动 LED 的电路:

  • 左边为低电平驱动的电路,LED 正极接 3.3V,负极通过一个限流电阻(面包板为了简化电路省去,设计电路时要注意加上)接到 PA0 上,当 PA0 输出低电平时,LED 两端产生电压差,就会形成正向导通电流,这样 LED 就会点亮了;当 PA0 输出高电平时,因为两端都是 3.3V 电压,不会形成电路,所以高电平 LED 就会熄灭。
  • 右边为高电平驱动的电路,LED 负极接 地,正极通过一个限流电阻接到 PA0 上,这时就是高电平点亮,低电平熄灭。

如何选择?
取决于 IO 口高低电平的驱动能力如何了。(推挽输出模式下,高低电平均有较强的输出能力,此时两种接法均可)但是在单片机的电路里,一般倾向使用第一种接法,因为很多单片机或者芯片,都使用了高电平弱驱动,低电平的强驱动的规则,这样可以一定程度上避免高低电平打架。所以高电平驱动能力弱,就不能使用第二种连接方法了。

限流电阻作用:

  1. 防止 LED 因为电流过大而烧毁
  2. 可以调整 LED 的亮度

2.2 蜂鸣器介绍

  • 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定
  • 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音

STM32 外设介绍-stm32入门_第3张图片

  • 有源蜂鸣器 内部电路图,用了一个三极管开关来进行驱动,在 VCC 和 GND 分别接上正负极的供电,然后中间一个引脚接低电平,蜂鸣器就会响,接高电平,蜂鸣器就关闭。
  • 有源蜂鸣器 实物图。

硬件电路:

STM32 外设介绍-stm32入门_第4张图片
使用了三极管开关的驱动方案:三极管开关是最简单的驱动电路,对于功率稍微大一点的,直接用 IO 口驱动会导致 STM32 负担过重,此时可以用一个三极管驱动电路来完成驱动的任务。

  • 左边这个图是 PNP 三极管的驱动电路,三极管的左边是 基极,带箭头的是 发射极,剩下的是 集电极。它左边的基极给低电平,三极管就会导通,通过 3.3V 和 GND 就可以给蜂鸣器提供驱动电流了;基极给高电平,三极管截止,蜂鸣器就没有电流。
  • 右边这个图是 NPN 三极管的驱动电路,三极管的左边是 基极,带箭头的是 发射极,剩下的是 集电极。它左边的基极给高电平,三极管就会导通,通过 3.3V 和 GND 就可以给蜂鸣器提供驱动电流了;基极给低电平,三极管截止,蜂鸣器就没有电流。

注意:PNP 的三极管最好接在上边,NPN 的三极管最好接在下边。这是因为三极管的通断,是需要在发射极和基极直接产生一定的开启电压的。如果把负载接在发射极这边,可能会导致 三极管不能开启。

2.3 OLED 简介

OLED(Organic Light Emitting Diode):有机发光二极管
OLED显示屏:性能优异的新型显示屏,具有

  • 功耗低:每个像素都是一个单独的发光二极管,每个像素可以自发光的
  • 响应速度快:可以使 OLED 有更高的刷新率,总线时序快,可以避免阻塞我们的程序
  • 宽视角:因为 OLED 屏幕自发光的、所以在任何角度看,显示内容都是清晰的
  • 轻薄柔韧:比如现在手机上的折叠屏、柔性屏等,用的就是 OLED 显示屏
  • 等特点

0.96寸OLED模块:小巧玲珑、占用接口少(驱动这个OLED只需要几根线和简单的通信协议)、简单易用,是电子设计中非常常见的显示屏模块(单片机领域金典显示屏);但只有一种颜色,分辨率也很低。

STM32 外设介绍-stm32入门_第5张图片

供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64,外型:4/7 根针脚

硬件电路:
STM32 外设介绍-stm32入门_第6张图片

  • 左边是 4 针脚版本的 OLED 电路,GND 接 GND,VCC 接 3.3V,给 OLED 供电。SCL 和 SDA 是 I2C 的通信引脚,需要接在单片机 I2C 通信的引脚上。(驱动函数模块用的是 GPIO 口 模拟的 I2C 通信,所以这两个端口可以接在任意的 GPIO 口。
  • 右边是 7 针脚版本的 OLED 电路,GND 接 GND,VCC 接 3.3V,给 OLED 供电。剩下的引脚是 SPI 通信协议的引脚,如果是 GPIO 口模拟的通信协议,也是接在任意的 GPIO 口就行了。

3. 输入设备

3.1 按键介绍

按键:常见的输入设备,按下导通,松手断开
STM32 外设介绍-stm32入门_第7张图片

  1. 按键实物图:按钮按下去的时候,下面两个引脚是接通的,松手后,两个引脚自动断开。

在单片机中应用按键的一个现象:按键抖动现象

  • 由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动
  • 按键没按下是 高电平,按下时 低电平,在按下的瞬间,信号由高电平变为低电平,就会来回抖几下。(抖动比较快,通常在 5~10 ms 之间,人眼分辨不出来;但是对于高速运行的单片机而言,5~10 ms 还是很漫长的)所以我们要对抖动进行过滤,否则就会出现按键按一下,单片机却反映了多次的现象。另外在按键松手的时候,也会有一小段时间的抖动,我们在程序中也要注意过滤一下。
  • 最简单的过滤方法就是加一段延时,把这个抖动时间耗过去就没问题了。

硬件电路:

STM32 外设介绍-stm32入门_第8张图片
按键的四种接法:
上面两个是 下接按键 的方式(按键按下是低电平,松手是高电平),下面两个是 上接按键 的方式(按键按下是高电平,松手是低电平)。(左边两种接法要求引脚必须是 上拉/下拉输入模式,右边两种接法可以允许引脚是浮空输入的模式,因为已经外置上拉和下拉电阻)

一般用 下接 的方式,原因与 LED 接法类似,是电路设计的习惯和规范

  1. 第一种接法是最常用的接法了。将 GPIO 口通过 按键 接地。当按键按下时,PA0 直接被下拉到 GND,此时读取 PA0 口的电压就是低电平;当按键松手时,PA0 被悬空,引脚电压不确定。所以在这种解法下,必须要求 PA0 是上拉输入的模式,否则就会出现引脚电压不确定的错误现象。(如果 PA0 是上拉输入模式,引脚再悬空,就是高电平。所以这种方式下,按下按键,引脚为低电平,松手,引脚为高电平。
  2. 第二种接法相比较第一种接法再外部接了一个上拉电阻。当按键松手时,引脚由于上拉作用,自然保持为高电平;当按键按下时,引脚直接接到 GND,引脚为低电平。这种状态下,引脚不会出现悬空状态,所以此时 PA0 引脚可以配置为 浮空输入或者上拉输入,如果是上拉输入,就是内外两个上拉电阻共同作用,这时高电平会更强一下,对应高电平更加稳定;但当引脚被强行拉到低时,损耗也会大一些。
  3. 第三种接法,PA0 通过按键接到 3.3V。要求 PA0 必须配置为 下拉输入模式,当按键按下时,引脚为高电平,松手时,引脚回到默认值低电平。

要求单片机的引脚可以配置为 下拉输入模式,一般单片机可能不一定有下拉输入模式,最好还是用上面的接法。

  1. 第四种接法,在刚才的这种接法下面再外接一个下拉电阻。PA0 需要配置为 下拉输入模式或者浮空输入模式。

3.2 传感器模块介绍

传感器模块工作原理:利用传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,但是电阻的变化不容易直接被观察,所以通常将传感器元件与定值电阻进行串联分压即可得到模拟电压输出,对于电路来说,检测电压非常容易,再通过电压比较器对模拟电压进行二值化即可得到数字电压输出。

STM32 外设介绍-stm32入门_第9张图片

  1. 光敏电阻传感器:光线越强,光敏电阻(N1)阻值越小
  2. 热敏电阻传感器:温度越高,热敏电阻(N1)阻值越小
  3. 对射式红外传感器:红外光线越强,红外接收管(N1)阻值越小
  4. 反射式红外传感器:向下发射红外光,然后检测反射光,红外光线越强,红外接收管(N1)阻值越小(可用作寻迹小车)
  5. 硬件电路:N1 就是传感器元件所代表的可变电阻。它的阻值可以根据环境的光线、温度等模拟量进行变化。R1 是跟 N1 进行分压的定值电阻。R1 和 N1 串联,一端接在 VCC 正极,一端接在 GND 负极,构成了基本的分压电路,C2 是一个滤波电容,是为了给中间的电压输出进行滤波的,用来滤除一些干扰,保证输出电压波形的平滑。

一般我们遇到一端接在电路中,一端接地的电容都可以考虑一下是不是滤波电容。如果是滤波电容,那这个电容就是用来保证电路稳定的,并不是电路的主要框架,我们在分析电路的时候,可以先把这个电容给抹掉,使我们的电路分析更加简单。

采用分压定理分析传感器电阻的阻值变化对输出电压的影响,也可以用上下拉电阻的思维(阻值越小,拉力越强)来分析。 当 N1 阻值变小时,下拉作用就会增强,中间的 AO 端电压就会拉低,极端情况下, N1 阻值为 0,AO 输出被完全下拉,输出 0V; 当 N1 阻值变大时,下拉作用就会减弱,中间的 AO 端由于 R1 的上拉作用电压就会升高,极端情况下, N1 阻值为 无穷大,相当于断路,输出 电压被 R1 拉高至 VCC。

在单片机电路中出现的的弱上拉、弱下拉、强上拉、强下拉中的强和弱就指电阻阻值的大小。上拉和下拉就指接到 VCC 还是 GND。

在这两个电阻的分压下,AO 就是我们想要的模拟电压输出了,所以 AO 电压就直接通过排针输出了,这就是 AO 电压的由来。

数字输出就是对 AO 进行二值化的输出,二值化通过芯片 LM393 来完成的,是一个电压比较器芯片,里面有两个独立的电压比较器电路,剩下的是 VCC 和 GND 供电。VCC 接到了电路的 VCC,GND 接到了电路的 GND,这里有个电容是电源供电的滤波电容。电压比较器其实就是一个运算放大器。

运算放大器当作比较器情况:当同相输入端的电压大于反相输入端的电压时,输出就会瞬间升为最大值,也就是输出接 VCC;反之当同相输入端的电压小于反相输入端的电压时,输出就会瞬间降为最小值也就是输出接 GND。这样就可以对一个模拟电压进行二值化了。

这里同相输入端 IN+ 接到了 AO,就是模拟电压端,IN- 接了一个电位器,电位器接法也是分压电阻的原理,拧动电位器,IN- 就会生成一个可调的阈值电压,两个电压进行比较,最终输出结果是 DO,数字电压输出,DO 最终就接到了 引脚的输出端,这就是 数字电压 的由来。

右边有两个指示灯电路。左边是电源指示灯,通电就亮;右边是 DO 输出指示灯,可以指示 DO 的输出电平,低电平电路,高电平熄灭。

右边 DO 这里多了个 R5 上拉电阻,是为了保证默认输出为 高电平的。

P1 的排针,分别是 VCC、GND、DO 和 AO。

红外传感器 会多一个点亮红外发射管的电路,发射管发射红外光,接收管接收红外光。

  • 模拟电压表示接收光的强度。
  • 电位器直接换成两个电阻进行分压,数字输出就是固定阈值的二值化了。
  • 模块通常用来检测通断,所以阈值不需要过多的调整。

硬件电路:

STM32 外设介绍-stm32入门_第10张图片

  • 使用模块的方案,VCC 接 3.3V,GND 接 GND,用于供电。
  • DO 数字输出随便接一个端口,用于读取数字量。
  • AO 模拟输出,暂时不接。

4. 配合外部中断的设备

使用外部中断模块的特性:对于 STM32 来说,想要获取的信号是外部驱动的很快的突发信号。

  • 比如旋转编码器的输出信号,我们可能很久都不会拧它,此时不需要 STM32 做任何事,但是一拧它,就会有很多脉冲波形需要 STM32 接收。这个信号是突发的,STM32 不知道什么时候会来;同时它还是外部驱动的,STM32 只能被动读取;最后这个信号非常快,STM32 稍微晚一点来读取,就会错过很多的波形。这种情况就可以考虑使用 STM32 的外部中断。
  • 比如红外遥控接收头的输出,接收到遥控数据之后,会输出一段波形,这个波形转瞬即逝,并且不会等你,所以就需要我们用外部中断来读取。
  • 按键虽然也是外部驱动的突发事件,但不推荐用外部中断来读取按键,因为外部中断不好处理按键抖动和松手检测的问题。对于按键来说,他的输出波形也不是转瞬即逝的。所以要求不高的话可以在主程序中循环读取。如果不想用主程序循环读取,可以考虑一下定时器中断读取的方式。(既可以做到后台读取按键值、不阻塞主程序;也可以很好的处理按键抖动和松手检测的问题)

4.1 旋转编码器

作用及原理:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向

类型:机械触点式/霍尔传感器式/光栅式

工作原理:
STM32 外设介绍-stm32入门_第11张图片

  • 第一种:只有一个光栅加红外对管的编码器,最简单的编码器样式,使用对射式红外传感器来测速的,配合一个光栅编码盘。当这个编码盘转动时,红外传感器的红外光就会出现遮挡、透过、遮挡、透过这样的现象,对应模块输出的电平就是高低电平交替的方波,方波的个数代表转过的角度,频率代表转速,用外部中断来捕获方波的边沿,以此判断位置和速度。但是这个模块只有一路输出,正转反转输出波形没法区分,所以这种测速方法只能测位置和速度,不能测旋转方向。

这只能输出一个方波信号,并不是正交编码器。

  • 第二种:内部用金属触点来进行通断的,是一种机械触点式编码器,左右是两部分开关触点,其中内侧两根细的触点跟中间引脚连接,外侧触点,左边接在 左引脚,右边接在 右引脚,这就是这些触电的连接方式。中间圆的金属片是一个按键,旋转编码器的轴可以按下去的,这个按键的两根线,就在上面引出来了。按键的轴按下,上面两根线短路,松手,上面两根线断开,就是个普通按键。编码盘也是一系列像光栅一样的东西,只不过是金属触点,在旋转时以此接通和断开两边的触点,这个金属盘的位置是经过设计的,能让两侧触点的通断产生 90 度的相位差,最终配合外部电路。编码器的两个输出就会输出相位相差 90 度的波形,根据 A 相和 B 相 方波是 提前还是滞后90度 来区分是 反转还是正转,这种相位相差 90 度的波形就叫做正交波形,带正交波形信号输出的编码器,是可以用来测方向的。这就是单向输出和两相正交输出的区别。(还有一个引脚输出方波信号代表转速,另一个输出高低电平代表旋转方向的方式)里面靠两个触点交替导通,可以输出 A 相和 B 相两个正交信号,是正交编码器。

这种编码器一般用于进行调节,比如音响调节音量这样的用途,因为是触点接触的形式,不适合电机这种高速旋转的地方。另外几种都是非接触的形式,可以用于电机测速。(电机测速在电机驱动中的应用还是非常常见的)

  • 第三种:直接附在电机后面的编码器。是霍尔传感器形式的编码器,中间是一个圆形磁铁,边上有两个位置错开的霍尔传感器。当磁铁旋转时带动中间的磁铁旋转,两个霍尔传感器 90° 放置,通过霍尔传感器,就可以输出 A 相和 B 相 两个正交的方波信号,是正交编码器。接口的引脚有六根线,最左和最右一般直接接到电机的,然后是靠里一些的两根是编码器电源,最中间的两根就是 A 相和 B 相的输出了。

  • 第四种:独立的编码器元件,输入轴转动时,输出就会有波形,也可以测速和测方向,一般都是正交编码器,当然也有的不是,具体用法看相应手册。接口的引脚一般有六个,两个是编码器电源,两个是 A、B 相,一般还有一个编码器 0 位置的输出,也就是 z 相,0 位置就是编码器每转到一个固定位置的时候,输出一个脉冲,一般应用于位置测量,校准 0 位置用的。最后还有一个引脚,一般是空脚,没有用到。

硬件电路:
STM32 外设介绍-stm32入门_第12张图片
中间是旋转编码器,上面按键的两根线并没有使用,是悬空的,下面的就是编码器内部的两个触点了,旋转轴旋转时,这两个触点以相位相差 90 度的方式交替导通,因为这只是个开关信号,所以要配合外围电路才能输出高电平;左边接了一个 10k 的上拉电阻,默认没旋转的情况下,被上拉为高电平,通过 R3 这个电阻输出到 A 端口的就是高电平,当旋转时,内部触点导通,被直接拉低到 GND 了,再通过 R3 输出,A 端口就是低电平了。R3 是一个输出限流电阻,是为了防止模块引脚电流过大的;C1 是输出滤波电容,防止一些输出信号抖动的;右边电路和左边一模一样。最后中间下边这个模块的 C 端口就直接接到了 GND。

右边使用这个模块时,上边 VCC、GND 接电源,下面的 A 相输出和 B 相输出接到 STM32 的两个引脚上。比如 PB0 和 PB1,注意引脚的 GPIO_Pin 编号不要一样就行了。然后中间的 C 引脚,就是 GND,暂时不用。

5. 配合 PWM 信号输入的设备

5.1 舵机简介

舵机是一种根据 输入 PWM 信号占空比 来控制舵机输出轴的角度的装置(PWM 波形当作一个通信协议来使用的,这也是一种常用的应用形式,与用 PWM 等效一个模拟输出,关系不大)

STM32 外设介绍-stm32入门_第13张图片
型号:SG90
三根输入线:两根电源线、一根信号线,PWM 通过输入到信号线来控制舵机
白色的输出轴:固定在指定的角度不动,固定的位置由信号线的 PWM 信号来决定的
拆解结构:舵机并不是一种单独的电机,内部由直流电机驱动,还有一个控制电路板,是一个电机的控制系统。大概执行逻辑:PWM 信号输入到控制板,给控制板指定一个目标角度,然后电位器检测输出轴的当前角度,如果大于目标角度,电机就会反转,如果小于目标角度,电机就会正转,最终使输出轴固定在指定角度,这就是舵机的内部工作流程。
输入 PWM 信号要求:输入信号脉冲宽度 / 周期为 20 ms,高电平宽度为 0.5 ms~2.5 ms(舵机输出轴转角 -90°~90°,对应关系都是线性分配的,按比例来),占空比是这个范围。
实际应用:机器人,机械臂可以用舵机来控制关节,遥控车,遥控船可以用舵机来控制方向。还有一些其他结构,都可以考虑使用舵机。

硬件电路:
STM32 外设介绍-stm32入门_第14张图片
引脚定义图:

  • 在舵机上有三根线,分别是黑、红、黄:对应的,黑色是电源负极 GND,红色是电源正极,这里的 5V 舵机就接 +5V,黄色是信号线,接 PWM 信号。
  • 本实验的舵机上三根线分别是棕红橙,对应的是棕色是电源负,红色是电源正,橙色是信号线。

引脚电路图:

  • GND 接 GND,电源的 +5V,这个是电机的驱动电源,一般电机都是大功率设备,它的驱动电源也必须是一个大功率的输出设备,如果能像这样单独提供供电,就再好不过了。如果不能,那也要注意电源的功率是不是能达标。如果单独供电的话,供电的负极要和 STM32 共地,然后正极接在 5V 供电引脚上,对于我们套件的话,可以直接从 STLINK 的 5V 输出脚,引一根线,接到这里,这也就是使用 USB 的 5V 供电,也是可以带的动的。
  • 信号线直接接到 STM32 引脚上就行,比如 PA0,因为这个舵机内部是有驱动电路的,所以单片机引脚可以直接接到这里来,我们这个 PWM 只是一个通信线,是不需要大功率的。

5.2 直流电机及驱动简介

直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转。直流电机是一个单独的电机,里面没有驱动电路,所以要外挂一个驱动电路来控制。

直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作,可以用 PWM 来控制电机的速度。

电机这类器件基本上都属于大功率设备。必须要加驱动电路才能控制,电机驱动电路也是一个研究课题,现在市面上也有很多驱动电路可以选择。比如 TB6612、DRV8833、L9110、L298N 等等,这些都是比较常见的电机驱动芯片,另外还有一些用分离元件 MOS 管搭建的电路,这个功率可以做的更大一些。

TB6612 是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向。

  • 芯片里有两路驱动电路的,可以独立的控制两个电机;
  • H桥型驱动电路,里面一路有四个开关管,所以就可以控制正反转。

像有些芯片,比如 ULN2003,它里面一路就只有一个开关管,所以它就只能控制电机在一个方向转

使用现成的芯片还是挺方便的,电路已经设计好并集成在芯片里了,我们直接拿来用就行。

STM32 外设介绍-stm32入门_第15张图片
型号:130直流电机,有两个引脚。
电机驱动板:

  • 上面的芯片就是 TB6612,外围电路就只需要三个滤波电容就行了,可见芯片的集成度还是非常高的

H 桥电路的基本结构:
由两路推挽电路组成的,如果左边上管导通,下管断开,那左边输出就是接在VM的电机电源正极;上管断开,下管导通,那左边输出就是接在 PGND 的电源负极。如果有两路推挽电路,中间这里接一个电机,左上和右下导通,那电流就是从左上边流向右下边;右上和左下导通,那电流方向就反过来了,从右上边流向左下边;H桥可以控制电流流过的方向,所以它就能控制电机的正反转,这就是电机驱动芯片内部的部分电路。

硬件电路:
STM32 外设介绍-stm32入门_第16张图片

  1. VM:电机电源的正极,跟舵机的电源要求一样,要接一个可以输出大电流的电源。电压与电机的额定电压保持一致。
  2. VCC:逻辑电平输入端,电压要和控制器的电源保持一致。比如使用 STM32,是 3.3V 器件,那就接 3.3V;如果是 51 单片机,是 5V 的器件,那就接 5V,这个引脚并不需要大功率,所以可以和控制器共有一个电源。
  3. 三个GND:一样的引脚,在板子内部都是连通的,随便选一个 GND 接 系统负极即可
  4. AO1、AO2、BO1、BO2 就是两路电机的输出了,可以像图示分别接两个电机,AO1 和 AO2 就是 A 路的两个输出,它的控制端就是上面这三个 PWMA、AIN2 和 AIN1,这三个引脚控制下面 A 路的一个电机,对应于灰色填充部分,这三个引脚直接接到单片机的 GPIO 口就行了;其中 PWMA 引脚要接 PWM 信号输出端,其他两个引脚可以任意接两个普通的 GPIO 口,那这三个引脚给一个低功率的控制信号,驱动电路就会从 VM 汲取电流,来输出到电机上,这样就可以完成低功率的控制信号控制大功率设备的目的。右边这一路也是一样,两路的功能和操作方法是完全一样的。
  5. STBY(Stand By)引脚:待机控制脚,如果接 GND,芯片就不工作,处于待机状态;如果接逻辑电源 VCC,芯片就正常工作,这个引脚如果不需要待机模式的话,可以直接接 VCC,3.3V,如果需要的话,可以任意接一个 GPIO,给高低电平就可以控制了。

三个脚是如何控制电机正反转和速度的呢?取决于右下方表格。
这里输入是 IN1、IN2、PWM 和 STBY,STBY 低电平就待机,高电平就正常工作,然后右边是输出,O1、O2 和模式状态。

  • 如果 IN1 和 IN2 全都接高电平,两个输出就都为低电平,这样两个输出没有电压差,电机是不会转的
  • 如果 IN1 和 IN2 全都接低电平,输出直接关闭,这样电机也是不会转的
  • 如果 IN1 接低电平,IN2 接高电平,电机就是处于反转状态,转不转取决于 PWM,如果 PWM 给高电平,输出就是一低一高,有电压差了,电机可以转,这时候定义的是反转,开始转了;如果PWM 给低电平,输出两个低电平,电机还是不转,这就是反转的逻辑。IN1 给低,IN2 给高,PWM 高转低不转,如果 PWM 是个不断翻转的电平信号,那电机不就是快速的反转、停止、反转、停止,如果 PWM 频率足够快,那电机就可以连续稳定的反转了,并且速度取决于 PWM 信号的占空比,这就是反转的工作流程。在这里就是使用 PWM 来等效一个模拟量的功能。
  • IN1 给高,IN2 给低,这就是电机的正转状态,PWM 高,正转,低,停止,如果 PWM 频率足够快,那电机就是连续稳定的正转了,并且速度取决于 PWM 信号的占空比。

你可能感兴趣的:(stm32,stm32,嵌入式硬件,单片机)