ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

GPIO子系统

2022-01-03 14:59:45  阅读:193  来源: 互联网

标签:输出 LED 引脚 高电平 低电平 GPIO 子系统


一、GPIO子系统的作用

芯片内部有很多引脚,这些引脚可以接到GPIO模块,也可以接到I2C模块。
通过Pinctrl子系统来选择引脚的功能(mux function)、配置引脚:
在这里插入图片描述

当一个引脚被复用为GPIO功能时,我们可以去设置它的方向、设置/读取它的值。
GPIO名为“General Purpose Input/Output”,通用目的输入/输出,就是常用的引脚。
GPIO可能是芯片自带的,也可能是通过I2C、SPI接口扩展:
在这里插入图片描述

1.1 通用功能

  • 可以设为输出:让它输出高低电平
  • 可以设为输入:读取引脚当前电平
  • 可以用来出发中断

对于芯片自带的GPIO,它的访问速度很快,可以在获得spinlocks的情况下操作它。
但是,对于通用I2C、SPI等接口扩展的GPIO,访问它们时可能导致休眠,所以这些“GPIO Expander”就不能在获得spinlocks的情况下使用。

1.2 通用属性

  • Active-High and Active-Low
    以LED为例,需要设置GPIO电平。但是有些电路可能是高电平点亮LED,有些是低电平点亮LED。
    可以使用如下代码:
gpiod_set_value(gpio, 1);			//输出高电平点亮LED
gpiod_set_value(gpio, 0);  		//输出低电平点亮LED

对应于同一个目标:点亮LED,对于不同的LED,需要不同的代码值,原因在于上面的代码中1、0表示的“物理值”。
如果能使用“逻辑值”,同样的逻辑值在不同的配置下输出对应的物理值,就可以保持代码一致,比如:

gpiod_set_value(gpio, 1);		//输出逻辑1
//在Active-High下输出高电平,在Active-Low下输出低电平
  • Open Drain and Open Source
    有多个GPIO驱动同事驱动一个电路时,就需要设置open drain或open source。
    • open drain:引脚被设置为低电平时才会驱动电路,典型场景I2C接口
    • open source:引脚被设置为高电平时才会驱动电路

1.3 GPIO子系统的作用

管理GPIO,技能支持芯片本身的GPIO,也能支持扩展的GPIO
提供统一的、便捷的访问接口,实现:输入、输出、中断

标签:输出,LED,引脚,高电平,低电平,GPIO,子系统
来源: https://blog.csdn.net/ch122633/article/details/122287213

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有