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

Linux系统驱动之I2C协议

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...硬件连接 I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。 2....传输数据类比 怎么通过I2C传输数据,我们需要把数据从主设备发送到从设备上去,也需要把数据从从设备传送到主设备上去,数据涉及到双向传输。...主设备不驱动三极管 从设备决定数据,要发出回应信号的话,就驱动三极管让SDA变为0 从这里也可以知道ACK信号是低电平 从上面的例子,就可以知道怎样在一条线上实现双向传输,这就是SDA上要使用上拉电阻的原因...当它就绪后,就可以不再驱动三极管,这是上拉电阻把SCL变为高电平,其他设备就可以继续使用I2C总线了。 对于IIC协议它只能规定怎么传输数据,数据是什么含义由从设备决定。

2.8K20

Linux系统驱动之I2C视频介绍

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...线上,都有上拉电阻 2....I2C软件框架 以I2C接口的存储设备AT24C02为例: APP: 提出要求:把字符串"www.100ask.net"写入AT24C02地址16开始的地方 它是大爷,不关心底层实现的细节 它只需要调用设备驱动程序提供的接口...I2C控制器驱动 它根据I2C协议发出各类信号:I2C设备地址、I2C存储地址、数据 它根据I2C协议判断 3....我们讲什么 3.1 对于Linux 从上到下: 先讲I2C协议 APP可以通过两类驱动程序访问设备 I2C设备自己的驱动程序 内核自带的i2c-dev.c驱动程序,它是i2c控制器驱动程序暴露给用户空间的驱动程序

2.3K40
您找到你想要的搜索结果了吗?
是的
没有找到

线上环境 Linux 系统调用追踪

