展锐UDX710:GPIO电源域的配置方法

本文介绍了如何在展锐UDX710平台上通过uBoot和Kernel阶段调整电源域电压来控制GPIO的工作电压。在uBoot阶段,涉及`ldo_sleep.c`和`regulator_init.c`文件的修改;而在Kernel阶段,通过`sc2730.dtsi`和`orca.dtsi`设备树文件设定电压范围。需要注意,Kernel阶段的配置会覆盖uBoot阶段的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平台可通过调整电源域电压来控制GPIO的最大电压,但不能调整单个GPIO的最大电压

uBoot阶段使能电源域:
source/bsp/u-boot15_orca/board/spreadtrum/udx710_4h10_nse/ldo_sleep.c
在这里插入图片描述
uBoot阶段配置电源域电压:
source/bsp/u-boot15_orca/board/spread rum/udx710_4h10_nse/regulator_init.c
在这里插入图片描述
Kernel阶段配置电源域电压范围:
source/kernel/kernel4.14_orca/arch/arm64/boot/dts/sprd/sc2730.dtsi
在这里插入图片描述
Kernel阶段配置

### 展锐芯片 GPIO 按键配置方法展锐芯片上配置 GPIO 作为按键功能,主要涉及以下几个方面:设备树(Device Tree)中的 pinctrl 配置以及 Linux 内核驱动程序的实现。以下是详细的说明和示例代码。 #### 设备树中的 Pinctrl 配置 Pinctrl 的设置可以参考 `/Documentation/devicetree/bindings/pinctrl` 下的相关文档[^1]。对于 GPIO 按键的功能配置,需要定义一个特定的 pin 控制器节点来描述该 GPIO 的用途。以下是一个典型的设备树片段: ```dts &gpio_keys { compatible = "gpio-keys"; autorepeat; button@0 { label = "Power Key"; gpios = <&sc_gpio 27 GPIO_ACTIVE_LOW>; /* 假设使用第 27 号 GPIO */ linux,code = <KEY_POWER>; }; }; ``` 上述代码中: - `compatible` 字段指定了此节点兼容的驱动模型。 - `button@0` 定义了一个按钮实例,其中 `gpios` 表明使用的具体 GPIO 编号及其激活方式(此处为低电平触发),而 `linux,code` 则表示按下此按钮时发送给系统的键盘码。 #### 关于实际问题 通常,在开发过程中可能会遇到一些硬件层面的问题,比如 EN 引脚的状态影响整个电路的行为[^2]。因此,在设计 GPIO 功能之前,务必确认相关引脚未被其他外设占用或者处于冲突状态。 #### 示例代码:Linux 用户空间读取 GPIO 状态 除了通过设备树声明之外,还可以直接利用 sysfs 接口操作 GPIO 来检测按键事件。下面示了一种简单的 C 语言程序用于监控指定编号的 GPIO 输入变化情况。 ```c #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #define GPIO_PATH "/sys/class/gpio/" #define GPIO_NUM "27" int main() { int fd; // 导出目标 gpio system("echo 27 > /sys/class/gpio/export"); sleep(1); char value_path[64]; snprintf(value_path, sizeof(value_path), "%s%s", GPIO_PATH, "gpio27/value"); while (1) { fd = open(value_path, O_RDONLY); if (-1 == fd) { perror("Failed to open the file"); exit(EXIT_FAILURE); } lseek(fd, 0, SEEK_SET); char buf; read(fd, &buf, 1); printf("Button state: %c\n", buf); close(fd); usleep(200 * 1000); // Delay between reads. } } ``` 以上代码实现了周期性查询某个 GPIO 的当前逻辑电平并打印出来。注意这只是一个基础演示版本;生产环境中应考虑加入异常处理机制以增强健壮性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不秃头的程序猿Gabriel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值