GPIO(General Purpose Input Output通用输入/输出)

GPIO简介

GPIO是通用输入输出的简称,说白了就是芯片的引脚,这些引脚用来与外部设备连接,从而实现与外部设备通信或者控制外部设备的功能。
最基本的例子:用GPIO连接外部设备(LED灯),控制芯片让GPIO引脚输出高低电平,从而控制LED灯的亮灭。

GPIO 框图剖析

在这里插入图片描述
通过 GPIO 硬件结构框图,就可以从整体上深入了解 GPIO 外设及它的各种应用模式。该图从最右端看起,最右端就是代表 STM32 芯片引出的 GPIO 引脚,其余部件都位于芯片内部。

引脚的两保护个二级管可以防止引脚外部过高或过低的电压输入,当引脚电压高于 VDD_FT 时,上方的二极管导通,当引脚电压低于 VSS 时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。但是并不意味着就可以输入高电压,具体电压要看手册,一般都是3.3V,能容忍5V

这个结构使 GPIO 具有了“推挽输出”和“开漏输出”两种输出模式。
推挽输出:1高电平3.3V,0低电平0V
开漏输出:1高阻态,0低电平0V

GPIO 工作模式

  1. 输入模式 (上拉/下拉/浮空)
  2. 输出模式 (推挽/开漏,上拉/下拉)
  3. 复用功能 (推挽/开漏,上拉/下拉)
    复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其它外设,输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号。
  4. 模拟输入输出
### GPIO通过LVS检查的意义及作用 Layout versus Schematic (LVS) 是一种电子设计自动化工具中的验证方法,用于比较电路布局和对应的原理图之间的差异。对于GPIOGeneral Purpose Input Output),其通过LVS检查具有重要意义。 #### LVS的作用 LVS的主要目的是确保物理版图设计意图一致。具体到GPIO模块,LVS可以检测以下方面: - **连接一致性**:确认GPIO引脚与其内部逻辑单元的连接是否正确[^1]。 - **电气特性匹配**:验证GPIO驱动能力、输入阻抗等参数是否满足设计需求[^2]。 - **信号完整性**:确保GPIO信号路径上的寄生效应不会影响性能[^3]。 #### 对于Zynq Linux环境下的意义 在基于Zynq SoC或者类似的嵌入式Linux平台开发过程中,如果未经过严格的LVS流程,则可能导致实际硬件行为偏离预期软件配置的结果。例如,在利用sysfs接口操作GPIO时可能出现异常状态切换等问题[^1]。 #### 编程实践中的注意事项 当编写针对特定硬件架构如景芯SoC(RISC-V核心)[^2] 的GPIO应用时, 开发者需注意: ```c #include <stdio.h> #include <fcntl.h> #include <unistd.h> #define GPIO_PATH "/sys/class/gpio" int main(){ int fd; char buffer[8]; snprintf(buffer,sizeof(buffer),"%d",YOUR_GPIO_NUMBER); // Export the gpio pin. fd=open((char*)GPIO_PATH"/export",O_WRONLY); write(fd,buffer,strlen(buffer)); close(fd); sleep(1); // Set direction as output or input accordingly. sprintf(buffer,"%s%d/direction",(const char *)GPIO_PATH,YOUR_GPIO_NUMBER); fd=open(buffer,O_WRONLY); const char *dir="out"; // Or set to "in" write(fd,(void*)dir,strlen(dir)+1); close(fd); return 0; } ``` 此代码片段展示了如何导出指定编号的GPIO并设置它的方向为输出模式。然而,在真实项目实施前务必完成全面的设计审查以及包括但不限于LVS在内的各项验证工作来保障最终产品的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值