首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LinuxI2C驱动框架分析

I2C总线上连接I2C从设备都有一个标识自己设备地址,由这个设备地址来确定主设备发过来命令是否该由它来响应。 驱动 简单驱动代表着操作设备方式和流程。...Linux总线设备框架工作原理 如果想要弄清楚I2C驱动框架,必须深刻理解Linux总线设备框架。之所以会形成这样框架,很重要原因是为了代码复用性。...因为驱动和设备关系是一对多,对于相同类型不同设备,可共用同一套驱动程序接口。为了提高驱动可移植性,Linux抽象出一套管理资源函数。...3.LinuxI2C驱动程序体系结构 ---- 对于LinuxI2C驱动,其体系结构组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动注册,注销方法,I2C通信方法...(3)I2C设备驱动I2C设备驱动(也称为客户驱动)是对I2C硬件体系结构中设备端实现,设备一般挂接在受CPU控制I2C适配器上,通过I2C适配器与CPU交换数据。 ?

4.7K11

Linux系统驱动I2C协议

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 I2C协议 参考资料: i2c_spec.pdf 1....硬件连接 I2C在硬件上接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻原因以后我们再说)。 2....下图:白色背景表示"主→从",灰色背景表示"从→主" 3.3 I2C信号 I2C协议中数据传输单位是字节,也就是8位。但是要用到9个时钟:前面8个时钟用来传输8数据,第9个时钟用来传输回应信号。...在第9个时钟之后,如果有某一方需要更多时间来处理数据,它可以一直驱动三极管把SCL拉低。

