赞
踩
芯片内部有很多引脚,这些引脚可以接到GPIO模块,也可以接到I2C模块。
通过Pinctrl子系统来选择引脚的功能(mux function)、配置引脚:
当一个引脚被复用为GPIO功能时,我们可以去设置它的方向、设置/读取它的值。
GPIO名为“General Purpose Input/Output”,通用目的输入/输出,就是常用的引脚。
GPIO可能是芯片自带的,也可能是通过I2C、SPI接口扩展:
对于芯片自带的GPIO,它的访问速度很快,可以在获得spinlocks的情况下操作它。
但是,对于通用I2C、SPI等接口扩展的GPIO,访问它们时可能导致休眠,所以这些“GPIO Expander”就不能在获得spinlocks的情况下使用。
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下输出低电平
管理GPIO,技能支持芯片本身的GPIO,也能支持扩展的GPIO
提供统一的、便捷的访问接口,实现:输入、输出、中断
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。