但如果需要分析线上服务 (特别是延迟敏感型)的某些系统调用的延迟时,strace 则不那么合适,因为它引入的开销会非常大,从性能分析大师 Brendan Gregg 的测试结果得知,被 strace 追踪的目标进程的运行速度会降低...Perf 众所周知,perf 是 Linux 系统下非常强大的性能工具,由 Linux 内核开发人员在不断演进和优化。...,c2c 分析可能存在的 false sharing (RedHat 在大量 Linux 的应用上,测试过这套 c2c 的开发原型,成功地发现了很多热点的伪共享缓存行问题。)...显示超过一定延迟的系统调用信息 ``` perf trace --duration 200 ``` [yl03lcsueh.png?...,返回错误次数,延迟,平均延迟等信息。

1.6K21

Linux驱动之I2C系统剖析

总线速度有三种模式 标准模式 100kbps 快速模式 400kbps 高速模式 3.4Mbps I2C系统框架 I2C设备驱动层:drivers/i2c/i2c-dev.c (通用型) 或者为特定设备定制的设备驱动...笔者会大体上对I2C系统的源码进行分析,如若分析的有出入,还望指出。 I2C核心层 I2C核心层的实现位于drivers/i2c/i2c-core.c中,笔者从i2c_init函数开始分析。...核心层分析可知,I2C总线是根据id_table进行匹配,所以这里并不会按照常规的Linux驱动模型进行match后probe,况且这个驱动里也没有probe方法。...其实在内核中提供了两个adapter注册接口,分别为i2c_add_adapter和i2c_add_numbered_adapter由于在系统中可能存在多个adapter, 所以将每一条I2C总线(控制器...总线上已经注册的driver,通过回调__process_new_adapter函数的方式,遍历到i2c-dev这个通用驱动后就会用其i2cdev_attach_adapter方法来挂接到在i2c-dev

6.2K20

Linux应用开发【第十二章】I2C编程应用开发

12.2 在linux系统下操作I2C总线的外设 12.2.1 概述 ​ 下图是在linux系统环境里操作i2c线上的外设流程框图。我们按照从下向上的顺序研究一下该流程中各个角色的功能。 ​...该功能的常用方式: ​ 第一,先通过i2cdetect -l查看当前系统中的I2C的总线情况: ​ 第二,若总线上挂载I2C设备,可通过i2cdetect扫描某个I2C线上的所有设备。...I2C外设 ​ 首先通过前面的介绍,我们已经知道站在cpu的角度来看,操作I2C外设实际上就是通过控制cpu中挂载该I2C外设的I2C控制器,而这个I2C控制器在linux系统中被称为“I2C适配器”,...而且众所周知,在linux系统中,每一个设备都是以文件的形式存在的,所以在linux中操作I2C外设就变成了操作I2C适配器设备文件。...Linux系统(也就是内核)为每个I2C适配器生成了一个主设备号为89的设备节点(次设备号为0-255),它并没有针对特定的I2C外设而设计,只是提供了通用的read(),write(),和ioctl(

3.3K31

Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备系统音量)

一、系统环境 操作系统: ubuntu 18.04 64位 二、查看系统有哪些声卡可用(麦克风和扬声器) 当系统下存在多个麦克风或者扬声器的时候,配置默认的设备是很有必要的。...-l 命令查看系统的扬声器音频输出设备 wbyq@wbyq:/proc/asound$ aplay -l **** PLAYBACK 硬體裝置清單 **** card 0: AudioPCI [Ensoniq...使用aplay -l和arecord -l命令可以查看系统的录音设备列表和扬声器设备列表。 为了测试当前我在电脑上插入了一个USB声卡设备。...五、设置系统默认的麦克风设备和扬声器设备 5.1 创建声卡配置文件 针对全局配置: 在/etc目录下创建文件asound.conf 针对指定用户配置: 在用户目录下创建文件.asoundrc 5.2...得到当前系统可用扬声器的设备名称: wbyq@wbyq:~$ cat /proc/asound/cards 0 [AudioPCI ]: ENS1371 - Ensoniq AudioPCI

15.1K20

LinuxI2C驱动框架分析

I2C总线、USB总线、PCI总线等等。以I2C总线为例,在同一组I2C线上连接着不同的I2C设备设备 设备代表真实的、具体的物理器件,在软件上用器件的独特的参数属性来代表该器件。...如I2C线上连接的I2C设备都有一个标识自己的设备地址,由这个设备地址来确定主设备发过来的命令是否该由它来响应。 驱动 简单的说驱动代表着操作设备的方式和流程。...Linux总线设备框架的工作原理 如果想要弄清楚I2C驱动框架,必须深刻的理解Linux的总线设备框架。之所以会形成这样的框架,很重要的原因是为了代码的复用性。...设备是存在的硬件,在设备里包含自己的属性,也包含需要用到的资源。 总线的作用就是在软件层面上对设备和驱动进行管理,设备要让系统感知到自己的存在,所以需要向总线去注册设备,驱动同样也要向总线去注册。...3.LinuxI2C驱动程序的体系结构 ---- 对于Linux下的I2C驱动,其体系结构的组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法

4.5K11

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设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。...主设备不驱动三极管 从设备决定数据,要发出回应信号的话,就驱动三极管让SDA变为0 从这里也可以知道ACK信号是低电平 从上面的例子,就可以知道怎样在一条线上实现双向传输,这就是SDA上要使用上拉电阻的原因

3K32

手把手教你使用 i2c-tools

i2c-tools 工具是一个专门调试 i2c 的,开源,可获取挂载的设备设备地址,还可以读写 I2C 设备寄存器。 调试新的设备驱动时,难免要反复修改寄存器,然后看结果现象。...i2cdetect:用于扫描 i2c线上设备,并显示地址 i2cset:设置i2c设备某个寄存器的值 i2cget:读取i2c设备某个寄存器的值 i2cdump:读取某个i2c设备所有寄存器的值...i2ctransfer:一次性读写多个字节 该工具原本是在 Linux 上使用,因为 Android 系统的内核也是 Linux,故很方便的可以移植到 Android 中。...如上图显示,在i2c0总线上,有三个器件,设备地址分别是:0x1b、0x40、0x41 ./i2cdetect -F i2cbus 查询总线的功能 ..../i2cdetect -l 检测当前系统有几组i2c总线 i2cset:向i2c设备某个寄存器写入值 Usage: i2cset [-f] [-y] [-m MASK] [-r] [-a] I2CBUS

2K11

Linux系统下怎样统计出文本内的字符数

这篇文章主要介绍“在Linux系统下怎样统计出文本内的字符数”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“在Linux系统下怎样统计出文本内的字符数”文章能帮助大家解决问题...1、启动Linux系统,用SecureCRT(或者其他的ssh工具,如xshell等)连上Linux系统。也可以在Linux操作系统上直接操作,在Linux系统上打开终端。   ...2、在终端输入wc,看Linux系统上是否安装过wc命令(若没有安装wc名,请百度wc怎么安装,一般Linux系统是自带该命令的)。...在终端输入wc命令之后,出现如图所示的,表示Linux系统安装过wc命令。   3、统计文件行数。以统计系统install.log文件行数为例。...以上就是关于“在Linux系统下怎样统计出文本内的字符数”的介绍了,感谢各位的阅读。

2.5K20

I2C spec 总结

一般认为 I2C线上,低于 0.3Vdd 为低电平,高于 0.7Vdd 为高电平。 I2C 协议中每个挂到总线上设备都有独一无二的静态设备地址。...上层如何处理,是上层的事情,芯片设计时 I2C 外设控制器一定会在这个时候产生一个 ACK error。如果用的是 Linux 操作系统,可以配置在上层忽略最后的这个 ACK error 。...(如果 I2C线上有多个主机,则不用再一次仲裁,节省时间) 另外,在 Linux 系统中,由于 i2c_msg 结构体的规定,单笔 I2C 传输最大 64KB,超过 64KB 也要再来一次 STOP...主机从从机读数据 10、补充 I2C 不支持从设备在 SCL 和 SDA 总线上发起一个中断,通知主设备来读数据。...这时,从设备会主动控制时钟线把它拉低!直到数据准备好之后再释放时钟线,把控制权交还给 MASTER。这也是 I2C 通信系统中,从机唯一能控制总线的时候!

1K10

Linux驱动:你应该先了解驱动模型

注:代码分析基于linux-5.4.31 为啥要驱动模型 随着系统结构演化越来越复杂,Linux内核对设备描述衍生出一般性的抽象描述,形成一个分层体系结构,从而引入了设备驱动模型。...特别是,英特尔和微软规定的模型(即ACPI)可确保与x86兼容的系统上几乎任何总线上的几乎所有设备都可以在此范式下工作。...用户空间访问:sysfs虚拟文件系统实现与设备模型对外的访问抽象,这也是为什么说Linux 设备也是文件的由来。.../include/linux/Device.h 定义设备驱动主要数据结构 bus_type:抽象描述总线类型,如USB/PCI/I2C/MMC等 device_driver:实现具体连接在总线上设备驱动...device:描述连接在总线上设备 ./include/linux/Kobject.h中定义了隐藏在后台的类似于基类的数据结构: kset:可以认为是kobject的顶层容器类。

3.2K10

I2C系统(七)

Linux 源码,目录/drivers/i3c/... https://elixir.bootlin.com/linux/latest/source Bus configuration I3C 不仅支持多个从设备...I3C 总线上可以支持的设备有: Main Master(当前主设备) Secondary master(辅助主设备) i3c Slave(i3c从设备i2c Slave(i2c设备) I3C...特性寄存器描述并定义了 I3C 兼容设备在 I3C 总线上的 capabilities 和 functions,没有 I3C 特性寄存器的设备不得连接到公共I3C总线。...I3C Address Header 支持带内中断 支持辅助主设备 支持热拔插 (热插拔特性可以让i3c从设备在不工作时处理睡眠或者关闭状态,需使用时才挂载到总线上使用,进一步达到降低功耗的目的) I3C...,用于通知从属设备I3C总线上预期即将到来的活动级别: 总线初始化和动态地址分配模式 头地址是 7h7E(I3C 广播地址),所有的 I3C 从机将匹配 7h7E,任何的 I2C 从机设备将不会匹配此地址

1.2K20
领券