首页 > 其他分享 >Maix II Dock gpio子系统点亮LED学习

Maix II Dock gpio子系统点亮LED学习

时间:2023-12-20 19:13:14浏览次数:36  
标签:sys LED pin gpio238 Maix II gpio class

一、Linux的gpio子系统

  1、Linux内核提供pinctrl子系统,目的为了统一各soc厂商的pin引脚管理;

  2、pinctrl子系统提供的功能
    ①、管理系统中所有可控制的pin引脚:在系统初始化时候,枚举所有可控制的pin,并标识这些pin;
    ②、管理这些pin的复用功能:配置若干引脚组成一个pin group,形成特定的功能。复用涉及两个概念
      [1]、function: 如SPI0,UART1等功能模块
      [2]、pin group: 对应的SPI0可能配置pin group{C5, C6, C7, C8},也可以配置pin group{C22, C23, C24, C25},但是只能选择一组pin group来对应一个function.
    ③、配置这些pin的电气特性,如上拉、下拉、驱动能力、频率等

  3、调用 pin control subsystem 的接口主要三步骤:
    ①、驱动加载或运行时,获取pin control state holder的句柄
    ②、设置pin control的状态
    ③、驱动卸载或退出时,释放pin control state holder的句柄

 

二、sysfs操作GPIO

  1、State_LED灯的引脚编码(PH14)==》PINCTRL_PIN(224 + (14), "P" "H" "14") ==》gpio238

    参考:Thoughts (teambition.com)

  

  2、查询/sys/class/gpio 目录下的文件

      

   ①、export: 仅允许写入操作,写入GPIO编号向内核申请GPIO的控制权限(前提是没有内核代码申请使用这个 GPIO 端口),成功后会在目录下生成一个gpioN 的目录(echo 238 > /sys/class/gpio/export) 

        

  ②、unexport:仅允许写入操作,写入GPIO编号向内核申请释放GPIO的控制权限。操作后该目录下会删除gpioN的目录

        

  ③、gpioN 指代具体的 gpio 引脚: 指代某个具体的 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 指代 gpio 控制器: gpiochipN 表示的就是一个 gpio_chip, 用来管理和控制一组 gpio 端口的控制器,该目录下存在以下属性文件:

Attribution

Function

base

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

lable

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

ngpio

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

  

    root@sipeed:/# echo 238 > /sys/class/gpio/export  #向内核申请gpio238

    root@sipeed:/# echo "out" > /sys/class/gpio/gpio238/direction  #设置gpio238为输出控制led
    root@sipeed:/# echo 0 > /sys/class/gpio/gpio238/value  #设置gpio238的IO电平为0 点亮led
    root@sipeed:/# echo 1 > /sys/class/gpio/gpio238/value  #设置gpio238的IO电平为1 熄灭led

    root@sipeed:/# echo "in" > /sys/class/gpio/gpio238/direction  #设置gpio238为输入
    root@sipeed:/# cat /sys/class/gpio/gpio238/value #读取gpio238的电平值 (上面设置了1,读出来也正是1)

    root@sipeed:/# echo 238 > /sys/class/gpio/unexport  #不使用是释放gpio238

 

 

三、使用python 脚本控制led

  查看设备提供gpiochip,其他V831只能使用gpiochip1

        

  

  修改/root/app/main.py文件,如下循环点灯

  #from maixhub.ui import main

  #if __name__ == "__main__":
    # main()


  import time
  from maix import gpio

  gpio.load(gpio.m2dock)
  LED = gpio.gpio(14, "H", 1)
  while True:
    LED.set_value(0)
    print(LED.get_value())
    time.sleep(1)
    LED.set_value(1)
    print(LED.get_value())
    time.sleep(1)

   上电运行,state led闪烁。

标签:sys,LED,pin,gpio238,Maix,II,gpio,class
From: https://www.cnblogs.com/zblblog/p/17916402.html

