GPIO 相关==arm裸机1

本文详细介绍了GPIO的四种输入模式和四种输出模式,包括浮空输入、上拉输入、下拉输入、模拟输入以及开漏输出、推挽输出、开漏复用输出和推挽复用输出的工作原理。同时,阐述了通用异步收发器UART、通用串行总线USB、集成电路互连IIC和串行外设总线SPI四种常见的串行通信协议的特点、连接方式、传输速率和距离,以及各自的操作时序。
摘要由CSDN通过智能技术生成
一、GPIO 的四种输出模式、四种输入模式

在这里插入图片描述
1、四种输入模式

  • 浮空输入:黄色的高亮部分显示了数据传输通道,外部的电平信号通过左边编号 1 的 I/O 端口进入 STM32,经过编号 2 的施密特触发器的整形送入编号 3 的“输 入数据寄存器”,在“输入数据寄存器”的另一端(编号 4),CPU 可以随时读 出 I/O 端口的电平状态。
    在这里插入图片描述

  • 上拉输入:与前面的浮空输入模式相比,仅仅是在数据通道上部,接入了一个上拉电 阻,根据 STM32 的数据手册,这个上拉电阻阻值介于 30K~50K 欧姆。同样, CPU 可以随时在“输入数据寄存器”的另一端,读出 I/O 端口的电平状态。
    在这里插入图片描述

  • 下拉输入:数据通道的下部,接入了一个下拉电阻,根据 STM32 的数据手册,这个下拉电阻阻值也是介于 30K~50K 欧姆。===可省去外部的上下拉电阻。
    在这里插入图片描述

  • 模拟输入:信号从左边编号 1 的端口进入,从右边编号 2 的一端直接进入 ADC 模块。 这里我们看到所有的上拉、下拉电阻和施密特触发器,均处于断开状态, 因此“输入数据寄存器”将不能反映端口上的电平状态,也就是说,模拟输 入配置下,CPU 不能在“输入数据寄存器”上读到有效的数据。
    在这里插入图片描述
    2、四种输出模式

  • 开漏输出:当 CPU 在左边的编号 1 端通过位设置/清除寄存器,或输出数据寄存器写 入数据后,该数据位将通过编号 2 的输出控制电路传送到编号 4 的 I/O 端 口,如果 CPU 写入的是逻辑“1”,则编号 3 的 N-MOS 管将处于关闭状态, 此时 I/O 端口的电平将由外部的上拉电阻决定,如果 CPU 写入的是逻辑“0”, 则编号 3 的 N-MOS 管将处于开启状态,此时 I/O 端口的电平被编号 3 的 N-MOS 管拉到了 VSS 的零电位。
    在这里插入图片描述
    在图的上半部,施密特触发器处于开启状态,这意味着 CPU 可以在“输入 数据寄存器”的另一端,随时监控 I/O 端口的状态;通过这个特性,还实现 了虚拟的 I/O 端口双向通信:只要 CPU 输出逻辑“1”,由于编号 3 的 N-MOS 管处于关闭状态,I/O 端口的电平将完全由外部电路决定,因此,CPU 可以 在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑“1”。

  • 推挽输出:在开漏输出模式的基础上,推挽输出模式仅仅是在编号 2 的输出控制电路 之后,增加了一个 P-MOS 管。 当输出逻辑“1”时,编号 3 处的 P-MOS 管导通,而下方的 N-MOS 管截止, 达到输出高电平的目的。 当输出逻辑“0”时,编号 3 处的 P-MOS 管截止,而下方的 N-MOS 管导通, 达到输出低电平的目的。 在这个模式下,CPU 仍然可以从“输入数据寄存器”读到外部电路的信号。
    在这里插入图片描述

  • 开漏复用输出:与开漏输出模式的配置基本相同,不同的是编号 2 的输出控制电路的输入,与复用功能的输出端相连,此时输出数据寄存器被从输出通道 断开了。同样,CPU 可以从“输入数据寄存器”读到外部电路的信号。
    在这里插入图片描述

  • 推挽复用输出:推挽复用输出模式,同样的道理,编号 2 的输出控制电路的输入,与 复用功能的输出端相连,此时输出数据寄存器被从输出通道断开了。 其它部分与前述模式一致,包括对“输入数据寄存器”的读取。
    在这里插入图片描述
    3、总结

  • (1)浮空输入_IN_FLOATING :浮空输入,可以做 KEY 识别。

  • (2)带上拉输入_IPU:IO 内部上拉电阻输入。

  • (3)带下拉输入_IPD:IO 内部下拉电阻输入。

  • (4)模拟输入_AIN :应用 ADC 模拟输入,或者低功耗下省电。

  • (5)开漏输出_OUT_OD:IO 输出 0 接 GND,IO 输出 1 则悬空,需要外接上拉电阻才能输出 高电平。当输出为 1 时,IO 口的状态由上拉电阻拉高,但同时 IO 口也可由外部电路 拉低,可以通过输入数据寄存器读取电平变化,实现 C51 的 IO 双向功能。

  • (6)推挽输出_OUT_PP :IO 输出 0 接 GND, IO 输出 1 接 VCC,读输入值是未知的。

  • (7)复用功能的推挽输出_AF_PP :片内外设功能(I2C 的 SCL,SDA)。

  • (8)复用功能的开漏输出_AF_OD:片内外设功能(TX1,MOSI,MISO.SCK.SS)

