荔枝派linux安装python,GPIO · 荔枝派Zero指南 · 看云

荔枝派linux安装python,GPIO · 荔枝派Zero指南 · 看云GPIO 操作本文讲述 linux 下 用户空间的 GPIO 操作的常规方法和 python 脚本操作的方法文件 IO 方式操作 GPIO 编号及复用功能在 Linux 中 GPIO 使用 0 MAX INT 之间的整数标识 对于 32 位 CPU 每组 GPIO32 个 引脚号就是按顺序排列 LicheePiZero 的所有 IO 的复用功能及 GPIO 标识号为 gt 总共 52 个 IO 所有 IO 上电默认状态为高阻态

# GPIO操作

本文讲述linux下,用户空间的GPIO操作的常规方法和python脚本操作的方法

文件IO方式操作

GPIO编号及复用功能

在Linux中,GPIO 使用0~MAX_INT之间的整数标识。

对于32位CPU,每组GPIO 32个,引脚号就是按顺序排列。

LicheePi Zero的所有IO的复用功能及GPIO标识号为:

> 总共52个IO,所有IO上电默认状态为高阻态, 驱动电流强度20mA

> PB和PG具有中断功能

|Pin Name|Pin Number|Func2|Func3|Func4|Func5|Func6|

|—|—|—-|—|—|—|—|

|PB0|32|UART2_TX|-|-|-|PB_EINT0|

|PB1|33|UART2_RX|-|-|-|PB_EINT1|

|PB2|34|UART2_RTS|-|-|-|PB_EINT2|

|PB3|35|UART2_CTS|-|-|-|PB_EINT3|

|PB4|36|PWM0|-|-|-|PB_EINT4|

|PB5|37|PWM1|-|-|-|PB_EINT5|

|PB6|38|TWI0_SCK|-|-|-|PB_EINT6|

|PB7|39|TWI0_SDA|-|-|-|PB_EINT7|

|PB8|40|TWI1_SCK|UART0_TX|-|-|PB_EINT8|

|PB9|41|TWI1_SDA|UART0_RX|-|-|PB_EINT9|

|PC0|64|SDC2_CLK|SPI0_MISO|-|-|-|

|PC1|65|SDC2_CMD|SPI0_CLK|-|-|-|

|PC2|66|SDC2_RST|SPI0_CS|-|-|-|

|PC3|67|SDC2_D0|SPI0_MOSI|-|

|PE0|128|CSI_PCLK|LCD_CLK|-|-|-|

|PE1|129|CSI_MCLK|LCD_DE|-|-|-|

|PE2|130|CSI_HSYNC|LCD_HSYNC|-|-|-|

|PE3|131|CSI_VSYNC|LCD_VSYNC|-|-|-|

|PE4|132|CSI_D0|LCD_D2|-|-|-|

|PE5|133|CSI_D1|LCD_D3|-|-|-|

|PE6|134|CSI_D2|LCD_D4|-|-|-|

|PE7|135|CSI_D3|LCD_D5|-|-|-|

|PE8|136|CSI_D4|LCD_D6|-|-|-|

|PE9|137|CSI_D5|LCD_D7|-|-|-|

|PE10|138|CSI_D6|LCD_D10|-|-|-|

|PE11|139|CSI_D7|LCD_D11|-|-|-|

|PE12|140|CSI_D8|LCD_D12|-|-|-|

|PE13|141|CSI_D9|LCD_D13|-|-|-|

|PE14|142|CSI_D10|LCD_D14|-|-|-|

|PE15|143|CSI_D11|LCD_D15|-|-|-|

|PE16|144|CSI_D12|LCD_D18|-|-|-|

|PE17|145|CSI_D13|LCD_D19|-|-|-|

|PE18|146|CSI_D14|LCD_D20|-|-|-|

|PE19|147|CSI_D15|LCD_D21|-|-|-|

|PE20|148|CSI_FIELD|CSI_MIPI_MCLK|-|-|-|

|PE21|149|CSI_SCK|TWI1_SCK|UART1_TX|-|-|

|PE22|150|CSI_SDA|TWI1_SDA|UART1_RX|-|-|

|PE23|151|-|LCD_D22|UART1_RTS|-|-|

