tag 标签: GPIO

相关帖子
相关博文
  • 热度 5
    2023-5-9 15:58
    1560 次阅读|
    0 个评论
    GPIO 板上有两个5V引脚和两个3.3V引脚,以及一些不可配置的接地引脚(0V)。其余引脚都是通用3.3V引脚,意味着输出设置为3.3V,输入为3.3V容差。 OUTPUTS 指定为输出引脚的GPIO引脚可以设置为高电平(3.3V)或低电平(0V)。 INPUTS 指定为输入引脚的GPIO引脚可以读取为高电平(3.3V)或低电平(0V)。使用内部上拉或下拉电阻更容易做到这一点。引脚GPIO2和GPIO3具有固定的上拉电阻,但对于其他引脚,这可以在软件中配置。 MORE 除了简单的输入和输出设备,GPIO引脚还可以用于各种替代功能,有些可用于所有引脚,有些可用于特定引脚。 PWM (脉冲宽度调制) Software PWM available on all pins Hardware PWM available on GPIO12, GPIO13, GPIO18, GPIO19 SPI SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7) SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16) I2C Data: (GPIO2); Clock (GPIO3) EEPROM Data: (GPIO0); EEPROM Clock (GPIO1) Serial TX (GPIO14); RX (GPIO15) 有关GPIO引脚高级功能的更多信息,请参见 interactive pinout diagram raspi-gpio raspi-gpio是一个在树莓派上使用的GPIO控制工具,可以获取GPIO状态以及设置GPIO 安装 sudo apt -y install raspi-gpio 使用说明 Use: raspi-gpio get OR raspi-gpio set OR raspi-gpio funcs OR raspi-gpio raw GPIO is a comma-separated list of pin numbers or ranges (without spaces), e.g. 4 or 18-21 or 7,9-11 Note that omitting from raspi-gpio get prints all GPIOs. raspi-gpio funcs will dump all the possible GPIO alt funcions in CSV format or if is specified the alternate funcs just for that specific GPIO. Valid for raspi-gpio set are: ip set GPIO as input op set GPIO as output a0-a5 set GPIO to alternate function alt0-alt5 pu set GPIO in-pad pull up pd set GPIO pin-pad pull down pn set GPIO pull none (no pull) dh set GPIO to drive to high (1) level (only valid if set to be an output) dl set GPIO to drive low (0) level (only valid if set to be an output) Examples: raspi-gpio get Prints state of all GPIOs one per line raspi-gpio get 20 Prints state of GPIO20 raspi-gpio get 20,21 Prints state of GPIO20 and GPIO21 raspi-gpio set 20 a5 Set GPIO20 to ALT5 function (GPCLK0) raspi-gpio set 20 pu Enable GPIO20 ~50k in-pad pull up raspi-gpio set 20 pd Enable GPIO20 ~50k in-pad pull down raspi-gpio set 20 op Set GPIO20 to be an output raspi-gpio set 20 dl Set GPIO20 to output low/zero (must already be set as an output) raspi-gpio set 20 ip pd Set GPIO20 to input with pull down raspi-gpio set 35 a0 pu Set GPIO35 to ALT0 function (SPI_CE1_N) with pull up raspi-gpio set 20 op pn dh Set GPIO20 to ouput with no pull and driving high GPIO功能及复用功能表 转载来自:https://rpideveloper.com/topic/34/gpio
  • 2023-1-13 17:16
    0 个评论
    超能面板PRO搭载北京君正研发的X2000多核异构跨界处理器   每一座建筑,都承载着它独特的生活方式。隐匿在老胡同里的四合院,见证了大院三代同堂的喧闹欢愉,散落在烟雨中的园林小院散发着对诗意生活的淡然向往。在一代又一代的变迁中,逐渐形成了符合居住者气质的生活方式。历史与现代在不断交融,蔓延成全新的未来理想生活方式。 关于北京君正--- (深圳雷龙发展提供原厂技术支持,并提供君正集成电路完整解决方案。)   在国内许多智慧地产社区,就有不少住宅全面实现了科技赋能,以全屋智能化的空间带给用户健康便捷的生活方式。   而实现了全屋智能化控制的正是智能面板,超能面板PRO是LifeSmart云起发布的Nature视界系列产品的10.25寸视界智能控制面板和4英寸超能面板。   超能面板PRO搭载北京君正研发的X2000多核异构跨界处理器。X2000多核异构跨界处理器主要面向于智能音频、图像识别、智能家电、智能家居、智能办公等五大领域。   CPU采取三核结构,搭载双XBurst®2,主频1.2GHz,跨界第三核XBurst®0(240MHz),面向安全管理和实时控制领域。搭载的H.264 编码器分辨率达1080P@30fps。同时,X2000还内置LPDDR3(128MB),具备可实时同步的双摄Mipi接口+双ISP以及丰富的外设接口功能。   超能面板是云起今年最新发布的4寸屏智能开关面板。依托于云起自研的电信级CoSS通信协议,它具备了极其强大而稳定的控制功能,将传统智能家居的智能开关、智能网关、背景音乐、智能窗帘、暖通控制等控制集于一体,兼具智能安防、娱乐影音、一键回家等智能场景操作,方寸之中尽备智慧体验。   超能面板在众多智能面板中受到国内外用户的认可,不仅是因为其强大的控制功能,更是其从用户体验出发的一系列产品设计。   面对智能化逐渐渗透进人们的生活,不理解互联网语言的老人面对新设备繁复的图形标识常常显得难以适从。全面屏面板的出现可以轻松化解这些问题,尤其是超能面板卡通风格的主题,是特意为老人和孩子设计,首页简洁清晰的大文字界面,可以给到最直接的交互提示,即便是第一次接触到智能控制面板,也能轻松完成操作。   LifeSmart云起凭借“云管边端一体化”的全场景智慧地产解决方案,已服务中国超过100个智慧地产社区。自Nature视界系列产品发布以来,该系列产品更是落地了国内外大大小小的地产项目,塑造了众多智能家居业界新标杆,为更多家庭用户带去了极具未来科技感的智慧生活体验。   文章来源:智能头条   关于北京君正--- (深圳雷龙发展提供原厂技术支持,并提供君正集成电路完整解决方案。)   北京君正集成电路股份有限公司成立于2005年,基于创始团队创新的CPU设计技术,迅速在消费电子市场实现SoC芯片产业化,2011年5月公司在深圳创业板上市(300223)。   君正持续投入于多媒体编解码、影像信号处理、AI引擎、AI算法等核心领域并形成自有技术能力,其芯片在智能视频监控、AIoT、工业和消费、生物识别及教育电子领域获得了稳健和广阔的市场。   2020年,君正完成对北京矽成(ISSI)及其下属子品牌Lumissil的收购,并拥有其100%股份。ISSI于1988年成立于硅谷,主要为汽车、工业和医疗、通讯和企业设备、及消费等市场的电子产品提供、开发和设计具有高技术、高性能、高品质、高性价比的集成电路芯片,并已同全球用户建立了长期的供货关系。   其中,ISSI存储部门有高速低功耗SRAM,低中密度DRAM,NOR/NAND Flash,嵌入式Flash pFusion®,及eMMC等芯片产品。模拟和互联部门Lumissil有LED驱动、触控传感、音频驱动、微处理器、电源管理和互联等芯片产品。 关于北京君正--- (深圳雷龙发展提供原厂技术支持,并提供君正集成电路完整解决方案。)
  • 热度 6
    2022-10-25 08:59
    796 次阅读|
    0 个评论
    飞凌嵌入式FET6254-C核心板基于TI Sitara™ AM62x系列工业级处理器设计开发,由于 AM6254采用了Cortex-A53+Cortex-M4F的处理核+控制核架构组合 ,因此引脚自然也是分为A核的引脚和M核的引脚。 如果A核的引脚不够用怎么办?可以把M核的引脚用作A核吗?答案是肯定的。 今天小编将为大家分别介绍这颗核心板的GPIO引脚信号描述、A核使用A核的引脚、用户空间如何控制GPIO以及A核如何调用M核的引脚并复用成GPIO。 关于AM6254的GPIO信号描述 我们通过GPIO可以了解有关AM6254这颗CPU的引脚框架,CPU手册目录: 用户资料/原厂资料/SPRSP58_AM62x_DS_AI_2_16_2022 在 6.3.10GPIO 章节有如下描述: AM6254的GPIO信号一共有两大组:分别是 MAINDomain 和 MCUDomain, 其中MAINDomain是A核的GPIO,有两组GPIO0和GPIO1,分别是92和52个引脚。 MCUDomain是M核的GPIO,有一组GPIO0,24个引脚。 6.2Pin Attributes 章节描述了引脚的控制寄存器PADCONFIG名称以及地址,以及每个引脚的属性。例如B13引脚,引脚名称是SPI0_D0,寄存器名称为PADCONFIG112,寄存器地址为0x000F41C0,可以复用的功能如下: Linux系统可以使用devmem2查看寄存器值。 root@ok6254:~# devmem2 0x000F41C0/dev/mem opened.Memory mapped at address 0xffff969c0000.Read at address0x000F41C0(0xffff969c41c0): 0x00010007root@ok6254:~# 5.1.2.3Pad Configuration Register Functional Description章节。 A核使用A核的引脚 了解了引脚信号的描述,先不要着急,接下来先熟悉一下A核的引脚复用方法,以将SPI_D0用作GPIO为例,设备树配置修改如下: arch/arm64/boot/dts/ti/OK6254-C.dts 修改完成后编译设备树,会在Image目录下生成镜像,然后替换dtb镜像,替换目录:/boot/OK6254-C.dtb。执行sync保存后重启。 用户空间如何控制GPIO 为了查看是否修改成功,可以使用如下命令查看GPIO使用情况 root@ok6254:~#cat /sys/kernel/debug/gpiogpiochip2: GPIOs 314-401, parent:platform/601000.gpio, 601000.gpio:gpio-330 ( |led1 ) out logpio-331 ( |led2 ) out logpio-332 ( |led3 ) out logpio-333 ( |led4 ) out logpio-336 ( |fixed-regulator-rgb ) out lo gpiochip1: GPIOs 402-488, parent:platform/600000.gpio, 600000.gpio:gpio-433 ( |net-5g-rst ) out lo ACTIVE LOWgpio-437 ( |phy_rstn ) out logpio-438 ( |id ) inlogpio-440 ( |RT9186 ) out logpio-441 ( |fixed-regulator-lvds) out logpio-442 ( |phy_rstn ) out logpio-444 ( |heartbeat ) out logpio-473 ( |regulator-6 ) out lo gpiochip0: GPIOs 489-511, parent:platform/4201000.gpio, 4201000.gpio:root@ok6254:~# 方式1: 使用内核的gpio-leds驱动 root@ok6254:~# cd /sys/class/leds/root@ok6254:/sys/class/leds#lsheartbeatled1led2 led3mmc0::mmc1::mmc2::root@ok6254:/sys/class/leds# 进入其中一个led1 root@ok6254:/sys/class/leds#cd led1/root@ok6254:/sys/class/leds/led1#lsbrightnessdevice max_brightnesspowersubsystemtriggerueventroot@ok6254:/sys/class/leds/led1# 设备树默认配置触发方式trigger为timer,此时的led是按照定时亮灭的,可以改成手动控制。 brightness点亮root@ok6254:/sys/class/leds/led1# 方式2: 使用/sys/class/gpio, 注意,该方式不需要再设备配置 leds 节点 ,只需要配置引脚即可。如下是将gpmc_ad15引脚配置成GPIO。 关于gpiochip的计算公式如下: Gpmc_ad15的引脚是gpio0_30,chip值为402+30=432,导出gpio: /sys/class/gpio/export 设置方向: /sys/class/gpio/gpio432/direction 设置高低电平: /sys/class/gpio/gpio432/value 拉低root@ok6254:~# A核如何调用M核的引脚 并复用成GPIO? 设备树配置: &mcu_pmx0 {mymcugpio1_pins_default:mymcugpio1-pins-default { pinctrl-single,pins= ; };}; &mcu_gpio0 { pinctrl-names ="default"; pinctrl-0= ; status = "okay";}; 使用gpio-leds驱动的配置,在leds节点中添加如下(若您正在使用手机阅读,建议您关掉“深色模式”): ---a/arch/arm64/boot/dts/ti/OK6254-C.dts+++b/arch/arm64/boot/dts/ti/OK6254-C.dts@@ -166,7 +166,7 @@ compatible= "gpio-leds"; pinctrl-names= "default"; pinctrl-0= ;-+ pinctrl-1 = ; led-0 { label= "heartbeat"; gpios= ;@@ -206,6 +206,14 @@ led-pattern= ; default-state= "on"; };+ + led-5 {+ label = "led5";+ gpios = ;+ linux,default-trigger = "timer";+ led-pattern = ;+ default-state = "on";+ }; }; 控制方式与前面提到的方式1和方式2一样 ,至此GPIO的复位完成。 当然其他接口I2C、CAN、SPI、UART也是类似,想要了解更详细的使用方式,大家可以关注后续的应用笔记。点击下图进入飞凌嵌入式官网,了解更多产品详情。
  • 热度 3
    2022-10-14 17:19
    1230 次阅读|
    1 个评论
    本文将为大家介绍如何在飞凌 OKT507-C开发板上添加两个GPIO按键 ,希望能够对各位工程师有所帮助,本文章以PE5、PE6两个引脚为例。话不多说,下面我们进入主题。 1 GPIO按键添加方法 1. 添加内核配置 Linux内核源代码中集成了很多功能,一般的用户只会用到其中的部分功能。用户从中挑选自己需要的功能,这就叫内核配置。下面我们开始进行配置。 注意: (1)在进行配置前,需要对 OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/configs/sun50iw9p1smp_longan_dcfconfig文件提前做好备份; (2)以下所有图中的红框为修改后的内容。 vi OKT507-linux-sdk/kernel/linux-4.9/.config 2. 添加key节点 添加结点需要我们到设备树中进行添加,设备树是一个描述硬件的数据结构,甚至你可以将其看成一个大结构体(这个结构体就是平台,成员就是具体的设备),将硬件的配置从linux内核的源码中提取出来。 下面打开我们的T507设备树文件,如下: vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi 其中按键键值设置如下。 相关键值可通过查看input-event-codes.h文件确定。 vi OKT507-linux-sdk/kernel/linux-4.9/include/uapi/linux/input-event-codes.h 3. 添加引脚定义 添加引脚定义需要用到pinctrl,下面给大家简单介绍下pinctrl。pinctrl就是系统中pin引脚的控制。 假如在使用到GPIO、I2C等功能时,若按引脚逐一地去找对应的寄存器进行配置非常浪费时间和精力,所以内核引入了pinctrl子系统,把引脚的复用和配置抽象出来,只需要芯片厂商把自家芯片的支持进去,就可以很方便的配置引脚。 下面打开我们的pinctrl文件,如下: vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi 4. 关闭冲突功能 因为有些功能结点使用的引脚与我们这次复用的引脚发生冲突,会发生引脚不生效的错误,所以我们一定要检查好,然后将其关闭。 如下打开设备树文件: vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi 注意: 因摄像头csi复用的引脚与我们这里的冲突,虽然前面将状态disabled了,pinctrl这里也有可能会造成冲突,为了避免不必要的麻烦,我们也将这里注释掉。 5. 驱动修改 gpio-keys是基于input子系统实现的一个通用按键驱动,该驱动基于platform_driver架构,实现了驱动和设备分离,符合Linux设备驱动模型的思想,也符合linux驱动实现模型,即driver和device分离模型。 一般按键驱动,都是基于gpio-keys进行开发的。驱动文件如下: vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c 2 测试方法 终端窗口输入evtest,选择 7。 从上图红框可以看出,通过evtest测试工具将内核设备读取并打印设备描述的事件,到这里,GPIO按键就做完了,可以用它来实现很多的功能,比如说按一下切换灯的状态,蜂鸣器响等。 当然不只是这些啦,我们还可以利用它去实现很多其他功能,欢迎各位聪明的工程师小伙伴自行发挥! 以上就是小编为大家带来的在飞凌OKT507-C开发板上添加GPIO按键的全过程,想要了解有关OKT507-C开发板更多的功能和详情,可以 点击下图进入飞凌嵌入式官网 查看。
  • 热度 2
    2022-10-14 13:40
    1079 次阅读|
    0 个评论
    本文将为大家介绍如何在飞凌 OKT507-C开发板上添加两个GPIO按键 ,希望能够对各位工程师有所帮助,本文章以PE5、PE6两个引脚为例。话不多说,下面我们进入主题。 一、GPIO按键添加方法 1. 添加内核配置 Linux内核源代码中集成了很多功能,一般的用户只会用到其中的部分功能。用户从中挑选自己需要的功能,这就叫内核配置。下面我们开始进行配置。 注意: (1)在进行配置前,需要对 OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/configs/sun50iw9p1smp_longan_dcfconfig文件提前做好备份; (2)以下所有图中的红框为修改后的内容。 vi OKT507-linux-sdk/kernel/linux-4.9/.config ​ 编辑 添加图片注释,不超过 140 字(可选) 2. 添加key节点 添加结点需要我们到设备树中进行添加,设备树是一个描述硬件的数据结构,甚至你可以将其看成一个大结构体(这个结构体就是平台,成员就是具体的设备),将硬件的配置从linux内核的源码中提取出来。 下面打开我们的T507设备树文件,如下: vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi ​ 编辑 添加图片注释,不超过 140 字(可选) 其中按键键值设置如下。 ​ 编辑 添加图片注释,不超过 140 字(可选) 相关键值可通过查看input-event-codes.h文件确定。 vi OKT507-linux-sdk/kernel/linux-4.9/include/uapi/linux/input-event-codes.h ​ 编辑 添加图片注释,不超过 140 字(可选) ​ 编辑 添加图片注释,不超过 140 字(可选) 3. 添加引脚定义 添加引脚定义需要用到pinctrl,下面给大家简单介绍下pinctrl。pinctrl就是系统中pin引脚的控制。 假如在使用到GPIO、I2C等功能时,若按引脚逐一地去找对应的寄存器进行配置非常浪费时间和精力,所以内核引入了pinctrl子系统,把引脚的复用和配置抽象出来,只需要芯片厂商把自家芯片的支持进去,就可以很方便的配置引脚。 下面打开我们的pinctrl文件,如下: vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi ​ 编辑 添加图片注释,不超过 140 字(可选) 4. 关闭冲突功能 因为有些功能结点使用的引脚与我们这次复用的引脚发生冲突,会发生引脚不生效的错误,所以我们一定要检查好,然后将其关闭。 如下打开设备树文件: vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) ​ 编辑 添加图片注释,不超过 140 字(可选) vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi 注意: 因摄像头csi复用的引脚与我们这里的冲突,虽然前面将状态disabled了,pinctrl这里也有可能会造成冲突,为了避免不必要的麻烦,我们也将这里注释掉。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 5. 驱动修改 gpio-keys是基于input子系统实现的一个通用按键驱动,该驱动基于platform_driver架构,实现了驱动和设备分离,符合Linux设备驱动模型的思想,也符合linux驱动实现模型,即driver和device分离模型。 一般按键驱动,都是基于gpio-keys进行开发的。驱动文件如下: vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c ​ 编辑 添加图片注释,不超过 140 字(可选) ​ 编辑 添加图片注释,不超过 140 字(可选) ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 二、测试方法 终端窗口输入evtest,选择 7。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 从上图红框可以看出,通过evtest测试工具将内核设备读取并打印设备描述的事件,到这里,GPIO按键就做完了,可以用它来实现很多的功能,比如说按一下切换灯的状态,蜂鸣器响等。 当然不只是这些啦,我们还可以利用它去实现很多其他功能,欢迎各位聪明的工程师小伙伴自行发挥!
相关资源