搭建机器人电控系统——MCU基石——STM32 GPIO原理

搭建机器人电控系统——MCU基石

在上一章中,我讲解了搭建一个机器人电控系统的前期准备工作,包括电源的选择和主控的开发,经过一些基础的单片机任务之后,现在你应该对单片机的一些编程习惯有了掌握。

在本章中,我将会按照一个机器人的底盘到上层机构的顺序,单独来对每一个机构的电控部分进行讲解。从中分别来详细展示运动模型、通信协议、PWM输出和算法部分,从而让你学会如何用MCU去控制每个部分机构的运动。

不过在这之前,我会以STM32F407为例,先补充一些关于MCU的基本知识原理:

STM32系统架构
STM32时钟配置
GPIO原理
中断NVIC与EXTI


GPIO是什么?

IO口是单片机除了特殊引脚之外的输出输入引脚,GPIO也是各大外设功能中的一种。之所以把GPIO单独拿出来讲解,是因为GPIO是IO口最基本的功能,在你初始化任何外设的功能的时候,除了都要使能时钟以外,你基本都要先初始化GPIO的结构体:
在这里插入图片描述

所以我们说,外设正常工作的激励来源是时钟信号,而外设的硬件环境是GPIO。
GPIO(General-purpose input/output),通用输入输出口,其电路原理图如下图所示:
在这里插入图片描述

我们在初始化它的结构体的时候,通常有以下两大要点:

GPIO的模式

5种输入模式:

GPIO的输入模式表示信息或者激励从IO引脚获得,比如按键检测、ADC采集、PWM捕获等。
在这里插入图片描述

①输入浮空模式Floating

IO引脚不接任何上拉或下拉电阻,即在空闲状态下IO引脚的电平状态不确定。

②输入上拉模式IPD

IO引脚接上拉电阻,即在空闲状态下IO引脚的电平状态为高。

③输入下拉模式IPU

IO引脚接下拉电阻,即在空闲状态下IO引脚的电平状态为低。

④模拟输入模式AIN

IO引脚作为模拟量采集输入,如ADC,即不经过TTL施密特触发器进行电平转换成TTL格式。

⑤复用功能输入

IO引脚复用(既有GPIO的功能也有其他外设功能)到其他外设上(比如串口功能外设),此时作为输出RX引脚读取外部数据信息。

4种输出模式:

GPIO的输出模式表示信息从IO引脚输出,比如点亮LED灯、输出PWM波等。
在这里插入图片描述

①开漏输出模式DD

MCU内信息从寄存器输出,经过N-MOS管到IO引脚。当输出为高电平时,N-MOS关闭,此时IO引脚电平仅由上拉或下拉电阻决定。

②开漏复用输出模式AFDD

MCU内信息从外设模块输出,经过N-MOS管到IO引脚。当输出为高电平时,N-MOS关闭,此时IO引脚电平仅由上拉或下拉电阻决定。

③推挽输出模式PP

MCU内信息从寄存器输出,经过P-MOS管道IO引脚。当输出为低电平时,P-MOS关闭,此时IO引脚电平仅由上拉或下拉电阻决定。

④推挽复用输出模式AFPP

MCU内信息从外设模块输出,经过P-MOS管道IO引脚。当输出为低电平时,P-MOS关闭,此时IO引脚电平仅由上拉或下拉电阻决定。


GPIO的输出速度

GPIO输出的速度有2MHZ、25MHZ、50MHZ、100MHZ。频率表示输出驱动电路的带宽。设置GPIO的速度时要保证频率(带宽)大于驱动对象信号频率(一般大于10倍以上)。

比如:串口波特率为115.2K,则用2M的速度即可,省点且噪声小;CAN通信配置波特率为1MHZ,则用25MHZ以上可以,如果用2MHZ可能会导致失真。

一个点灯的例程:
在这里插入图片描述

因为是要点灯,假设这个灯是高电平点亮,即外部接地。所以设置GPIO模式为推挽输出,这样我程序里设高就能亮。(如果设置为开漏输出,那么程序设高没用,得看IO对应引脚是被上拉还是下拉。)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值