Camera BSP之GPIO/I2C/PMIC简介

和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、GPIO介绍
二、I²C 总线概括
三、PMIC 概括
四、思考
一、GPIO介绍
GPIO:General Purpose Input Output (通用输入/输出)
GPIOs are I/O pins that provide peripheral connections to the MSM™ chipset.
GPIOs can be configured as a general purpose I/O pin or alternative functions.
GPIOs can act as an interrupt source.
In a multiprocessor MSM, GPIO pins can be controlled by any master

MSM GPIO 内部结构

二、I²C 总线概括
I²C 是Inter-Integrated Circuit的缩写,它是一种两线接口,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL)。
内部结构如下图:

速率:
普通模式:100kHz;
快速模式:400kHz;
高速模式:1.0MHZ,3.4MHz;
I2C协议:
SDA传输数据是大端传输,每次传输8bit,即一字节。
支持多主控(multimastering),任何时间点只能有一个主控。
总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.
系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定。
空闲状态
I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
起始位与停止位的定义:

起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。
停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。

I2C位传输
SDA传输数据是大端传输,每次传输8bit,即一字节。
地址会左移一位加上读写位发出去。注意停止位(master发送stop)(0:写;1:读)。
数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;(高电平时候数据采样)若SDA发生跳变,则用来表示一个会话的开始或结束。
数据改变:SCL为低电平时,SDA线才能改变传输的bit;

I2C应答信号:
Master每发送完8bit数据后等待Slave的ACK。
即在第9个clock,若从IC发ACK,SDA会被拉低。(写的ACK是0,读的ACK是1)
若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程,如下所示:

两个实践例子
下图为失败时i2c波形,由波形可看出主机端发送完i2c从端地址0x38后,从端未响应。

下面我们再看一下写成功时候的波形,由波形可看出i2c主机端发送从端地址0x38后,从端有ACK, 主机端继续发送要写入的寄存器地址0xA5, 从端ACK; 主机端继续发送写入寄存器的值0x03, 从端ACK。通信完成。

三、PMIC 概括
PMIC:Power Management IC(电源管理芯片)
包括以下主要功能
1) Input Power Management
2) Output Power Management
3) General Housekeeping
4) User Interfaces
5) IC-level Interfaces
6) PMIC Configurable I/Os
以PM8941为例,框图如下:

输入电源管理:
双充电和电压保护(OVP)
快速切换充电路径
自主充电
反向升压模块和效率
反向升压开关模式电池充电器(SMBB)架构和总结

SMBB Architecture:

SMBB的结构和特性总结
快速自动充电路径切换的双充电路径
USB充电的OVP是+30V,充电电压范围是4.35~9.5V。
DC充电路径集成了+15V的OVP,充电电压范围是4.5V~9.5V,还可以外扩OVP的FET达到+30V的保护
完全集成高效的开关模式充电器
高达3A的充电电流。
3.2MHz的开关频率。
1A时效率90%,2.5A时效率85%。
高电流压降补偿。
升压电路可提供2A的电流到Vchg
支持USB OTG,HDMI开关,LED,flash LED。
Output Power Management Content:
输出包括多路降压BUCK和LDO供给不同的模块使用
BUCK电路如原理如下:

图中,VIN为输入电压,VOUT为输出电压,L为储能电感,VD为续流二极管,C为滤波电容,R1、R2为分压电阻,经分压后产生误差反馈信号FB,用以稳定输出电压和调输出电压的高低。电源开关管V既可采用N沟道绝缘栅场效应管(MOSFET),也可采用P沟道场效应管,当然也可用NPN型晶体管或PNP型晶体管,实际应用中,一般采用P沟道场效应管居多。
降压式DC/DC变换器的基本工作原理是:V开关管在控制电路的控制下工作在开关状态。开关管导通时,VIN电压经开关管S、D极、储能电感L和电容C构成回路,充电电流不但在C两端建立直流电压,而且在储能电感L上产生左正、右负的电动势;开关管截止期间,由于储能电感L中的电流不能突变,所以,L通过自感产生右正、左负的脉冲电压。于是,L右端正的电压→滤波电容C一续流二极管VD→L左端构成放电回路,放电电流继续在C两端建立直流电压,C两端获得的直流电压为负载供电。因此,降压式DC/DC变换器产生的输出电压不但波纹小,而且开关管的反峰电压低。
高通PMU采用同步整流技术,利用导通电阻很低的专用功率MOS管来取代整流二极管,可以降低整流损耗,能大大提高DC/DC的效率。要求MOS管的G极电压和被整流的电压相位要同步,所以称为同步整流。当输出电压降低时,二极管的正向压降就变得很重要,因为这个电压很难降到0.3V以下,会大大影响转换效率。采用导通电阻很低的功率MOS管,在MOS管上损耗的压降会比二极管小很多,大大提高转换效率。
高通BUCK电路内部结构