2.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux I2C驱动入门,建议收藏!

    Linux内核将 I2C 驱动分为两部分: I2C 总线驱动I2C总线驱动就是SOC I2C控制器驱动,也叫做 I2C适配器驱动。...I2C 设备驱动I2C设备驱动就是针对具体 I2C设备而编写驱动I2C总线协议详解请参考:IIC通信协议,搞懂这篇就够了 I2C框架下几个重要成员 1....I2C驱动 i2c_driver 类似 platform_driver,是我们编写 I2C 设备驱动重点要处理内容, i2c_driver 结构体定义在 include/linux/i2c.h 文件中...I2C驱动:对应就是I2C设备驱动程序。 I2C设备:是具体硬件设备一个抽象。 I2C适配器:用于I2C驱动I2C设备间通用,是SOC上I2C控制器一个抽象。...Linux I2C总线运行机制: 注册I2C驱动I2C驱动添加到I2C总线驱动链表中 遍历I2C总线上设备链表,根据i2c_device_match函数进行匹配,如果匹配调用i2c_device_probe

    3K20

    Linux系统驱动I2C视频介绍

    I2C软件框架 以I2C接口存储设备AT24C02为例: APP: 提出要求:把字符串"www.100ask.net"写入AT24C02地址16开始地方 它是大爷,不关心底层实现细节 它只需要调用设备驱动程序提供接口...AT24C02驱动: 它知道AT24C02要求地址、数据格式 它知道发出什么信号才能让AT24C02执行擦除、烧写工作 它知道怎么判断数据是否烧写成功 它构造好一系列数据,发给I2C控制器...我们讲什么 3.1 对于Linux 从上到下: 先讲I2C协议 APP可以通过两类驱动程序访问设备 I2C设备自己驱动程序 内核自带i2c-dev.c驱动程序,它是i2c控制器驱动程序暴露给用户空间驱动程序...(i2c-dev.c) I2C Device Driver I2C设备自己驱动程序 内核自带i2c-dev.c驱动程序,它是i2c控制器驱动程序暴露给用户空间驱动程序(i2c-dev.c)...I2C Controller Driver 芯片I2C控制器驱动程序(称为adapter) 使用GPIO模拟I2C控制器驱动程序(i2c-gpio.c) 3.2 对于单片机/裸机 从上到下

    2.3K40

    Linux I2C 驱动入门,建议收藏!!!

    第一时间看干货文章 1 Linux内核将 I2C 驱动分为两部分: I2C 总线驱动I2C总线驱动就是SOC I2C控制器驱动,也叫做 I2C适配器驱动。...I2C 设备驱动I2C设备驱动就是针对具体 I2C设备而编写驱动I2C框架下几个重要成员 1....I2C驱动 i2c_driver 类似 platform_driver,是我们编写 I2C 设备驱动重点要处理内容, i2c_driver 结构体定义在 include/linux/i2c.h 文件中...I2C驱动:对应就是I2C设备驱动程序。 I2C设备:是具体硬件设备一个抽象。 I2C适配器:用于I2C驱动I2C设备间通用,是SOC上I2C控制器一个抽象。...Linux I2C总线运行机制: 注册I2C驱动I2C驱动添加到I2C总线驱动链表中 遍历I2C总线上设备链表,根据i2c_device_match函数进行匹配,如果匹配调用i2c_device_probe

    2.7K20

    Linux驱动I2C子系统剖析

    I2C从机驱动程序 给用户提供调用接口 内核提供两种方式来实现设备驱动: 第一种是内核默认实现通用型I2C设备驱动,位于drivers/i2c/i2c-dev.c中。...I2C核心层 注册I2C总线 由内核开发人员编写,不涉及具体硬件 给驱动编程人员提供编程接口 I2C总线驱动层 是I2C主机适配器驱动程序 初始化I2C适配器(控制器) 实现操作方法:根据I2C操作时序进行操作...I2C设备驱动层 笔者先从内核提供通用驱动开始分析,最后在文末给出特定驱动分析。...内核提供了一个通用于所有设备I2C设备驱动,用户可以在应用层实现对I2C驱动,其实现位于drivers/i2c/i2c-dev.c中。...核心层分析可知,I2C总线是根据id_table进行匹配,所以这里并不会按照常规Linux驱动模型进行match后probe,况且这个驱动里也没有probe方法。

    6.5K20

    Linux系统驱动之使用GPIO模拟I2C驱动程序分析

    视频观看 百问网驱动大全 使用GPIO模拟I2C驱动程序分析 参考资料: i2c_spec.pdf Linux文档 Linux-5.4\Documentation\devicetree\bindings...\i2c\i2c-gpio.yaml Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txt Linux驱动源码 Linux...-5.4\drivers\i2c\busses\i2c-gpio.c Linux-4.9.88\drivers\i2c\busses\i2c-gpio.c 1....回顾I2C协议 1.1 硬件连接 I2C在硬件上接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻原因以后我们再说)。...1.2 I2C信号 I2C协议中数据传输单位是字节,也就是8位。但是要用到9个时钟:前面8个时钟用来传输8数据,第9个时钟用来传输回应信号。传输时,先传输最高位(MSB)。

    3.2K32

    详解linux 驱动编写(sd卡驱动

    随着sd卡流行,sd卡在嵌入式设备上使用场景也越来越多。那下面我们可以看一下,linux驱动框架上是怎么处理sd卡驱动?...1、代码目录地址 drivers/mmc 2、基本结构 从mmc代码结构可以看得出,主要分为两个部分,其中core为协议部分,host为各个soc适配部分 host是我们需要真正关心代码 3、以...If unsure, say N. 5、MMC_S3C和MMC_SDHCI_S3C是主要macro,接着了解两个macro对应文件数据结构 首先看一下s3cmci.c文件, static const....set_uhs_signaling = sdhci_set_uhs_signaling, }; 6 、从host角度来说,有了platform driver和上面的host driver,驱动流程就算搞清楚了...但是如果深入下去的话,还是需要好好读一下sd协议,这里面花时间最多。 以上就是本文全部内容,希望对大家学习有所帮助。

    12.3K32

    Linux块设备驱动详解

    Linux系统一次读取磁盘大小是一个块,而不是一个扇区,块设备驱动由此得名。 二、块设备处理过程 1、linux 内核中,块设备将数据存储与固定大小块中,每个块都有自己固定地址。...Linux内核中块设备和其他模块关系如下。 ? 1、块设备处理过程涉及Linux内核中很多模块,下面简单描述之间处理过过程。   ... ?...(Linux系统中,对块设备IO请求,都会向块设备驱动发出一个请求,在驱动中用request结构体描述) 内核结构如下:. struct request { struct list_head queuelist...(也可以不用注册设备,驱动一样可以工作,该函数和字符设备register_chrdev()函数相对应,对于大多数块设备,第一个工作就是相内核注册自己,但是在Linux2.6以后,register_blkdev

    5.5K30

    详解linux lcd驱动编写

    有些嵌入式设备是不需要lcd,比如路由器。但是,还有些设备是需要lcd显示内容,比如游戏机、测试仪、智能手表等等。所以,今天我们就看看lcd驱动linux上是怎么进行。...ret = request_irq(irq, s3c2410fb_irq, 0, pdev->name, info); 9、后面的话 很多同学把驱动很复杂,其实都是一些格式代码。...掌握了基本结构,加上芯片手册、硬件协议,一般驱动都可以在很短时间内学会,这个不存在问题。尤其是那些在市场上出现了很多年soc,基本不需要改动就可以直接使用。...当然,如果真的发现问题了,我们也要有debug能力。drivers目录里面的内容很多,但是需要了解和关心其实不多,努力去做、去解决问题就可以了。...以上就是本文全部内容,希望对大家学习有所帮助。

    2.1K21

    linux内核驱动模型详解_arduino驱动安装

    转载请标明出处floatercsdn blog,http://blog.csdn.net/flaoter Linux SPI驱动分为核心层,控制器驱动层和设备驱动层。...核心层是LinuxSPI核心部分,提供了核心数据结构定义,总线、设备和驱动注册、注销管理等,提供与上层统一接口。...linuxI2C、SPI、USB等总线驱动隔离成控制器驱动和设备驱动,使两者相对独立。 本文以qcomspi控制器为例,对spi控制器驱动进行解析。kernel代码版本是3.18。...linux驱动与设备是一对多关系,在spi_master设备注册时,控制器结构体信息会提供给spi_master作为私有数据。...3.3 厂商总线传输 控制器驱动注册函数中进行了传输函数赋值。

    11.2K40

    《rt-thread驱动框架分析》-i2c驱动

    这一篇文章我们来分析rt-threadI2C设备驱动框架,I2C也是我们经常使用到总线。 I2C驱动框架我准备基于我开源硬件《GND studio 开发板》来做实验。...《rt-thread驱动框架分析》专辑回顾: 《rt-thread驱动框架分析》-pin驱动 驱动分析 I2C设备驱动框架图: 我们先RT-ThreadI2C框架图(这是我自己理解框架图,如果不对地方...主要分为三层,驱动层-核心层-设备层。如果你分析过LinuxI2C框架,它层次也是这样子。所以你了解了RTTI2C之后再去看LinuxI2C框架,其实问题不大。...驱动层:分为硬件I2C驱动和软件I2C驱动。 核心层: ①其中bit_ops是RTT为软件I2C提供中间层,它作用:为底层模拟I2C驱动提供回调接口,为核心层提供统一I2C通信接口。...④dev是提供RTT设备驱动框架统一API(实现箭头)。 ⑤注意是:模拟I2C驱动到核心层,增加了一层中间层。 设备层:设备就是杂七杂八使用I2C总线设备。

    1.6K31

    详解linux驱动编写(入门)

    比如说,现在你需要编写串口、i2c、i2s、FLASH、网卡、LCD、触摸屏、USB驱动了。这个时候,你手里面除了一堆芯片手册,啥也没有。能不能调试成功,就看你自己了。...我们今天所要说linux驱动编写。...现在linux驱动比较流行,主要有几个方面的原因:1)linux平台免费,很多芯片厂商希望linux平台支持自己产品;2)最近android平台很火,这在无形之中帮了linux忙,搞linux驱动的人也开始多了起来...前者偏向于理论多一些,后者书更加注重于实践部分内容。 说了这么多,大家可能问怎么做好linux驱动开发工作呢?...所以说,linux驱动简单开发步骤就是这些。 以上就是本文全部内容,希望对大家学习有所帮助。

    1.9K32

    16.Linux-LCD驱动(详解)

    ; __u32 rotate; __u32reserved[5]; /*保留*/ } 1.写驱动程序: (驱动设置:参考自带LCD平台驱动drivers/video/s3c2410fb.c...)释放注册fb_info 1.2 具体代码如下: #include #include #include <linux/errno.h...3.挂载驱动 将编译好LCD驱动模块 和drivers/video里3个.ko模块 放入nfs文件系统目录中 然后烧写内核, 先装载3个/drivers/video下编译好模块,再来装载LCD驱动模块...    // LCD上便显示hello字段 cat Makefile>/dev/tty1    // LCD上便显示Makeflie文件内容 4.1使用上节键盘驱动在LCD终端运行linux vi...如下图,我们insmod上一节键盘驱动后,按下enter键,便能在LCD终端上操作linux了 (上一节键盘驱动详解入口地址: http://www.cnblogs.com/lifexy/p/7553861

    3.3K90
    领券