基于rk3568解决gpio阶梯波形(适用于i2c、uart、电平转换)

2024-03-08 11:12

本文主要是介绍基于rk3568解决gpio阶梯波形(适用于i2c、uart、电平转换),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、理解GPIO的开漏(OD)和开集(OC)

2、查询io寄存器地址及定义

3、配置可调寄存器接口dev/mem


author

daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主

daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识https://blog.csdn.net/qq_40715266?type=blog

1、理解GPIO的开漏(OD)和开集(OC)

参考链接:GPIO口有关上拉电阻和下拉电阻&推挽输出&开漏(OD)和开集(OC)

实测中遇到的是i2c问题,但是uart或者电平转换芯片都会遇到,首先保证外部是否有1k电阻的上拉,当然具体的电阻可以自行进行调节,其次需要满足开漏模式的输出(OD)。

2、查询io寄存器地址定义

根据原理图的地址,查询rk3568的手册得到gpio的OD配置及地址,

主要是为了后续能够进行io操作指令对具体gpio的寄存器值进行改写测试

31:16位电平要求与150一致才能使能生效

GRF_GPIO4B_OPD

Address: Operational Base + offset (0x0134) 

根据当前参数章节隶属于3.7SYS_GRF 找到基地址

3.7 SYS_GRF Register Description

3.7.1 Registers Summary 

基地址SYS_GRF  0xFDC60000

0xFDC60000 + 0x0134 = 0xFDC60134 

3、配置可调寄存器接口dev/mem

makefile

kernel/drivers/char/Makefile

obj-$(CONFIG_DEVMEM)           += mem.o

config

kernel/arch/arm64/configs/rockchip_defconfig

CONFIG_DEVMEM=y

CONFIG_STRICT_DEVMEM=n

CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=n

mem.c

驱动

drivers/char/mem.c

// #ifdef CONFIG_DEVMEM

//   [1] = { "mem", 0, &mem_fops, FMODE_UNSIGNED_OFFSET },

// #endif

单独编译boot.img

  1. uboot编译

$ cd u-boot

$ ./make.sh rk3568

  1. kernel编译(单编 boot.img 同步骤)

$ cd ..

$ cd kernel 

$ make ARCH=arm64  rockchip_evb3568_v2b_defconfig

$ ./mk_kernel.sh ido-evb3568-v2b-dsi0-mipi.img

1|rk3568_r:/ # ls -l /dev/mem
crw------- 1 media media 1,   1 2023-12-01 21:13 /dev/mem
1|rk3568_r:/ # io
Raw memory i/o utility - $Revision: 1.5 $io -v -1|2|4 -r|[-l <len>] [-f <file>] <addr> [<value>]    -v         Verbose, asks for confirmation
    -1|2|4     Sets memory access size in bytes (default byte)
    -l <len>   Length in bytes of area to access (defaults to
               one access, or whole file length)
    -r|w       Read from or Write to memory (default read)
    -f <file>  File to write on memory read, or
               to read on memory write<addr>     The memory address to access<val>      The value to write (implies -w)Examples:
    io 0x1000                  Reads one byte from 0x1000
    io 0x1000 0x12             Writes 0x12 to location 0x1000
    io -2 -l 8 0x1000          Reads 8 words from 0x1000
    io -r -f dmp -l 100 200    Reads 100 bytes from addr 200 to file
    io -w -f img 0x10000       Writes the whole of file to memoryNote access size (-1|2|4) does not apply to file based accesses.1|rk3568_r:/ # io -4 -l 0x30 0xFDC60000
open /dev/mem: No such file or directory
rk3568_r:/ # io -4 -w 0xFDC60134 0x040004
rk3568_r:/ # io -4 -r 0xFDC60134#0x040004

这篇关于基于rk3568解决gpio阶梯波形(适用于i2c、uart、电平转换)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/786897

相关文章

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

使用C#实现将RTF转换为PDF

《使用C#实现将RTF转换为PDF》RTF(RichTextFormat)是一种通用的文档格式,允许用户在不同的文字处理软件中保存和交换格式化文本,下面我们就来看看如何使用C#实现将RTF转换为PDF... 目录Spire.Doc for .NET 简介安装 Spire.Doc代码示例处理异常总结RTF(R

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

解决java.util.RandomAccessSubList cannot be cast to java.util.ArrayList错误的问题

《解决java.util.RandomAccessSubListcannotbecasttojava.util.ArrayList错误的问题》当你尝试将RandomAccessSubList... 目录Java.util.RandomAccessSubList cannot be cast to java.

java反序列化serialVersionUID不一致问题及解决

《java反序列化serialVersionUID不一致问题及解决》文章主要讨论了在Java中序列化和反序列化过程中遇到的问题,特别是当实体类的`serialVersionUID`发生变化或未设置时,... 目录前言一、序列化、反序列化二、解决方法总结前言serialVersionUID变化后,反序列化失

MySQL 5.7彻底卸载与重新安装保姆级教程(附常见问题解决)

《MySQL5.7彻底卸载与重新安装保姆级教程(附常见问题解决)》:本文主要介绍MySQL5.7彻底卸载与重新安装保姆级教程的相关资料,步骤包括停止服务、卸载程序、删除文件和注册表项、清理环境... 目录一、彻底卸载旧版本mysql(核心步骤)二、MySQL 5.7重新安装与配置三、常见问题解决总结废话不多

Python包管理工具pip警告WARNING: Ignoring invalid distribution问题解决

《Python包管理工具pip警告WARNING:Ignoringinvaliddistribution问题解决》pip警告通常是由于包安装不完整、损坏或拼写错误引起的,:本文主要介绍Pyt... 目录前言原因分析解决方法方法 1:手动删除无效元数据(推荐)方法 2:自动清理所有无效包验证修复总结 前言w

OFD格式文件及如何适应Python将PDF转换为OFD格式文件

《OFD格式文件及如何适应Python将PDF转换为OFD格式文件》OFD是中国自主研发的一种固定版式文档格式,主要用于电子公文、档案管理等领域,:本文主要介绍OFD格式文件及如何适应Python... 目录前言什么是OFD格式文档?使用python easyofd库将PDF转换为OFD第一步:安装 eas