LDO是low dropout regulator,意为低压差线性稳压器,是相对于传统的线性稳压器来说的。传统的线性稳压器,如78xx系列的芯片都要求输入电压要比输出电压高出2v~3V以上,否则就不能正常工作。但是在一些情况下,这样的条件显然是太苛刻了,如5v转3.3v,输入与输出的压差只有1.7v,显然是不满足条件的。针对这种情况,才有了LDO类的电源转换芯片。具有成本低,噪音低,静态电流小,需要的外接元件少等优点。缺点是效率偏低。LDO的输入电流基本上是等于输出电流,效率等于输出电压/输入电压,如果压降太大,损耗就很大。
LDO的基本电路如下:该电路由串联调整管VT、取样电阻R1和R2、比较放大器A组成。取样电压加在比较器A的同相输入端,与加在反相输入端的基准电压Uref相比较,两者的差值经放大器A放大后,控制串联调整管的压降,从而稳定输出电压。当输出电压Uout降低时,基准电压与取样电压的差值增加,比较放大器输出的驱动电流增加,串联调整管压降减小,从而使输出电压升高。相反,若输出电压Uout超过所需要的设定值,比较放大器输出的前驱动电流减小,从而使输出电压降低。

General Housekeeping:
HK/XO ADC circuits 如下图:
包括系统时钟和ADC

User interface
Light pulse generators(LPG)
RGB LED driver
flash driver
White LED support
Keypad interface
Vibration motor driver

IC-level Interfaces:
OPT hardware configuration controls
programmable boot sequence (PBS)
Poweron/poweroff sequence
Reset
Under-voltage lockout
Sudden momentary power loss (SMPL)
SPMI and interrupt managers
Modem power management support

PMIC Configurable I/Os
GPIO
MPP
四、思考
1、 高通的处理器GPIO可以设置成哪些模式?
2 、I2C的起始信号在什么时候发生?
3 、I2C完整传传输一个字节有多少bit?
4 、PMIC的主要作用是什么?
5、 请说明BUCK和LDO的优缺点。
来源: 影像技术栈
文章作者: Abalone
文章链接: https://camerastacker.com/2022/071028925.html
参考文献:
【腾讯文档】Camera学习知识库
https://docs.qq.com/doc/DSWZ6dUlNemtUWndv
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

