基于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

相关文章

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

解决Entity Framework中自增主键的问题

《解决EntityFramework中自增主键的问题》:本文主要介绍解决EntityFramework中自增主键的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Entity Framework中自增主键问题解决办法1解决办法2解决办法3总结Entity Fram

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错