全志V3S嵌入式驱动开发(gpio输出)

news2024/11/27 14:48:27

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        不管是对mcu,还是对soc来说,gpio肯定是越多越好。但是一个芯片上,它的引脚总是有限的,特别对于非BGA的soc来说,芯片又要做的小,引脚又要多,这几乎是不可能的。因此,在芯片领域,很多引脚功能都是复用的,至于选用哪一个功能完全看客户自己的选择,很多时候只能2选1,或者3选1。

        对于v3s也是一样的,从全志的芯片手册,也就是Allwinner_V3s_Datasheet_V1.0.pdf中的第53页,我们看到v3s中很多的功能也是复用的,

         所以,大家如果在荔枝派中看到,给客户的引脚只有那么几个,这其实是误解。有很多的pin,如果不使用,完全可以拿过来直接当成gpio使用。

1、使用spi接口当成gpio口

         这张图我们已经使用过很多次。图中有一个spi接口,之前主要是用作norflash访问使用的。现在因为所有系统都保存在sd卡里面,因此完全可以用这个当成gpio使用。

2、修改sun8i-v3s.dtsi文件

        首先注释掉之前spi0_pins这个部分,

			/*spi0_pins: spi0 {
				pins = "PC0", "PC1", "PC2", "PC3";
				function = "spi0";
			};*/

        接着注释掉spi0,

		/*spi0: spi@1c68000 {
			compatible = "allwinner,sun8i-h3-spi";
			reg = <0x01c68000 0x1000>;
			interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
			clock-names = "ahb", "mod";
			pinctrl-names = "default";
			pinctrl-0 = <&spi0_pins>;
			resets = <&ccu RST_BUS_SPI0>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};*/

        注释掉这两部分呢,重新编译成sun8i-v3s-licheepi-zero-dock.dtb文件就可以了。细心的同学也许会看到sun8i-v3s-licheepi-zero.dts和sun8i-v3s-licheepi-zero-dock.dts这两个文件中均有leds的配置,是不是status设置为okay就好了?要注意它们的状态都是写死的,后期不能通过命令和配置的方法来解决,虽然启动后也可以在/sys/kernel/debug/gpio下面看到映射关系,这个需要注意下。

3、重启开发板

        重启开发板之后,首先需要查看一下端口使用情况,没有debug信息,先要mount debugfs系统,

mount -t debugfs debugfs /sys/kernel/debug

        加载好了之后,就可以看看端口的使用情况了,

# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-223, parent: platform/1c20800.pinctrl, 1c20800.pinctrl:
 gpio-166 (                    |usb0_id_det         ) in  lo    

        看上去gpio情况还算正常。

4、创建通道,开始设备外设

        看过上面一篇文章的同学,对于/sys/class/pwm里面的export不会陌生。但是pwm只有两个,分别是0和1,gpio这么多,我们怎么把这些pin和通道bind在一起呢?其实这里面是有规律的。首先我们找到一个pin,但不知道它的序号是多少,那可以先找到名称,比如SPI_CS,

        接着看Allwinner_V3s_Datasheet_V1.0.pdf中的第54页,获取引脚名称,

         找到了这个信号叫PC2,下面就好办了。所有的端口一般都是channel = 32*x+y来实现的。PA、PB、PC...,这些代表x,分别是0、1、2...。而PC2中的2就代表y,如果是PB9,那么y就是9。所以对于PC2来说,channel = 32 * 2+ 2,也就是66,就是这么简单。那么,刚才说的PB9呢,它的channel = 32 * 1 + 9,应该就是41。

        说了这么多,下面开始实验,

echo 66 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio66/direction
echo 1 > /sys/class/gpio/gpio66/value
echo 0 > /sys/class/gpio/gpio66/value

        四条命令依次解释下,第一条创建channel 66。第二条呢,设定chanel 66的方向为输出。第三条,设置高电平,与此相对的,第四条就是设置低电平。

        为了验证设置的电平是不是正确,一个靠谱的办法就是在spi_cs处于高电平和低电平的时候都测量下,这样就知道电压有没有设置对了。

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

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