点击阅读原文,为大佬点赞!
相关文章:
Camera BSP之GPIO/I2C/PMIC简介
和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、GPIO介绍二、IC 总线概括三、PMIC 概括四、思考 一、GPIO介绍 GPIO:General Purpose Input Output (通用输入/输出…...
Spring 数据校验:Validation
文章目录 Spring Validation概述实验一:通过Validator接口实现实验二:Bean Validation注解实现实验三:基于方法实现校验实验四:实现自定义校验 Spring Validation概述 在开发中,我们经常遇到参数校验的需求࿰…...
网页构造与源代码
下载google浏览器 设置打开特定网址:www.baidu.com 查看网页或元素源代码 网页右键选择“检查”查看源代码 网页源代码 元素源代码...
辅助驾驶功能开发-功能对标篇(14)-NOA领航辅助系统-集度
1.横向对标参数 厂商集度车型ROBO-01上市时间2023方案12V5R2L+1DMS摄像头前视摄像头3侧视摄像头4后视摄像头1环视摄像头4DMS摄像头1雷达毫米波雷达54D毫米波雷达/超声波雷达12激光雷达</...
论坛介绍 | COSCon'23 云计算(C)
众多开源爱好者翘首期盼的开源盛会:第八届中国开源年会(COSCon23)将于10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是:“开源:川流不息、山海相映”!各位新老朋友们,欢迎到成都&am…...
Spring 国际化:i18n
文章目录 i18n概述Java国际化Spring6国际化MessageSource接口使用Spring6国际化 i18n概述 国际化也称作i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户&…...
【APP源码】基于Typecho博客程序开发的博客社区资讯APP源码
全新博客社区资讯APP源码 Typecho后端 一款功能全面,用户交互良好,数据本地缓存,集成邮箱验证,在线投稿,(内置Mardown编辑器), 快捷评论的的博客资讯APP。同时兼容H5和微信小程序。 …...
Spring Security登录表单配置(3)
1、登录表单配置 1.1、快速入门 理解了入门案例之后,接下来我们再来看一下登录表单的详细配置,首先创建一个新的Spring Boot项目,引入Web和Spring Security依赖,代码如下: <dependency><groupId>org.sp…...
代理模式(初学)
代理模式 一、什么是代理模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问 二、简单例子 这里面的骏骏就起到了代理的身份,而贵贵则是被代理的身份。 三、代码实现 1、用一个接口(GivingGifts)来保存送礼物的动作…...
Spring底层架构核心概念
BeanDefinition BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如: class,表示Bean类型scope,表示Bean作用域,单例或原型等lazyInit:表示Bean是否是懒加载initMeth…...
为什么高精度机器人普遍使用谐波减速器而不是普通减速器?
机器人作为一种能够代替人类完成各种工作的智能设备,已经广泛应用于工业生产、医疗卫生、军事防卫等领域。其中,机器人的关节传动系统是机器人运动的核心,而减速器作为关节传动系统中的重要组成部分部分,对机器人的性能和技术水平…...
特殊类的设计
目录 一、设计一个类,不能被拷贝二、设计一个类,只能在堆上创建对象三、设计一个类,只能从栈上创建对象四、设计一个类,不能被继承五、设计一个类,只能创建一个对象(单例模式)5.1 饿汉模式5.2 懒…...
HTTP 协议的基本格式(部分)
要想了解HTTP,得先知道什么是HTTP,那么HTTP是什么呢?HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的 应用层协议。那什么是超文本呢?那就是除了文本,还有图片,声音,视频等。 …...
Android 第三方app https 抓包
工具选择 Charles 或 Fiddler 都可以 在PC上安装工具并进行设置 Charles Fiddler 设置按官网说明设置一下好。 Charles设置 Fiddler设置 Android Api Level > 24 SSL特殊设置 当Android 的 Api Level > 24时需要修改一下app的一起配置 1.在项目中添加 Android/src/…...
Linux-gitlab常用命令
gitlab常用命令 1、查看gitlab状态2、gitlab启动3、gitlab关闭 1、查看gitlab状态 gitlab-ctl status2、gitlab启动 gitlab-ctl start3、gitlab关闭 gitlab-ctl stop...
android 13.0 Settings主页动态显示和隐藏设置项(一级菜单显示和隐藏)
1.前言 在13.0定制化开发Settings时,有产品需求要求对主页设置项需要动态控制显示和隐藏,这就需要用定义两个页面来区分加载不同settings页面 接下来分析下相关的实现流程 实现思路: 1.用系统变量控制显示和隐藏某些项 2.增加一个自定义页面来适配不同页面 2.Settings主页动态…...
Android MJPEG播放器
MJPEG Android MJPEG播放 支持http mjpeg直播流播放; 支持编码MP4保存视频; 资源 名字资源jar下载GitHub查看Gitee查看 Maven 1.build.grade allprojects {repositories {...maven { url https://jitpack.io }} }2./app/build.grade dependencies {implementation com.g…...
Ubuntu - 安装 MySQL 8
以下是在 Ubuntu 上安装 MySQL 8 的完整步骤: 步骤 1:更新包列表 首先,打开终端并执行以下命令来确保包列表是最新的: sudo apt update 步骤 2:安装 MySQL 8 服务器 接下来,使用以下命令安装 MySQL 8 …...
谷歌浏览器跨域及--disable-web-security无效解决办法
谷歌浏览器跨域设置 (1)创建一个目录,例如我在C盘创建MyChromeDevUserData文件夹 (2) 在桌面选择谷歌浏览器右键 -> 属性 -> 快捷方式 -> 目标,添加--disable-web-security --user-data-dirC:\M…...
IT售前“楠“知识之这!就是售前-尚文网络xUP楠哥
进Q群11372462领取专属报名福利 !!! # 何为售前工程师 售前工程师在一个IT信息化团队中起到了呈上启下的绝对重要作用!站在销售团队的视角,需要售前工程师从技术维度支持销售业务的开展;站在对立面用户的…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
