BSP-D2000平台调试CM9434串口芯片

1.硬件原理图

原理图显示两块9434的INT分别接到D2000的GPIO0_A3和GPIO0_A5.

2.配置

2.1 设备树

 gpio = <&pio  1   1   1   1   1  0>;|      |   |   |   |   |   |  ||      |   |   |   |   |   |  ------表示有效电平|      |   |   |   |   |   |   |      |   |   |   |   |   ---------上下拉, 0关闭功能, 1上拉, 2下拉, 3保留|      |   |   |   |   ||      |   |   |   |   -------------驱动力,电流等级(0 - 3),级别越高,输出电流越大|      |   |   |   ||      |   |   |   -----------------gpio功能类型,0输入, 1输出, 6和外部中断,7关闭功能(具体查 |      |   |   |                    手册)|      |   |   ---------------------pin bank 内偏移(即组内第几个io口).|      |   ||      |   -------------------------哪组gpio  PA(0) PB(1)|      ||      -----------------------------指向哪个gpio控制器,  pio / r_pio(PL组)|     ------------------------------------属性名字(随便命名)

设备树配置: 

example{compatible = "gpio,example";gpios = <&pio PE 8 1 1 1 1>; };

 驱动GPIO操作

    gpio = of_get_named_gpio_flags(nd, "gpios", 0, (enum of_gpio_flags *)&config);if (!gpio_is_valid(gpio))printk("gpio isn't valid\n");if (gpio_request(gpio, pdev->name) < 0)printk("gpio request failed %d\n", gpio);gpio_direction_output(gpio, 1);

2.2 直接操作GPIO

不用设备树配置,驱动代码中对固定GPIO操作

#define GPIO8_A6 254

ret = gpio_request(GPIO8_A6 , "gpio8_a6");

if (!ret) {

         printk("request for gpio8_a6 failed:%d\n", ret);

             return 0;

}

gpio_direction_output(GPIO8_A6 ,1);//设置GPIO8_A6为输出功能且输出高电平

2.3 寄存器操作

寄存器配置GPIO功能

驱动GPIO寄存器操作

    void __iomem  *base_addr;unsigned int reg_value = 0;base_addr = ioremap(GPIO0_REGBASE, 0x32);//GPIO_SWPORTA_DDRreg_value = readl(base_addr + GPIO_SWPORTA_DDR);debug_driver("GPIO_SWPORTA_DDR = 0x%x\n",reg_value);reg_value = reg_value & 0xD7;writel(reg_value, base_addr + GPIO_SWPORTA_DDR);reg_value = readl(base_addr + GPIO_SWPORTA_DDR);debug_driver("GPIO_SWPORTA_DDR = 0x%x\n",reg_value);//GPIO_INTENreg_value = readl(base_addr + GPIO_INTEN);reg_value = reg_value | 0x28;writel(reg_value, base_addr + GPIO_INTEN);reg_value = readl(base_addr + GPIO_INTEN);debug_driver("GPIO_INTEN = 0x%x\n",reg_value);//GPIO_INTMASKreg_value = readl(base_addr + GPIO_INTMASK);reg_value = reg_value & 0xD7;writel(reg_value, base_addr + GPIO_INTMASK);reg_value = readl(base_addr + GPIO_INTMASK);debug_driver("GPIO_INTMASK = 0x%x\n",reg_value);//GPIO_INTTYPE_LEVELreg_value = readl(base_addr + GPIO_INTTYPE_LEVEL);reg_value = reg_value & 0xD7;writel(reg_value, base_addr + GPIO_INTTYPE_LEVEL);reg_value = readl(base_addr + GPIO_INTTYPE_LEVEL);debug_driver("GPIO_INTTYPE_LEVEL = 0x%x\n",reg_value);//GPIO_INT_POLARITYreg_value = readl(base_addr + GPIO_INT_POLARITY);reg_value = reg_value & 0xD7;writel(reg_value, base_addr + GPIO_INT_POLARITY);reg_value = readl(base_addr + GPIO_INT_POLARITY);debug_driver("GPIO_INT_POLARITY = 0x%x\n",reg_value);iounmap(base_addr);

