基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_vim

一、将GPIO功能配置为I2C  

1、本例以I2C4为例,若要配置GPIO为复用功能。需要查看数据手册了解其复用关系,如下图所示。   

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_复用_02

不难看出,GPIO4_B2可复用为I2C4的SDA脚,GPIO_B3可复用为I2C4的SCL脚。

2、进入/opt/tq356x-linux/kernel/arch/arm64/boot/dts/rockchip目录,打开rk3568-tqcoreA-BaseA_v1.dtsi文件。 

cd /opt/tq356x-linux/kernel/arch/arm64/boot/dts/rockchip            
vim rk3568-tqcoreA-BaseA_v1.dtsi

3、找到i2c4节点  

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_设备树_03

4、打开rk3568-pinctrl.dtsi文件,找到上方红框的节点。 

vim rk3568-pinctrl.dtsi

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_vim_04

不难看出,GPIO4_PB2引脚被配置为I2C4SDA_M0功能,其中1表示将该管脚复用为I2C功能,从下图可知。

GPIO_PB3引脚被配置为I2C4SCL_M0功能,其中1表示将该管脚复用为I2C功能。

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_vim_05

&pcfg_pull_none_smt是一个配置电器属性的节点。

可以打开rockchip-pinconf.dtsi 文件查看有哪些电器属性,用户可根据自己需求配置。

vim rockchip-pinconf.dtsi


基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_复用_06

二、将GPIO配置为SPI  

1、本例以SPI3为例,首先查看数据手册,知晓GPIO口的复用关系,如下图所示。 

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_vim_07

2、我们发现,SPI3的SCL口与MOSI口与上方的I2C4SCL口、SDA重合。这时候就有个疑问了,设备树是如何实现只复用一个功能而不造成冲突的呢?进入打开rk3568.dtsi文件。 

vim rk3568.dtsi

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_复用_08

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_设备树_09

我们发现,在最上层的rk3568.dtsi文件中,i2c4与spi3的状态都是"disable"不可用。

打开rk3568-tqcoreA-BaseA_v1.dtsi文件

vim rk3568-tqcoreA-BaseA_v1.dtsi

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_设备树_10

我们可以发现,i2c4节点被引用并且状态被修改为"okay",而spi3却没有被引用。由上可知,原设备树文件中,只使能了I2C4没有使能SPI3,那么我们如何才能将GPIO4_PB2、GPIO4_PB3配置成SPI呢?请按以下步骤操作。

3、进入rk3568-tqcoreA-BaseA_v1.dtsi文件,将i2c4引用节点注释掉。 

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_复用_11

4、在rk3568-pinctrl.dtsi中找到spi3节点,并在rk3568-tqcoreA-BaseA_v1.dtsi文件中自定义引用spi3,将其状态修改为"okay"。如下图所示。 

vim rk3568-pinctrl.dtsi            
vim rk3568-tqcoreA-BaseA_v1.dtsi

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_复用_12

三、将GPIO配置为UART  

1、同样的,我们先看数据手册,知晓管脚的复用关系,本例以uart1为例。 

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_vim_13

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_设备树_14

不难看出,GPIO2_B3可复用为UART1_RXM0,GPIO_B4可复用为UART1_TXM0。

2、进入/opt/tq356x-linux/kernel/arch/arm64/boot/dts/rockchip目录,打开rk3568-tqcoreA-BaseA_v1.dtsi文件。 

cd /opt/tq356x-linux/kernel/arch/arm64/boot/dts/rockchip            
vim rk3568-tqcoreA-BaseA_v1.dtsi

3、找到uart1节点  

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_复用_15

4、打开rk3568-pinctrl.dtsi文件,找到上方红框的节点。   

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_复用_16

不难看出,GPIO2_PB3引脚被配置为UART1_RXM0功能,其中2表示将该管脚复用为UART功能,从下图可知。

GPIO_PB4引脚被配置为UART1_TXM0功能,其中2表示将该管脚复用为UART功能。

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_vim_17

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_复用_18

&pcfg_pull_up是一个配置电器属性的节点。

可以打开rockchip-pinconf.dtsi 文件查看有哪些电器属性,用户可根据自己需求配置。

vim rockchip-pinconf.dtsi

基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART_设备树_19

总的来说,我们在配置GPIO复用功能时。首先要看数据手册了解其复用关系。然后打开相对应的设备树文件修改pinctrl子系统里的值。

在TQ3568中,主要用到的设备树文件有rk3568.dtsi 、rk3568-tqcoreA-BaseA_v1.dtsi、rk3568-pinctrl.dtsi。

值得注意的是,随着版本的更新,设备树可能会不同。



-END-

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6