rk1106 gpio 配置上拉输入 下拉输入
-
luckfox Pico Pro Max设备中的gpio,怎么配置GPIO为上拉输入或者下拉输入,我看sys接口下面 有 /sys/class/gpio/gpio55/direction /sys/class/gpio/gpio55/value 接口,但是没有看到配置上拉输入和下拉输入的接口,怎么才可以配置呢?
您好,上拉输入和下拉输入的接口并没有在sysfs中引出来,可以通过直接配置默认上下拉模式实现,目前有两种方法
1.修改设备树
以gpio55(GPIO1_PC7)为例,在<Luckfox Pico SDK>/config/dts_config中添加
注意:gpio1pc7:gpio1pc7 需要放置到根节点下,其中的other data 表示根节点的其他内容
2.直接操作寄存器
根据GPIO的数据手册直接操作寄存器
如果需要设置默认上拉,直接执行
】
1.修改设备树
以gpio55(GPIO1_PC7)为例,在<Luckfox Pico SDK>/config/dts_config中添加
Code: Select all
/{
/*-------------------------------------------------------*/
/*----------------------other data-----------------------*/
/*-------------------------------------------------------*/
gpio1pc7:gpio1pc7 {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&gpio1_pc7>;
regulator-name = "gpio1_pc7";
regulator-always-on;
};
};
&pinctrl {
gpio1-pc7 {
gpio1_pc7:gpio1-pc7 {
rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
};
2.直接操作寄存器
根据GPIO的数据手册直接操作寄存器
如果需要设置默认上拉,直接执行
Code: Select all
io -4 0xFF5381C8 0xC0004000
谢谢您的回复,因为我需要在应用中改变上拉或者下拉输入,所以选择第二种方式来配置,现在是想问一下,在GPIO配置为输入的方式时,读取数据的寄存器地址是哪个呢?
谢谢,还需要请教一下,现在我是用GPIO模拟JTAG的时序,使用/sys/class/gpio的接口读写的方式,用逻辑分析仪抓出来的波形来看,速率大概是66KHZ,我读数据使用的代码
fread(data,1,1,m_tdo_file);
fseek(m_tdo_file,0,SEEK_SET);
写的代码:
fprintf(m_tms_file,"1");
fflush(m_tms_file);
感觉操作文件系统的方式速度慢的很,有办法提高读写的速率吗?如果我在用户态操作寄存器会不会快一点呢?
fread(data,1,1,m_tdo_file);
fseek(m_tdo_file,0,SEEK_SET);
写的代码:
fprintf(m_tms_file,"1");
fflush(m_tms_file);
感觉操作文件系统的方式速度慢的很,有办法提高读写的速率吗?如果我在用户态操作寄存器会不会快一点呢?
我们没有进行过这方面的尝试,目前gpio翻转模拟时序较好的方案就是驱动中gpio模拟spi的方案,使用的方式时在驱动中修改寄存器,试过在1Mhz下能正常运行,在应用层使用io操作寄存器的方式控制GPIO没有研究过相关的原理,不清楚是否受调度影响导致速度下降youhang1106 wrote: ↑2024-07-18 3:56 谢谢,还需要请教一下,现在我是用GPIO模拟JTAG的时序,使用/sys/class/gpio的接口读写的方式,用逻辑分析仪抓出来的波形来看,速率大概是66KHZ,我读数据使用的代码
fread(data,1,1,m_tdo_file);
fseek(m_tdo_file,0,SEEK_SET);
写的代码:
fprintf(m_tms_file,"1");
fflush(m_tms_file);
感觉操作文件系统的方式速度慢的很,有办法提高读写的速率吗?如果我在用户态操作寄存器会不会快一点呢?
那luckfox Pico Pro Max的SDK里面gpio模拟SPI的驱动是哪个文件呢,我想参考看看,测试在1M的频率可用的话,有测试用例吗?
gpio 模拟 spi 的驱动源码在<luckfox-pico SDK>/sysdrv/source/kernel/drivers/spi/spi-gpio.c 使用gpiod_set_value_cansleep来设置gpio电平,我们没有提供相关的示例,需要自行配置设备树进行测试。