tft lcd spi 驱动

news2024/11/24 23:00:36

参考驱动uc1701

linux-4.1.15-imx6ul/drivers/staging/fbtft

SPI设备树配置

  1. 根据原理图修改对应引脚
    linux-3.10/arch/arm/boot/dts/sun8iw11p1-pinctrl.dtsi
    在这里插入图片描述
  2. 蔽掉引脚冲突功能
    linux-3.10/arch/arm/boot/dts/sun8iw11p1-pinctrl.dtsi
    sun8iw11p1-pinctrl.dtsi文件中,查找是否有其它功能使用PB13,PC19,PC20,PC21,PC22,如果有则蔽掉。
  3. spi2节点下增加对应设备属性
    在这里插入图片描述
  4. 设备查看
/sys/class/spi_master/spi2/spi2.1/modalias
/sys/bus/spi/devices/spi1.0/modalias

背光控制IO设备树配置

在这里插入图片描述

SPI控制引脚配置

在这里插入图片描述
** gpio所以计算 **
文件:
sunxi-gpio.h
GPIO定义:

#define SUNXI_PA_BASE   0
#define SUNXI_PB_BASE   32
#define SUNXI_PC_BASE   64
#define SUNXI_PD_BASE   96
#define SUNXI_PE_BASE   128
#define SUNXI_PF_BASE   160
#define SUNXI_PG_BASE   192
#define SUNXI_PH_BASE   224
#define SUNXI_PI_BASE   256
#define SUNXI_PJ_BASE   288
#define SUNXI_PK_BASE   320
#define SUNXI_PL_BASE   352
#define SUNXI_PM_BASE   384
#define SUNXI_PN_BASE   416
#define SUNXI_PO_BASE   448
#define AXP_PIN_BASE    1024

三、计算方式
举两个例子

1、PA13
PA 是从0开始定义的,那么就是: 0 +13 = 13

那么 PA13 的GPIO号 就是 GPIO13

2、PE10
PE 是从128开始定义的,那么就是:128 + 10 = 138

那么 PE10 的GPIO号 就是 GPIO138

链接: 全志GPIO使用
gpio控制器都是由厂商负责驱动好的,在设备树里关于gpio pinctrl的描述,如下:
在这里插入图片描述
其中“ #gpio-cells = <6>”表示在设备树里描述使用一个gpio口需要提供6个指定的参数。
通过文档,可以得知6个参数的分别作用如下:
在这里插入图片描述
获取设备树里设备节点的gpio口信息:
在这里插入图片描述
获取到int类型的gpio口后,就可以使用linux/gpio.h里的gpio口操作函数:
在这里插入图片描述
应用例子 :
dtsi:

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

代码:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/gpio.h>
#include <linux/sys_config.h>
#include <linux/delay.h>

int example_probe(struct platform_device *pdev)
{
    struct device_node *nd = pdev->dev.of_node;
    int gpio;   
    struct gpio_config config;

    printk("gpio count:%d\n", of_gpio_named_count(nd, "gpios"));
    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);
    msleep(3000);
    gpio_direction_output(gpio, 0);
    msleep(3000);
    gpio_direction_input(gpio);
    gpio_free(gpio);
    return 0;
}

int example_remove(struct platform_device *pdev)
{
    printk("in myremove ...\n");
    return 0;
}

struct of_device_id ids[] = {
    {.compatible = "gpio,example"},
    {},
};

struct platform_driver mydrv = {
    .probe = example_probe,
    .remove = example_remove,

    .driver = {
        .owner = THIS_MODULE,
        .name = "example" ,

        .of_match_table = ids,
    },
};

module_platform_driver(example);
MODULE_LICENSE("GPL");

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

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

相关文章

如何注册公司网站?【注册公司网站】

公司网站是很多公司的必备品&#xff0c;哪怕公司并不依赖线上业务&#xff0c;也会有自己的公司网站。随着互联网的发展成熟&#xff0c;其实现在注册公司网站基本上都是比较简单的&#xff0c;那么如何注册公司网站呢&#xff1f;下面给大家说一说。 一、注册公司网站前准备…

