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

BSP基础-GPIO I2C PMIC 简介

内部结构如下图:速率:普通模式:100kHz;快速模式:400kHz;高速模式:1.0MHZ,3.4MHz;I2C协议:SDA传输数据是大端传输,每次传输8bit,即一字节。...空闲状态I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。...I2C位传输SDA传输数据是大端传输,每次传输8bit,即一字节。地址会左移一位加上读写位发出去。注意停止位(master发送stop)(0:写;1:读)。...(写的ACK是0,读的ACK是1)若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程,如下所示:两个实践例子下图为失败时i2c波形,由波形可看出主机端发送完i2c从端地址...2 、I2C的起始信号在什么时候发生?3 、I2C完整传传输一个字节有多少bit?4 、PMIC的主要作用是什么?5、请说明BUCK和LDO的优缺点。

1.3K10

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.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

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

2.8K20

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

H7-TOOL的I2C接口方式脱机烧录操作方法,已经发布(2022-07-16)

通过Lua小程序,我们可以方便方便的在线方式做I2C接口方式固件烧录,也可以离线方式运行Lua小程序做烧录。 本次是说明是采用H7-TOOL的I2C接口连接我们V7板子做的操作说明。...要更新APP固件的I2C设备地址,我们设置为0x20,通信速度设置的100KHz。...【硬件接线】 H7-TOOL通过I2C接到V7板子的I2C接口上 【准备工作】 当前上位机还没有做专门的I2C接口脱机烧录一键下载界面,需要手动将Lua文件和app固件存到TOOL的eMMC...脱机烧录/app.bin" -- 表示I2C脱机烧录文件夹下存的文件 local filepath1 = "0:/H7-TOOL/Lua/I2C脱机烧录" -- 浏览I2C脱机烧录文件下存的文件.../* 这个函数在bsp.c文件。

32140

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.5K20

LinuxI2C驱动框架分析

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

4.5K11

嵌入式Linux系列第20篇:驱动编写入门

1.引言 很早之前就有网友建议写一篇关于Linux驱动的文章。...之所以拖到现在才写,原因之一是我之前没有在工作中遇到需要自己手动去写驱动的需求,主要是现在Linux内核驱动的支持已经比较完善了,另外一个原因是自己水平实在有限,不敢写驱动这个话题,Linux驱动里涉及到的东西太多了...由于板子上使用的是PE10和PE11,它们不是真正的I2C引脚,所以这里我们使用GPIO来模拟I2C时序。...第1步:写驱动文件,我们这里在驱动文件里放了三个文件,分别为mpu6050.c、mpu6050bsp.c和mpu6050bsp.h 其中mpu6050.c代码如下: #include"mpu6050bsp.h...mpu6050bsp.c由于内容较多,不把代码贴到这里了,大家一看就明白了,它就是用gpio来模拟i2c功能,实现寄存器操作功能。mpu6050bsp.h主要是相关寄存器定义。

2.4K30

BSP是啥?

BSP,全称是Board Support Package,其主要功能是: 发现硬件 提供初始化Board和控制Board的方法 准备操作系统运行时环境 主要由以下部分组成: 硬件配置数据 解析这些配置的代码...到了Vx7,BSP被大大简化,主要成分就是cdf和dts文件了 BSP的目的就是为了在特定的Board上更轻松地配置OS的Kernel。...有了BSP这个硬件相关层,就可以相对容易的在不同硬件之间进行OS的移植了。...因此,这才有了BSP工程师(底层工程师/驱动工程师)这个职位存在的必要 而要开发一个新的BSP,最重要的一点,是在已有BSP中找到一个接近的做为起点。...如果当前版本里,根本就没有与新Board相同CPU的BSP,那就得考虑换一个高版本的VxWorks了 一个好的BSP应该具有以下特性: 将特定于某个Board的代码与该处理器系列的所有Board之间共享的代码分开

3K10

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.2K20

2——Pinctrl子系统重要概念

让它们连接到I2C模块。...所以GPIO、I2C应该是并列的关系,它们能够使用之前,需要设置IOMUX。有时候并不仅仅是设置IOMUX,还要配置引脚,比如上拉、下拉、开漏等等。...术业有专攻,这些累活就让芯片厂家做吧──他们是BSP工程师。我们在他们的基础上开发,我们是驱动工程师。...开玩笑的,BSP工程师是更懂他自家的芯片,但是如果驱动工程师看不懂他们的代码,那你的进步也有限啊。 所以,要把引脚的复用、配置抽出来,做成Pinctrl子系统,给GPIO、I2C等模块使用。...BSP工程师要做什么?看下图: 等BSP工程师在GPIO子系统、Pinctrl子系统中把自家芯片的支持加进去后,我们就可以非常方便地使用这些引脚了:点灯简直太简单了。

66130
领券