首页 > 其他分享 >基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART

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

时间:2023-06-15 18:35:04浏览次数:37  
标签:BaseA UART rk3568 复用 SPI GPIO tqcoreA I2C dtsi

一、将GPIO功能配置为I2C  

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

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

不难看出,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_vim_02

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

vim rk3568-pinctrl.dtsi

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

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

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

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

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

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

vim rockchip-pinconf.dtsi


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

二、将GPIO配置为SPI  

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

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

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

vim rk3568.dtsi

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

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

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

打开rk3568-tqcoreA-BaseA_v1.dtsi文件

vim rk3568-tqcoreA-BaseA_v1.dtsi

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

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

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

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

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_设备树_11

三、将GPIO配置为UART  

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

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

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

不难看出,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_复用_14

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

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

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

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

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

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

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

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

vim rockchip-pinconf.dtsi

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

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

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

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

标签:BaseA,UART,rk3568,复用,SPI,GPIO,tqcoreA,I2C,dtsi
From: https://blog.51cto.com/u_16059068/6493994

相关文章

  • 基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART
    一、将GPIO功能配置为I2C  1、本例以I2C4为例,若要配置GPIO为复用功能。需要查看数据手册了解其复用关系,如下图所示。  不难看出,GPIO4_B2可复用为I2C4的SDA脚,GPIO_B3可复用为I2C4的SCL脚。2、进入/opt/tq356x-linux/kernel/arch/arm64/boot/dts/rockchip目录,打开rk3568-tqcoreA......
  • 曲线艺术编程 coding curves 第十章 螺旋曲线(SPIRALS)
    原作:KeithPetershttps://www.bit-101.com/blog/2022/11/coding-curves/译者:池中物王二狗(sheldon)源码:github:https://github.com/willian12345/coding-curves第十章螺旋(SPIRALS)曲线艺术编程系列第10章来聊聊螺旋线。螺旋非常像圆,它是一组点到定圆中心点的距离......
  • 转:Quartz.Net详解上
    转自:https://juejin.cn/post/71369283509199831341.QuartZ.Net详解(3.X)1.1概述1.1.1背景业务中总是会有需要定时执行的任务,我们可以用timer实现最简单的定时需求,也可以借助Quartz.NET框架实现复杂定时任务的功能//2秒后每隔3秒执行一次,传入参数"1"Timertimer=newTimer......
  • 【每日一题】Problem 120F. Spiders
    原题解决思路通过给定的数据,将其构建称树,取其中最大的深度进行拼接,最后得到最终结果如何获取最大的深度以每个节点作为root构建树,然后取其中最大的深度#include<bits/stdc++.h>/***@paramvec*@paramcur当前节点*@paramlast上一个访问的节点*@param......
  • ZYNQ 裸机模式下修改默认uart端口
    ##背景调试ZYNQ裸机code,调用printf()后在UART端口无法看到打印信息输出,查看原理图后发现,板子用的UART1作为默认串口调试接口,UART0分配给了RS485使用,因此需要修改默认的STD接口到UART0,那么如何修改呢? ##修改默认STD的UART接口打开bsp中的,mss文件,然后选择modifythi......
  • I2C总线与SMbus总线的区别
    本文转载自: 彻底搞懂I2C总线(4)I2C总线的其他用途(baidu.com)摘要本章节阐述了I2C总线的其他用途,如用于CBUS总线、SMBUS总线、PMBUS总线、IPMI接口、ATCA通信、DDC通信等。四.I2C总线通信协议的其他用途I2C总线被用作多种系统结构的通信协议。除了基本的I2C规范之外,这......
  • Dubbo的spi机制分析和实战案例
    留下来一个问题,想深入学习Dubbo源码,你需要具备哪些技术点。技术点Springxml自定义标签或通过@DubboComponentScan("con.tian.dubbo.service")扫描@DubboService注解设计模式:模板方法模式、装饰器模式、责任链模式、代理模式、工厂模式Netty基本知识:创建服务端和客户端,handler,编......
  • graalvm nodejs + spire office 实现office 处理
    实际上是一个比较简单的处理,主要是利用了graalvm的nodejs可以方便的使用外部jar,我们就可以使用其他nodejsweb框架,结合spireoffice实现专业可靠的office转换处理预备主要是安装graalvm以及nodejsgraalvm已经不支持包含nodejs了,需要独立安装参考对于grralvm安装使用......
  • Graph Neural Networks Inspired by Classical Iterative Algorithms
    目录概符号说明MotivationRobustRegularizationYangY.,LiuT.,WangY.,ZhouJ.,GanQ.,WeiZ.,ZhangZ.,HuangZ.andWipfD.Graphneuralnetworksinspiredbyclassicaliterativealgorithms.ICML,2021.概基于广义energyfunction(diffusion)的图神经网......
  • Quartz + SpringBoot 实现定时任务(多任务,多执行时间)代码模板(直接CV即可)
    一,什么是Quartzquartz是一款开源且丰富特性的Java任务调度库,用于实现任务调度和定时任务。它支持各种任务类型和灵活的配置选项,具备作业持久化、集群和分布式调度、错误处理和重试机制等功能。Quartz被广泛应用于各种应用程序中,提供可靠和灵活的任务调度解决方案。二,核心概念......