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

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....传输数据类比 怎么通过I2C传输数据,我们需要把数据从主设备发送到从设备上去,也需要把数据从从设备传送到主设备上去,数据涉及到双向传输。...下图:白色背景表示"主→从",灰色背景表示"从→主" 3.3 I2C信号 I2C协议中数据传输的单位是字节,也就是8位。但是要用到9个时钟:前面8个时钟用来传输8数据,第9个时钟用来传输回应信号。

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

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

    Linux内核将 I2C 驱动分为两部分: I2C 总线驱动, I2C总线驱动就是SOC的 I2C控制器驱动,也叫做 I2C适配器驱动。...I2C驱动 i2c_driver 类似 platform_driver,是我们编写 I2C 设备驱动重点要处理的内容, i2c_driver 结构体定义在 include/linux/i2c.h 文件中...I2C设备 I2C设备结构体i2c_client 结构体定义在 include/linux/i2c.h 文件中,内容如下: struct i2c_client { unsigned short...Linux 内核将 SOC 的 I2C 适配器(控制器)抽象成 i2c_adapter, i2c_adapter 结构体定义在 include/linux/i2c.h 文件中,结构体内容如下: /*...Linux I2C总线的运行机制: 注册I2C驱动 将I2C驱动添加到I2C总线的驱动链表中 遍历I2C总线上的设备链表,根据i2c_device_match函数进行匹配,如果匹配调用i2c_device_probe

    3.1K20

    Linux TWI开发指南

    1.3 适用范围 ​ 表1-1:适用产品列表 内核版本 驱动文件 Linux-4.9 i2c-sunxi.c Linux-5.4 i2c-sunxi.c 2 模块介绍 2.1 模块功能介绍 全志公司的...-5.4 中,TWI 的配置与 linux-4.9 内核配置有些不同,区别主要体现在 clock 和 dma 的配置上: twi0: twi@0x05002000{ #address-cells =...-4.9 在 命 令 行 进 入 内 核 根 目 录 (/kernel/linux-4.9), 执 行 make ARCH=arm64 menuconfig (32 位平台执行:make ARCH=arm...图 2-5: SUNXI I2C controller 2.4 源码模块结构 I2C 总线驱动的源代码位于内核在 drivers/i2c/busses 目录下: kernel/linux-4.9/drivers...i2c-tools 主要是通过读写/dev/i2c-* 文件获取 I2C 设备,所以需要在 kernel/linux-4.9 的 menuconfig 里面把 I2C的 device interface

    2.5K30

    Linux系统驱动之I2C视频介绍

    资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...I2C硬件框架 在一个芯片(SoC)内部,有一个或多个I2C控制器 在一个I2C控制器上,可以连接一个或多个I2C设备 I2C总线只需要2条线:时钟线SCL、数据线SDA 在I2C总线的SCL、SDA...I2C控制器驱动 它根据I2C协议发出各类信号:I2C设备地址、I2C存储地址、数据 它根据I2C协议判断 3....我们讲什么 3.1 对于Linux 从上到下: 先讲I2C协议 APP可以通过两类驱动程序访问设备 I2C设备自己的驱动程序 内核自带的i2c-dev.c驱动程序,它是i2c控制器驱动程序暴露给用户空间的驱动程序...: 先讲I2C协议 APP I2C Device Driver I2C Controller Driver(也被称为adapter)

    2.3K40

    CS4.9 使用 CrossC2 上线 Linux 详细教程

    CS 版本:CS4.9 客户端环境:Windows10 服务端环境:Windows10 Kali Linux 子系统 一、安装 CrossC2 首先在 github上下载这三个文件: genCrossC2...的,如何你下载的是 genCrossC2.Linux 就会发现它显示的是 cs4.1 到 4.9 : 在 genCrossC2 目录下打开 cmd 输入如下命令生成 Linux x64 的马,注意第四个参数指定...c2profile 为 null,最后一个参数指定 cs 版本为 4.9: genCrossC2.exe 192.168.195.131 443 .cobaltstrike.beacon_keys null...Linux x64 beacon.elf upx 4.9 成功上线 Linux,且各个功能都是可以执行的,可以看到上线是 root 权限: 2....CrossC2 主要识别 http-get 和 http-post 块,但不能识别 CS4.9 的部分特性 http-get.verb 必须为 get,http-post.verb 必须为 post。

    1.1K10

    Linux的I2C驱动框架分析

    如I2C总线、USB总线、PCI总线等等。以I2C总线为例,在同一组I2C总线上连接着不同的I2C设备。 设备 设备代表真实的、具体的物理器件,在软件上用器件的独特的参数属性来代表该器件。...Linux总线设备框架的工作原理 如果想要弄清楚I2C驱动框架,必须深刻的理解Linux的总线设备框架。之所以会形成这样的框架,很重要的原因是为了代码的复用性。...为了提高驱动的可移植性,Linux抽象出一套管理资源的函数。设备是存在的硬件,在设备里包含自己的属性,也包含需要用到的资源。...3.Linux下I2C驱动程序的体系结构 ---- 对于Linux下的I2C驱动,其体系结构的组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法...(3)I2C设备驱动:I2C设备驱动(也称为客户驱动)是对I2C硬件体系结构中设备端的实现,设备一般挂接在受CPU控制的I2C适配器上,通过I2C适配器与CPU交换数据。 ?

    4.9K11

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

    第一时间看干货文章 1 Linux内核将 I2C 驱动分为两部分: I2C 总线驱动, I2C总线驱动就是SOC的 I2C控制器驱动,也叫做 I2C适配器驱动。...I2C驱动 i2c_driver 类似 platform_driver,是我们编写 I2C 设备驱动重点要处理的内容, i2c_driver 结构体定义在 include/linux/i2c.h 文件中...I2C设备 I2C设备结构体i2c_client 结构体定义在 include/linux/i2c.h 文件中,内容如下: struct i2c_client { unsigned short...Linux 内核将 SOC 的 I2C 适配器(控制器)抽象成 i2c_adapter, i2c_adapter 结构体定义在 include/linux/i2c.h 文件中,结构体内容如下: /*...Linux I2C总线的运行机制: 注册I2C驱动 将I2C驱动添加到I2C总线的驱动链表中 遍历I2C总线上的设备链表,根据i2c_device_match函数进行匹配,如果匹配调用i2c_device_probe

    2.8K20

    Linux驱动之I2C子系统剖析

    (比如E2PROM驱动) I2C核心层: drivers/i2c/i2c-coere.c I2C总线驱动层(主机控制器驱动层):drivers/i2c/busses/i2c-s3c2410.c I2C设备驱动层...这种方式仅仅只是封装了I2C的基本操作,相当于只是封装了I2C的基本时序,向应用层只提供了I2C基本操作的接口,该接口通用于所有的I2C设备。...I2C核心层 注册I2C总线 由内核开发人员编写的,不涉及具体硬件 给驱动编程人员提供编程接口 I2C总线驱动层 是I2C主机适配器的驱动程序 初始化I2C适配器(控制器) 实现操作方法:根据I2C操作时序进行操作...= i2c_device_remove, .shutdown = i2c_device_shutdown, .pm = &i2c_device_pm_ops, }; 根据Linux...核心层分析可知,I2C总线是根据id_table进行匹配,所以这里并不会按照常规的Linux驱动模型进行match后probe,况且这个驱动里也没有probe方法。

    6.7K20

    下一个LTS内核版本确定为 Linux Kernel 4.9

    Linux内核维护者Greg Kroah-Hartman在私人Google+发布一条短消息,将Linux Kernel 4.9分支标记为“longterm”,意味着4.9版本将会作为长期支持版本。...事实上关于Linux Kernel 4.9是否是长期支持版本的故事要从2016年8月12日开始说起,当时Greg Kroah-Hartman在Google+上发布信息,说“4.9 == next LTS...kernel”;去年9月6日,Greg Kroah-Hartman改变了这个想法,表示将会在Kernel.org网站上保留给4.9当作“长期支持”的权利。...在他的私人博客中写道:“因为很多人滥用这个通知这给我们造成了很大的困扰, 因此我保留是否选择4.9作为长期支持的权利。如果是这样,我可能会重新选择4.8分支或者等待4.10版本。...Linux Kernel 4.9的主要特性包括:虚拟映射内核栈分配,英特尔的粗粒度保护机制pkeys系统调用,BBR拥堵控制算法,支持模块化智能手机的Greybus子系统,大量的文件系统改进,驱动更新如改进

    1.4K30

    I2C总线架构 之 I2C核心

    引言 在之前的 「《I2C总线架构 之 设备驱动》」 和 「《I2C总线架构 之 总线驱动》」 中一再提到i2c核心,本篇文章就总结一下i2c核心的主要功能。...分层思想 在之前的篇章中,大致能够了解i2c核心功能主要是为i2c设备驱动和i2c总线驱动的注册操作提供API。这种设计的好处在于实现:高内聚,低耦合。...i2c总线与i2c设备相互独立,互无联系;两者都是通过调用i2c核心提供的API实现匹配。即两者只与i2c核心有联系,这样也就可以实现一个固定i2c总线驱动可以和任一符合条件的设备驱动匹配。...然后将i2c_client注册到Linux。 bus_for_each_drv:匹配机制。...pinctrl-0 = ; }; }; 以上设备树代码记录i2c2总线下挂接的2个硬件设备信息;linux

    2.7K21
    领券