相关文章

修改邻接变量-0day漏洞利用原理(6)

大多数情况下,局部变量在栈中的分布是相邻的,但也有可能出于编译优化等需要而有所例外。具体情况我们需要在动态调试中具体对待,这里出于讲述基本原理的目的,可以暂时认为局部变量在栈中是紧挨在一起的。 提供理论基础 下一篇利用:非法的超长密码去修改 bufer 的邻接变量…

支持向量机练习

练习5&#xff1a;支持向量机 介绍 在本练习中&#xff0c;我们将使用支持向量机&#xff08;SVM&#xff09;来构建垃圾邮件分类器。 在开始练习前&#xff0c;需要下载如下的文件进行数据上传&#xff1a; data.tgz -包含本练习中所需要用的数据文件 其中&#xff1a; e…

2. 卷积的经典模型

一、什么是卷积神经网络 卷积神经网络就是含有卷积层的网络。 二、有哪些经典的模型&#xff1f;每一次的技术进步在哪里&#xff1f; 卷积神经网络&#xff08;LeNet&#xff09; LeNet第一次将卷积神经网络推上舞台&#xff0c;通过梯度下降训练卷积神经网络可以达到手写数字…

chatgpt赋能python:Python中取出中间文本的方法

Python中取出中间文本的方法 在Python开发中&#xff0c;我们常常需要从字符串中取出特定位置的文本&#xff0c;例如从一个网页源码中提取出指定的内容。而且&#xff0c;一份好的代码需要清晰易懂、高效可靠。那么&#xff0c;在Python中如何取出中间文本呢&#xff1f;下面…

超详细Redis入门教程——Redis 主从集群(下)

前言 本文小新为大家带来 Redis 主从集群 相关知识&#xff0c;具体内容包括哨兵机制实现&#xff08;包括&#xff1a;哨兵机制简介&#xff0c;Redis 高可用集群搭建&#xff0c;Redis 高可用集群的启动&#xff0c;Sentinel 优化配置&#xff09;&#xff0c;哨兵机制原理&a…

史上最全网络安全面试题汇总

最近有不少小伙伴跑来咨询&#xff1a; 想找网络安全工作&#xff0c;应该要怎么进行技术面试准备&#xff1f;工作不到 2 年&#xff0c;想跳槽看下机会&#xff0c;有没有相关的面试题呢&#xff1f; 为了更好地帮助大家高薪就业&#xff0c;今天就给大家分享一份网络安全工…

vmware创建ubuntu服务器>>(使用xshell)配置连接

目录 引言服务器创建准备镜像创建服务器全过程新建虚拟机选择虚拟机硬件兼容性镜像选择服务器目录名和基础信息设置虚拟机命名和存储位置设置处理器配置内存配置网络选型下一步连续点击启动 服务器配置root用户密码设置root用户切换安装ssh服务并启动vmware-ssh配置链接 xshell…

算法(三)—— 双指针

文章目录 27 移除元素344 反转字符串&#xff08;手写reverse&#xff09;剑指 Offer 05 替换空格19 删除链表的倒数第N个节点面试题 02.07. 链表相交15 三数之和二、使用步骤1.引入库2.读入数据 总结 27 移除元素 题目&#xff1a;原地移除数组中值为val的元素 思路&#xff…

Jetson Orin Nano nvme系统备份和恢复

大家好&#xff0c;我是虎哥&#xff0c;Jeston Orin nano 8G模块&#xff0c;我自己也玩了一段时间&#xff0c;配置了很多环境后&#xff0c;我就在琢磨如何将系统像之前的模块一样捞取出来后&#xff0c;在新模块上进行恢复。过程是曲折的&#xff0c;结果也是曲折的&#x…

开源字节 考研集训营小程序

考研集训营的价格要比普通的班课贵很多&#xff0c;价格通常在上万元。考研集训营分为春季、暑期、秋季等短期集训营&#xff0c;还有半年和全年长期集训&#xff0c;为学生提供英语、数学、政治的公共课辅导和各种专业课的教学。想要了解更多的考研相关信息&#xff0c;获得适…