二、四种常用通讯接口协议(串行)==重要

1、通用异步收发器UART

  • (1)特点:异步全双工;发送时低位在前、高位在后,即小端模式。
  • (2)连接方式:三线连接,非同名端连接,可选用 TTL 电平、RS-232 电平、RS-485 电平。
  • 数据格式和时序:1 位起始位(0),5~8 位数据位,1/0 位奇偶校验位,1 ~ 2 位停止位
  • (3)具体由线路控制寄存器决定。
  • (4)传输速率和传输距离==常识
    • ①一般波特率设置为 9600baud 或 115200baud。波特率越高,有效传输距离越短,9600兼 顾了传输速率和常用传输距离,一般为 10 米(TTL);如果为 115200 则一般为 2~3 米(TTL)。 传输速率最高可达 1.5Mbps。
    • ②RS-232 电平最远可达 15m,RS-485 最远可达 1200m。
  • (5)组成部件
    • ①发送器
      • a.发送模式:先进先出(FIFO)模式、普通模式。在 FIFO 模式下,当 IV 个字节数据全部到 位后才进行发送(缓冲),不同嵌入式处理器芯片内部设置的 IV 值不同。
      • b.发送方式:查询发送方式、中断发送方式。
    • ②接收器
      • a.接收模式:先进先出(FIFO)模式、普通模式。在 FIFO 模式下,只有缓冲器满了才产生接 收中断并置位接收标志位;在普通模式下,接收到一个字符就引发中断并置位标志位。
      • b.接收方式:查询接收方式、中断接收方式。
    • ③控制单元:接收和发送缓冲器的状态被记录在 UART 的状态寄存器中,而接收和发送 FIFO 的长度由 UART FIFO 控制寄存器决定。
    • ④波特率发生器:在外部时钟的作用下,可通过设置波特率系数寄存器决定所需要的波特率, 最高为 115200bps。
    • 总结:通常情况下发送采用查询方式,接收采用中断方式,因为发送是程序直接控制的,而 接收是随机的

2、通用串行总线 USB(universal serial bus)

  • (1)特点:同步半双工;发送时低位在前、高位在后,小端模式。

  • (2)连接方式:四线连接,同名端连接,差分传输,用来传输信号并提供电源。
    在这里插入图片描述
    在这里插入图片描述

  • (3)传输速率和传输距离

    • ①传输速率
      在这里插入图片描述
    • ②传输距离最长不超过 5m。
  • (4)通信方式:

    • 采用主从方式,由主机负责所有 USB 设备的连接与删除、发起与 USB 设备 的通信等。
    • 目前许多高性能的嵌入式处理芯片内部都集成了 USB 控制器,包括 USB 主机、 USB 设备、USB OTG(On The Go)。USB OTG 可以摆脱主机实现点对点通信,实现在没有主 机的情况下从设备之间直接进行数据传输。
  • (5)优点:

    • 使用方便:一个接口可以连接多个不同的设备,支持热插拔。
    • 速度快:USB2.0 的速度为 240Mbps,USB3.0 的速度达到 5Gbps 即 640MBps。
    • 连接灵活:既可使用串行连接,也可使用 USB 集线器把多个 USB 设备连接在一起。理论 上可以连接 127 个 USB 设备,每个外设线缆长度可达 5m,USB 能智能识别 USB 链上外围设 备的接入或拆卸。
    • 独立供电:USB 接口提供了内置电源。
  • (6)硬软件构成

    • ①硬件:主控器包括一个根集线器(Root Hub),它提供一个或多个下行端口。
    • ②软件:USB 设备驱动程序、USB 驱动程序、USB 主控制器驱动程序。
  • (7)信号编码方式:采用翻转不归零制(NRZI)

  • (8)USB 四种传输模式:USB 设备驱动向 USB 控制器驱动请求的每次传输被称为一个事务, 事务有四种类型:Bulk Transaction、Control Transaction、Interrupt Transaction、Isochr onos Transaction。

    • ①Bulk 传输事务:这种传输事务传输的是大块的数据,传输这种事务的管道叫做 Bulk 管道。 这种事务的传输分为三部分:
      • a.第一部分是 Host 端发出一个 Bulk 的令牌请求,如果令牌是 IN 令牌则是从 Device 到 Host 请求,如果是 OUT 令牌 Host 到 Device 的请求。
      • b.第二部分是传输数据的阶段,用 DATA0 和 DATA1 令牌携带者数据(重复数据)交替传输。
      • c.第三部分是握手信号,如果数据是 IN 方向,握手信号由 Host 发出,如果是 OUT 方向,握 手信号由 Device 发出,握手信号为 ACK 表示正常响应,握手信号为 NAK 表示没有正确传 输。
    • ②控制传输事务:负责向 USB 设置一些控制信息,传输这种事务的管道是控制管道。控制 传输事务也分为三个阶段,即令牌阶段、数据传输阶段、握手阶段。
    • ③中断事务传输:中断事务一般用于通知 Host 某个事件的来临,例如 USB 鼠标,一般数据 量很小。中断事务传输也分为三个阶段,即令牌阶段、数据传输阶段、握手阶段。
    • ④同步传输事务:这种事务能保证传输的同步性,例如 USB 摄像头中传输视频数据。这种 事务能保证每秒有固定的传输量,但与 Bulk 不同的是它允许有一定的误码率,这符合视 频会议等传输需求,因为视频会议首先要保证实时性。同步事务只有两个阶段,即令牌阶 段、数据传输阶段,因为不关系数据的正确性,故没有握手阶段。