2.4 用户空间操作

用户空间操作/sys/class/gpio目录

/sys/class/gpio/目录下各个文件说明:

/sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号;

/sys/class/gpio/unexport 用于通知系统取消导出;

/sys/class/gpio/gpioX/direction文件,可以写入in(设置输入方向)或out(设置输出方向);

/sys/class/gpio/gpioX/value文件是可以读写GPIO状态;

/sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号,寄存器名称,引脚总数;其中X表示具体的引脚编号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pyqt5写一个文本处理软件

参考资料https://www.zhihu.com/column/pyqt5 导入安装包 pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools -i https://pypi.douban.com/simplepyqt5 designer 如何将生成的UI文件转化为py代码 pyuic5 main.ui -o main.py好的&#xff0c;下…

cf-913-div3

title: cf 913 div3 date: 2024-01-16 16:42:45 tags: vp categories: 比赛 A. Rook 题目大意 可以在棋盘上横向或纵向移动任意步数&#xff0c;找出车的所有走法 解题思路 直接输出横向和纵向车能移动的位置即可 代码实现 void solve() {string s; cin >> s;string …

走迷宫之推箱子

前言&#xff1a; 在上一篇文章当中我介绍了一个走迷宫的写法&#xff0c;但是那个迷宫没什么可玩性和趣味性&#xff0c;所以我打算在迷宫的基础上加上一个推箱子&#xff0c;使之有更好的操作空间&#xff0c;从而增强了游戏的可玩性和趣味性。 1. 打印菜单 void menu() {…

探索 Python:发现有趣的库——第 1 章:数据可视化之旅

在一个充满活力的科技世界中&#xff0c;数据分析专家“算法仙”和编程爱好者“代码侠”相遇了&#xff0c;决定一起踏上数据可视化的探险之旅。他们将运用 Matplotlib 和 Seaborn 这两个强大的 Python 库&#xff0c;将枯燥的数据转化为生动的图形。 算法仙&#xff1a;你好&…

为什么要进行数模转换,数模转换的应用场景有哪些?

问题描述&#xff1a;为什么要进行数模转换&#xff0c;数模转换的应用场景有哪些&#xff1f; 问题解答&#xff1a; 数模转换&#xff08;Digital-to-Analog Conversion&#xff0c;简称DAC&#xff09;是将数字信号转换为模拟信号的过程。进行数模转换的原因和一些应用场景…

Kafka 的 Consumer Group 解读

作为一份笔记&#xff0c;本文再次梳理一下 Kafka 的 Consumer Group。我们知道&#xff0c;一个 Topic 往往会有多个 Partition&#xff0c;一条消息只会被写到一个 Kafka 的 Partition 中&#xff0c;那 Consumer 是怎么消费 Message 的呢&#xff1f; Consumer Group 又从中…

如何低成本打造高效跨国企业内网

随着企业数字化转型的加速&#xff0c;企业对网络连接、安全性和可靠性的需求也变得越来越高&#xff0c;最近小编收到了好几封私信&#xff0c;咨询跨境企业内部组网方案。 投稿的是某跨国公司的IT运维人员&#xff0c;总部在海外&#xff0c;国内分支机构每天都需要进行数据互…

【ASP.NET Core 基础知识】--中间件--什么是中间件

本篇文章作为中间件单元的开篇文章&#xff0c;通过这篇文章可以了解什么是中间件、内置中间件的使用以及怎么创建自定义中间件。我们先来看一下中间件的角色、目的和重要性。 1. 角色 请求处理管道的构建块&#xff1a; 中间件是构成ASP.NET Core请求处理管道的基本组成部分…

[Android]实现一个权限申请类

[Android]实现一个权限申请类 导言 在引入了动态权限申请之后&#xff0c;Android的权限申请就变得尤为繁琐&#xff0c;若是按照原有的方法一板一眼地进行申请&#xff0c;样板代码未免太多。因此本篇文章就使用ActivityResult API&#xff0c;来实现一个简单的权限申请类来帮…

C练习——魔术师猜三位数