英伟达发布526.98 WHQL 显卡驱动,支持RTX 4080,三款即将上线游戏

11月16日&#xff0c;英伟达发布了526.98 WHQL 新驱动&#xff0c;支持最新发布的RTX 4080显卡。 新驱动为《蜘蛛侠:迈尔斯莫拉莱斯》、《战锤40k:暗潮》和《魔兽世界&#xff1a;巨龙时代》提供支持。此外&#xff0c;还支持《怪物猎人崛起》的DLAA更新和WRC世代-国际汽联WRC…

【FFmpeg】ffmpeg+nginx-rtmp实现视频流转发

1.应用场景 目前的摄像头厂家能提供出来的视频流格式有限&#xff0c;且chrome已经禁止了对flash的支持&#xff0c;导致像硬盘录像机这种只能提供rtsp格式流地址的摄像头无法接入Web应用&#xff0c;所以不得不对视频的流地址进行分发&#xff0c;通过代码对流地址中的数据进…

数仓开发之DWD层(三)

&#xff08;附&#xff1a;由于篇幅原因&#xff0c;这里就不在展示代码了&#xff0c;直接告诉大家思路&#xff09; 目录 五&#xff1a;交易域订单预处理表 5.1 主要任务 5.2 思路分析 5.3 图解 六&#xff1a;交易域下单事务事实表 6.1 主要任务&#xff1a; 6.2 …

泰克AFG31152函数信号发生器Tektronix AFG31152介绍

泰克AFG31152函数信号发生器Tektronix AFG31152 AFG31152 是 Tektronix 的 50 MHz 任意函数发生器。 特征&#xff1a; 的 InstaView™ 技术使工程师能够实时查看被测设备 (DUT) 的实际波形&#xff0c;而无需示波器和探头&#xff0c;从而消除了由阻抗不匹配引起的不确定性…

linux C.UTF-8和en-US.UTF-8语言环境有什么区别?(中文乱码问题)locale命令 centos、ubuntu修改编码集(没搞定!)

文章目录问题背景查看C.UTF-8和en-US.UTF-8语言环境差异关于locale修改编码集centos&#xff08;没验证&#xff09;ubuntu问题背景 我在ubuntu16.04虚拟机和英伟达盒子ubuntu18.04上分别部署了ngrest服务 用postman请求&#xff0c;ubuntu16.04虚拟机返回的中文是乱码&#…

软件测试职场焦虑之我对35岁危机的看法

目录 前言 如何理解35岁失业&#xff1f; 本质的原因是什么&#xff1f; 应对35岁失业的策略 总结 前言 这几年关于“35岁失业”的讨论甚嚣尘上&#xff0c;特别是进入疫情时代&#xff0c;身边也越来越多的人开始讨论这个话题。 一方面是疫情带来的巨大变革&#xff0c;…

SpringCloud——微服务介绍+系统架构

目录 1. 微服务介绍 2.系统架构演变 3. 单体应用架构 3.1优点&#xff1a; * 项目架构简单&#xff0c;小型项目的话&#xff0c; 开发成本低* 项目部署在一个节点上&#xff0c; 维护方便 3.2缺点&#xff1a; * 全部功能集成在一个工程中&#xff0c;对于大型项目来讲…

Data Catalog3.0:Modern Metadata for the Modern Data Stack

从2020年开始&#xff0c;在数据领域中&#xff0c;有一个比较流行的术语&#xff1a;The Modern Data Stack(现代数据堆栈)&#xff0c;简单理解就是汇集了处理海量数据的最佳工具集。这包括在最好的工具上建立数据基础设施&#xff0c;如用于数据仓库的Snowflake&#xff0c;…

传奇外网架设常见的问题及解决办法-传奇创建人物失败/不开门/PAK显示密码错误/脚本错误