相关文章

  • 世微 AP5219 平均电流型LED 降压恒流驱动器 兼容LN2516/LN2517
    产品描述AP5219是一款PWM工作模式,内置功率管,适用于5V~100V输入的高精度降压LED恒流驱动芯片。输出功率可达25W,电流2.5A。AP5219可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮模式。AP5219工作频率固定在130KHZ,同时内置抖频电路,可以降低对其他设备的EMI干扰。另......
  • [LeetCode] LeetCode81. 搜索旋转排序数组II
    题目描述思路:是lc33.搜索旋转排序数组的延伸,允许包含重复元素起初:当nums[left]<=nums[mid]时,区间[left,mid]有序当nums[left]>nums[mid]时,区间[mid,right]有序但是这个题目当nums[left]==nums[mid]时,无法判断哪个区间是有序的,无法判断target位于左侧还是右侧,此时无......
  • QLabel显示图片,QPixmap.scaled Qt::KeepAspectRatio不起作用
    一、问题描述以及解决办法Qt中QLabel可以显示图片。如下:QLabel*label=newQLabel(this);label->setPixmap(QPixmap)其中QPixmap可以缩放图片Pixmappixmap;pixmap.scaled(QSize(width,height),Qt::KeepAspectRatio);//按比例缩放以适应目标矩形,超出部分会被裁......
  • TripleDES在java与c#中的区别
        C#下TripleDES默认支持16位和24位的秘钥,而Java下的DESedeKeySpec就只支持24位,其实怎么说呢,按3DES规范要求,的确其秘钥应该是24位而不是16位的,但16位秘钥可以按前8位+后8位+前8位的规则来升级成24位的秘钥,所以我们只需要简单的通过数组的Copy就可以将16位秘钥升级为24......
  • subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero
    一、原因pytorch版本大于1.5二、解决1、降低pytorch版本将pytorch版本降到1.5以下2、禁用ninjiapytorch默认使用ninjia作为backend,将其禁用。替换为以下代码setup(...,cmdclass={#'build_ext':BuildExtension,'build_ext':BuildExtensi......
  • 代码随想录算法训练营第七天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和
    一、454.四数相加II题目链接:LeetCode454.四数相加II学习前:思路:首先定义两个HashMap对象record12和record34,对应的key存放两个数组元素的和,value存放计算的和出现的次数接着遍历record12,若record存在与之和为0的元素,则计算两个value相乘的结果,并进行累积,作为输出的结果......
  • 高德地图api报错 Get geolocation timeout.Get ipLocation failed.
    使用了https报错Getgeolocationtimeout.GetipLocationfailed. 报错是定位超时,由于JSAPI使用的是浏览器提供的定位服务,所以定位的准确度和成功率都会对浏览器有很大的依赖。由于Chrome在国内没有提供服务,因此使用Chrome定位服务的浏览器,比如:Chrome、火狐、安卓原生WebVie......
  • 世微 APS54085 22W高辉度调光降压恒流芯片 LED驱动IC
    产品描述       APS54085是一款PWM工作模式,简单、内置功率MOS管,适用于5-100V输入的高精度降压LED恒流驱动芯片。电流2.0A。APS54085可实现线性调光和PWM调光,线性调光有效电压范围0.52-2.55V.PWM调光频率范围100HZ-30KHZ。APS54085工作频率可以通过......
  • 《安富莱嵌入式周报》第328期:自主微型机器人,火星探测器发射前失误故障分析,微软推出12
     更新一期视频教程:【实战技能】单步运行源码分析,一期视频整明白FreeRTOS内核源码框架和运行机制,RTOSTrace链表功能展示视频版:https://www.bilibili.com/video/BV1Rw411b7M1/ 1、自主无电池无线微型机器人https://millimobile.cs.washington.edu/millimobile-compressed.pdf(2.......
  • 转换考勤系统中的数据(II)(Power Query)
    let源=Excel.CurrentWorkbook(){[Name="表1"]}[Content],添加姓名列=Table.AddColumn(源,"姓名",eachif[列10]="姓名:"then[列5]&[列11]elsenull),姓名列填充=Table.FillDown(添加姓名列,{"姓名"}),筛选掉不需要的行=Table.......