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

相关文章

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

springboot报错Invalid bound statement (not found)的解决

《springboot报错Invalidboundstatement(notfound)的解决》本文主要介绍了springboot报错Invalidboundstatement(not... 目录一. 问题描述二.解决问题三. 添加配置项 四.其他的解决方案4.1 Mapper 接口与 XML 文件不匹配

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python中ModuleNotFoundError: No module named ‘timm’的错误解决

《Python中ModuleNotFoundError:Nomodulenamed‘timm’的错误解决》本文主要介绍了Python中ModuleNotFoundError:Nomodulen... 目录一、引言二、错误原因分析三、解决办法1.安装timm模块2. 检查python环境3. 解决安装路径问题

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错