传奇外网架设常见的问题及解决办法-传奇创建人物失败/不开门/PAK显示密码错误/脚本错误 在架设传奇的时候是否有遇到无法创建人物、pak密码错误等一系列情况呢&#xff1f;咱们都知道是架设不对的问题&#xff0c;但是具体是哪部分的问题&#xff0c;很多同学都不清楚&#xff…

JDK与cglib动态代理

JDK动态代理 接口类 public interface Subject {void doSomething(); }接口实现 public class RealSubject implements Subject {Overridepublic void doSomething() {System.out.println("RealSubject do something");} }InvocationHandler类 package daili;imp…

随笔记:计算机基础及进制计数法

随笔记&#xff1a;计算机基础及进制计数法 记录一下最近接触的基本的概念&#xff0c;便于想看的时候随时来翻看一下。 基础理论还是比较重要滴&#xff0c;基础理论还是比较重要滴&#xff0c;基础理论还是比较重要滴 现代计算机是用 0 和 1 来表示信息的&#xff0c;使用的…

6、行为型模式-责任链模式

一、责任链模式描述 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;为请求创建了一个接收者对象的链。这种模式给予请求的类型&#xff0c;对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中&#xff0c;通常每个接收者…

Unity AVPro 使用

AVPro 感觉我写的没多大用处&#xff0c;后面看看文档再完善一些。目前的东西是可以满足一些简单的需求的。 说明 标题名称内容Unity版本Unity 2021 .1.18f1c1AVPro 版本AVPro Video - Ultra Edition 2.5.6IDEVS2022系统版本Win 10 1909撰写日期2022 11月15日晚 需要注意的地…

防孤岛保护装置在光伏行业的应用

安科瑞 华楠 应用场景 防孤岛原理&#xff1a;防孤岛保护装置检测到并网点有逆功率、频率突变、 等异常数据时&#xff0c;即发生孤岛现象时&#xff0c;装置可配合断路器快速切除并网点&#xff0c;使本站与电网侧快速脱离&#xff0c;保证整个电站和相关维护人员的生命安全 …

Go:Signal信号量的简介与实践(优雅的退出)

文章目录简介一、kill与kill9的区别二、实践&#xff1a;优雅的退出小结简介 go中的信号量 有些信号名对应着3个信号值&#xff0c;这是因为这些信号值与平台相关&#xff0c;SIGKILL和SIGSTOP这两个信号既不能被应用程序捕获&#xff0c;也不能被操作系统阻塞或忽略。 一、…

智慧管廊解决方案-最新全套文件

智慧管廊解决方案-最新全套文件一、建设背景二、建设意义三、建设目标四、思路架构综合管廊目前存在的痛点1、安全防范不足2、管理技术落后3、信息孤岛问题4、多头管理问题五、建设方案六、获取 - 智慧管廊全套最新解决方案合集一、建设背景 综合管廊一般是建于城市地下用于容…

NUMA架构详解

基本概念 为什么要有多处理器架构&#xff1f; 由于摩尔定律的失效&#xff0c;单个CPU内的晶体管的数量接近于饱和状态&#xff0c;因此单个CPU的性能已经接近饱和状态&#xff0c;这时&#xff0c;要想提高计算机的性能&#xff0c;就必须朝着多核架构发展。多核架构中&…

力扣(leetcode)刷题分享,简单题(第2期)

力扣第二期介绍1. 反转链表2. 移除链表元素3. 找链表的中间节点4. 寻找链表中的倒数第k个结点5. 合并两个有序链表总结第二期介绍 本期博客主要讲解的题目是有关链表的一些经典OJ题&#xff0c;有一定难度&#xff0c;希望大家耐心看完。 1. 反转链表 题目介绍&#xff1a; …

VUE Date类型前端判断动态校验

需求 原本需求 一个编号和一个日期在流程中的审查人节点必填&#xff0c;于是我就直接写了前端必填校验 所有代码和名称已做更改&#xff0c;不涉及到公司隐私 <CustomFormItem label"登记编号" prop"registerNo" v-if"asset_examiner form.node …