3、集成电路互连总线 IIC

  • 特点:同步半双工;高位在前、低位在后,即大端模式。
  • 连接方式:双线连接,同名端总线连接。连接设备数量受总线最大电容的限制。
    在这里插入图片描述
    • ①总线仲裁:
      原理:总线被启动后多个主机在每发送一个数据位时都要对自己的输出电平进行检测,只要检测到电平与自己发送的电平相同,就会继续占用总线。否则放弃对总线的控制权。
      在这里插入图片描述
  • (3)重头戏==操作时序
    在这里插入图片描述
    • 写数据
      • 主机发送启动信号(START)
      • 主机发送7bit从机地址+1bit读写选择位,1表示读、0表示写
      • 从机产生应答信号(ACK1)
      • 主机发送8bit从机寄存器地址
      • 从机产生应答信号(ACK2)
      • 主机发送一个字节数据。
      • 从机产生应答信号(ACK3)
      • 主机发送一个停止信号(STOP)
    • 读数据
      • 主机发送一个启动信号(START1)。
      • 主机发送 7bit 从机地址+1bit 读写选择位,1 表示读、0 表示写。
      • 从机产生一个应答信号(ACK1)。
      • 主机发送 8bit 从机寄存器地址。
      • 从机产生一个应答信号(ACK2)。
      • 主机发送一个启动信号(START2)
      • 主机再次发送 7bit 从机地址+1bit 读写选择位,1 表示读、0 表示写
      • 从机产生一个应答信号(START2)
      • 主机读取一个字节数据。
      • 主机产生一个非应答信号(NACK)。
      • 之后产生一个停止信号(STOP)。
  • (4)传输速率和传输距离
    • ①在标准模式下可达 100Kbit/s,快速模式下可达 400Kbit/s,高速模式下可达 3.4Mbit/s。具体使用什么速率要看器件手册。
    • 传输距离一般为 20cm-30cm。

4、串行外设总线SPI

  • 特点:同步全双工;按高位在前、低位在后传输,即大端模式。

  • 连接方式:四线连接,非同名端连接。
    在这里插入图片描述
    对 SPI 的操作,首先要让从设备的 SSEL 处于被选中状态,然后才能按照 SPI 时序要求进行数 据操作,视通讯协议的不同有差异,操作完毕后释放 SSEL。

  • (3)四种操作时序:SPI的时钟极性CPOL和时钟相位CPHA可以分别为0或1,由此构成了四种组合。

    • CPOL=0,CPHA=0:空闲时 SCLK 为低电平,在第一个边沿开始采样。
      在这里插入图片描述
    • ②CPOL = 0,CPHA = 1:空闲时 SCLK 为低电平,在第二个边沿开始采样。
      在这里插入图片描述
    • ③CPOL = 1,CPHA = 0:空闲时 SCLK 为高电平,在第一个边沿开始采样。
      在这里插入图片描述
    • ④CPOL = 1,CPHA = 1:空闲时 SCLK 为高电平,在第二个边沿开始采样。
      在这里插入图片描述
  • (4)传输速率和传输距离

    • ①最大可达到 50Mbps,受以下几个条件影响:
      • SPI 的最大时钟频率(系统时钟频率的 1/2);
      • CPU 处理 SPI 数据的能力;
      • 输出端驱动能力(PCB 所允许的最大信号传输速率)。
    • ②用的是 TTL 电平, 传输距离一般不超过 10 米。
  • (5)操作过程:

    • 将数据写到 SPI 发送缓冲区后,在 SCL 的作用下,按高位在前、低位在后 传输(大端模式)。
    • 从机只有在主机发送命令时才能接收或向主机传输数据。
      在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栋哥爱做饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值