自然语言处理从入门到应用——自然语言处理的基本问题:结构预测问题

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 与文本分类问题不同&#xff0c;在结构预测问题中&#xff0c;输出类别之间具有较强的相互关联性。例如&#xff0c;在词性标注任务中&#xff0c;一句话中不同词的词性之间往往相互影响&#xff0c;如副词之后往往出现…

1、mysql的安装与配置

下载安装配置 下载zip文件解压之后配置环境变量 在path后面添加mysql bin文件夹的路径&#xff1a;C:\Program Files (x86)\MySQL\bin 配置完环境变量后&#xff0c;在C:\Program Files (x86)\MySQL目录下新建一个配置文件mysql.ini&#xff0c;同时在bin的同级目录C:\Program …

算法的复杂度【数据结构】

1、时间复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源&#xff0c;因此衡量一个算法的好坏一般是从时间和空间两个维度来衡量的&#xff0c;即时间复杂度和空间复杂度时间复杂度主要衡量一个算法的运行快慢&#xff0c;而空间复杂度主要…

Jenkins安装配置

前言&#xff1a;Jenkins是一款CICD&#xff08;持续集成与持续交付&#xff09;工具。Jenkins可以帮你在写完代码后&#xff0c;一键完成开发过程中的一系列自动化部署的工作。 Jenkins 2.346.1 版本支持 jdk1.8 和 jdk11&#xff0c;最后一版支持jdk1.8的版本。 安装Jenkins前…

windows修改Pycharm的右键打开方式

title: windows中open floder as Pycharm太长了怎么修改 date: 2023-06-04 author: IoT_H2 tags: windows系统问题 categories: Markdown 问题描述&#xff1a; Pycharm这一栏这么长&#xff0c;长的我实在是很难受&#xff0c;事实上Jetbrains家的软件都是这个鸟模样 导…

RocketMq的单机版安装以及可视化软件的安装

一 RocketMq的单机版安装 1.1 RocketMq的上传 1.2 解压 [rootlocalhost export]# unzip rocketmq-all-4.9.6-bin-release.zip 1.3 修改配置 使用 vim 命令打开 bin/runserver.sh 文件。现将这些值修改为如下&#xff1a; [rootlocalhost bin]# vi runserver.sh 使用vim命令…

tinkerCAD入门操作(3):创建和操作分组对象

tinkerCAD入门操作(3)&#xff1a;创建和操作分组对象 介绍 我们现在将探索Tinkercad的超能力 - 组合简单的形状来制作复杂的对象。 组合形状是实体建模的基本目的。这就是汽车、建筑物和宇宙飞船等有趣东西的制作方式。现在&#xff0c;我们要教你这个超能力。 创建复合形状…

Stable-Diffusion|window10安装GPU版本的 Stable-Diffusion-WebUI遇到的一些问题(一)

教程主要参考&#xff1a; AI绘画第一步&#xff0c;安装Stable-Diffusion-WebUI全过程 ! Stable Diffusion WebUI使用手冊(正體中文)&#xff5c;Ivon的部落格 具体记录一下笔者除了按照上述教程&#xff0c;遇到坑的地方 文章目录 1 git PYTHON2 Nvidia设置3 stable-diffus…

如何解决构建安防监控系统的技术难点?快解析来助力

在安防领域,大数据具有广阔的应用场景,能带来深度的价值。随着应用普及越来越广&#xff0c;安防监控系统被人们日益重视起来&#xff0c;科技含量越来越高&#xff0c;几乎所有高新科技都可促进其发展&#xff0c;尤其是信息时代的来临&#xff0c;更给该专业的发展提供了契机…

2023年全球项目管理系统排行榜:推荐15家值得关注的项目管理系统

在当今世界&#xff0c;管理项目已经成为许多企业不可分割的一部分。因此&#xff0c;拥有正确的项目管理系统对于确保任何业务的成功都是至关重要的。随着技术的不断发展&#xff0c;好用的项目管理系统也在不断发展&#xff0c;以满足现代工作场所日益增长的需求。到2023年&a…