|PE24|152|-|LCD_D23|UART1_CTS|-|-|

|PF0|160|SDC0_D1|JTAG_MS|-|-|-|

|PF1|161|SDC0_D0|JTAG_DI|-|-|-|

|PF2|162|SDC0_CLK|UART0_TX|-|-|-|

|PF3|163|SDC0_CMD|JTAG_DO|-|-|-|

|PF4|164|SDC0_D3|UART0_RX|-|-|-|

|PF5|165|SDC0_D2|JTAG_CK|-|-|-|

|PF6|166|-|-|-|-|-|

|PG0|192|SDC1_CLK|-|-|-|PG_EINT0|

|PG1|193|SDC1_CMD|-|-|-|PG_EINT1|

|PG2|194|SDC1_D0|-|-|-|PG_EINT2|

|PG3|195|SDC1_D1|-|-|-|PG_EINT3|

|PG4|196|SDC1_D2|-|-|-|PG_EINT4|

|PG5|197|SDC1_D3|-|-|-|PG_EINT5|

sysfs操作GPIO

/sys/class/gpio目录下的三种文件:

> export/unexport文件

> gpioN指代具体的gpio引脚

> gpio_chipN指代gpio控制器

* * * * *

export/unexport:

/sys/class/gpio/export,只写,写入GPIO编号来向内核申请GPIO控制权(前提是没有内核代码申请这个gpio端口), 成功后会在目录下生成gpioN目录。

/sys/class/gpio/unexport和导出的效果相反。

gpioN:

指代某个具体的gpio端口, 内有以下属性文件:

|Attribution|Read/Write|Value|Function|

|—|—|—-|–|

|direction|RW|in,out;low,high|设置输入输出|

|value|RW|0,非零|读取或者写入IO电平|

|edge|RW|”none”, “rising”, “falling”,”both”|配置中断触发方式|

|active_low|RW|0,非零|设置低电平有效|

gpiochipN

gpiochipN表示的就是一个gpio_chip,用来管理和控制一组gpio端口的控制器,该目录下存在以下属性文件:

|Attribution|Function|

|—|—|

|base | 和N相同,表示控制器管理的最小的端口编号。 |

|lable | 诊断使用的标志,寄存器地址,1c20800.pinctrl|

|ngpio | 表示控制器管理的gpio端口数量,A~G,224|

* * * * *

使用sysfs操作GPIO的例子:

~~~

#echo 192 > /sys/class/gpio/export #导出 PG0, GREEN

#ls /sys/class/gpio/

export gpio192 gpiochip0 unexport

#ls /sys/class/gpio/gpio192/

active_low direction subsystem/ value device/ power/ uevent

#echo “out” > /sys/class/gpio/gpio192/direction #设置为输出

#echo 0 > /sys/class/gpio/gpio192/value#亮灯

#echo 1 > /sys/class/gpio/gpio192/value #灭灯

#echo “in” > /sys/class/gpio/gpio192/direction #设置为输入

#cat /sys/class/gpio/gpio192/value #读取电平

0

~~~

用户可以参考以上操作进行GPIO控制。

注意对重要引脚的导出操作可能会使系统崩溃。

LicheePi Zero提供了简单的shell脚本进行GPIO读写(代码在https://github.com/Lichee-Pi/lichee-pi-zero/tree/master/SoftWare,下同):

~~~

gpio.sh init 192 out

gpio.sh set 192 out

gpio.sh get 192

gpio.sh w 192 1

gpio.sh r 192

gpio.sh deinit 192

~~~

C语言操作

待搬运

http://www.cnblogs.com/zym0805/p/5814351.html

python操作

Zero将GPIO的基本操作封装成了Python库,因此你可以使用python脚本方便地操作GPIO。

首先下载python-lpi.gpio库并安装

`sudo python setup.py install `

点亮绿灯的简单示例:

~~~

import LPi.GPIO as GPIO

GPIO.init()

GPIO.setcfg(GPIO.PG0, GPIO.OUT)

GPIO.output(GPIO.PG0, GPIO.LOW)

~~~

详细操作见python库的README。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220117.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午9:12
下一篇 2026年3月17日 下午9:12


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号