目录
1、GPIO寄存器参数值及含义
2、读写寄存器地址
3、施密特触发器引起的滞后
4、高通设备树pinctrl的定义及配置
5、高通设备树GPIO的msmxxxx-pinctrl.dtsi结构定义
本文主要介绍基于高通的gpio配置,其中最少见的就是配置gpio的滞后效应引起的电压偏移对实际使用产生一定的影响,在以往的嵌入式芯片中只配置过上拉、下拉、浮空、但是在高通芯片中,由于高通芯片的管理,对引脚还加内置的施密特电路导致gpio还有一定的滞后效应,但是在高通的代码配置文档中说的并不是很清楚,而且写的很模糊,在尝试后也无效,最后还是之间在gpio的初始化中,按照高通的寄存器说明,对gpio进行寄存器的配置后才生效!
author | daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 |
1、GPIO寄存器参数值及含义
寄存器参数值 | |
GPIO寄存器地址 |
2、读写寄存器地址
读取 寄存器地址 | 例如读取gpio141,其中141是十进制的表示,转换成16进制是0x8D /system/bin # ./r 0x0108D000 0108d000: 00000001 返回值是0x0000001 其中1是第0 bit位的参数值,表示0x1 即 Pull Down 再读取gpio141内核的定义 /system/bin # cat /sys/kernel/debug/gpio | grep 141 GPIOs 0-141, platform/1000000.pinctrl, 1000000.pinctrl: gpio141 : in 0 2mA pull down 如果改成 no pull 则将需要将寄存器值改成0x00000000 ./r 【寄存器地址】【寄存器值】 /system/bin # ./r 0x0108D000 0x000000000 0108d000: 00000000 /system/bin # cat /sys/kernel/debug/gpio | grep 141 GPIOs 0-141, platform/1000000.pinctrl, 1000000.pinctrl: gpio141 : in 0 2mA no pull |
3、施密特触发器引起的滞后
上述配置中,针对第10位bit的参数GPIO_HIHYS_EN 描述的比较少,其实际是影响gpio的滞后反应,大致有100~300mv的电压差
施密特 | 施密特触发器是一种具有正反馈的电路,它可以将输入信号转换为稳定的输出信号。当输入信号的幅度超过一定的阈值时施密特触发器会产生一个输出信号,并将其保持在高电平状态。当输入信号的幅度低于另一个阈值时,施密特触发器会将输出信号切换回低电平状态。 施密特触发器的作用是消除输入信号中的噪声和抖动,并产生一个稳定的输出信号。由于施密特触发器具有正反馈,因此它可以在输入信号的幅度变化较小的情况下产生一个明确的输出信号。这使得施密特触发器非常适合用于数字电路中的信号处理和时序控制。 施密特触发器还可以用于消除开关反弹和消除瞬态噪声。在关电路中,当开关打开或关闭时,会产生反弹现象,这可能会导致错误的信号传输。通过使用施密特触发器,可以消除这种反弹现象,并确保正确的信号传输。 总之,施密特触发器是一种非常有用的电路,可以将输入信号转换为稳定的输出信号,并消除噪声和抖动。它在数字电路中的应用非常广泛,特别是在信处理和时序控制方面。 |
滞后 效应 | 这种滞后反应是由施密特触发器的正反馈机制引起的。当信号处于高电平状态时,它会通过反馈回路影响输入信号。这使得输入信号的幅度必须降低到下降阈值以下的一定程度,才能使输出信号切换回低电平状态。因此,施密特触发器具有一定的滞后效应。 滞后反应可以使施密特触发器更加稳定,并且可以消除输入信号中的噪声和抖动。然而,在某些应用中,滞后反应可能会导致不必要的延迟或误差。因此,在设计电路时,需要仔细考虑施密特触发器的滞后反应,并选择适当的阈值和反馈电路来满足特定的应用需求。 |
4、高通设备树pinctrl的定义及配置
引脚定义 | Optional Properties (for standard pins): - function: String. Specifies the pin mux selection. Values must be one of: "alt1", "alt2", "alt3", "alt4" - input-schmitt-enable: No arguments. Enable schmitt-trigger mode. - input-schmitt-disable: No arguments. Disable schmitt-trigger mode. - bias-pull-up: No arguments. Pull up on pin. - bias-pull-down: No arguments. Pull down on pin. - bias-disable: No arguments. Disable pin bias. - slew-rate: Integer. Meaning depends on configured pin mux: *_SCL or *_SDA: 0: Standard(100kbps)& Fast(400kbps) mode 1: Highspeed (3.4Mbps) mode IC_DM or IC_DP: 0: normal slew rate 1: fast slew rate Otherwise: 0: fast slew rate 1: normal slew rate - input-enable: No arguments. Enable input (does not affect output.) - input-disable: No arguments. Disable input (does not affect output.) - drive-strength: Integer. Drive strength in mA. Valid values are 2, 4, 6, 8, 10, 12, 14, 16 mA. |