题目&#xff1a; 有一种室内互动游戏&#xff0c;魔术师要每位观众心里想一个三位数abc&#xff08;a、b、c分别是百位、十位和个位数字&#xff09;&#xff0c;然后魔术师让观众心中记下acb、bac、bca、cab、cba五个数以及这5个数的和值。只要观众说出这个和是多少&#xf…

设计模式之多线程分工模式--- 生产-消费者模式

系列文章目录 设计模式之避免共享的设计模式Immutability&#xff08;不变性&#xff09;模式 设计模式之并发特定场景下的设计模式 Two-phase Termination&#xff08;两阶段终止&#xff09;模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…

Linux定时删除n天前的数据

Linux定时删除n天前的数据 1.创建删除脚本并授权 touch /home/data/script/shell/auto-del-60-days-ago-log.sh chmod x auto-del-60-days-ago-log.sh 2.编写shell脚本&#xff08;auto-del-60-days-ago-log.sh&#xff09; vi auto-del-60-days-ago-log.sh 添加如下内容&a…

Golang 替换数字卡码54题

文章目录 替换数字 54卡码网直接操作读取的[]byte 替换数字 54卡码网 本题为卡码网的54题&#xff0c;起为acm模式的答题 这里我们不在输入获得的[]byte类型上直接修改&#xff0c;而是保存在新建的[]byte上 golang小知识&#xff1a; 单引号’&#xff0c;表示byte类型或rune…

进程的创建与回收学习笔记

目录 一、进程内容&#xff1a; 二、进程常用命令 三、创建子进程 四、子进程进阶 五、进程的退出 六、进程的回收 一、进程内容&#xff1a; 程序&#xff1a; 存放在磁盘上的指令和数据的有序集合&#xff08;文件&#xff09; 静态的 进程&#xff1a; 执行一个程序所…

Image Sensor常见分辨率下HTS,VTS设置

本文介绍Image Sensor常见分辨率下HTS&#xff0c;VTS设置。 Image Sensor的HTS&#xff0c;VTS设置非常重要&#xff0c;其与Pixel Clock和FPS有一定的相关性&#xff0c;本文列出常见的分辨率下HTS&#xff0c;VTS的设置。 常见的分辨率下HTS&#xff0c;VTS的设置如下表。…

拍照后的相机logo怎么去掉?看完你就知道了

在日常生活中&#xff0c;拍照已经成为了我们捕捉美好瞬间的习惯。山川湖海、花鸟鱼虫&#xff0c;城市风光、街角趣闻&#xff0c;我们都喜欢用相机或手机留住这些美好的回忆。然而&#xff0c;有时候&#xff0c;当我们按下的那一刹那&#xff0c;一些不速之客——logo&#…

SQL语句详解五-DCL(数据控制语言)

文章目录 DCL管理用户示例代码 权限管理示例代码用户权限 DCL 概述&#xff1a;DCL&#xff0c;数据库控制语言&#xff0c;用来管理用户和给用户授予权限的 管理用户 添加用户 CREATE USER 用户名主机名 IDENTIFIED BY 密码;删除用户 DROP USER 用户名主机名;修改用户密码 S…

安全狗连续3年获得中国网络空间安全协会感谢

在2024年的新年伊始&#xff0c;安全狗依托在2023年期间协助中国网络空间安全协会完成《网络安全态势感知研判分析报告》并支持相关网络安全态势研判工作而获得感谢信。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;创办于2013年&#xff0c;是…

3d模型为什么打光只显示黑色---模大狮模型网

3D建模是现代制作动画、电影、游戏等数字媒体内容的重要工具。在建模过程中&#xff0c;打光是一个重要的环节&#xff0c;它可以让3D模型更加真实、有趣和生动。然而&#xff0c;如果打光不当&#xff0c;3D模型可能会呈现出黑色的效果&#xff0c;这可能会让人感到困惑和沮丧…

mybatisplus多租户执行复杂sql(如带case when之类的语句)报错问题

mybatisplus在多租户情况下&#xff0c;执行复杂sql时&#xff0c;会报&#xff1a;Failed to process,Error SQL:select ...&#xff0c;之前版本是加SqlParser注解关闭租户验证&#xff0c;新版本替换为&#xff1a;InterceptorIgnore(tenantLine "1")