Camera BSP之GPIO/I2C/PMIC简介

3b154f0a282cfafcaddf09a2228f66d2.gif

和你一起终身学习,这里是程序员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

b82c2b2a882af3872e5b3c8097ffe80f.jpeg

  • MSM GPIO 内部结构

a6d29d875b8c91c67c47159bbb0090d5.jpeg

二、I²C 总线概括

  • I²C 是Inter-Integrated Circuit的缩写,它是一种两线接口,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL)。

    • 内部结构如下图:

c02b97ff4d256042e5a120c8d8d11adb.jpeg

  • 速率:

  • 普通模式:100kHz;

  • 快速模式:400kHz;

  • 高速模式:1.0MHZ,3.4MHz;

  • I2C协议:

  • SDA传输数据是大端传输,每次传输8bit,即一字节。

  • 支持多主控(multimastering),任何时间点只能有一个主控。

  • 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.

  • 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定。

  • 空闲状态

  • I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。

  • 起始位与停止位的定义:

5525779eb7f9085047ca1fadae8c4624.jpeg

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

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

81c163ea42823cfc37cb617da50ab442.jpeg

  • I2C位传输

  • SDA传输数据是大端传输,每次传输8bit,即一字节。

  • 地址会左移一位加上读写位发出去。注意停止位(master发送stop)(0:写;1:读)。

  • 数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;(高电平时候数据采样)若SDA发生跳变,则用来表示一个会话的开始或结束。

  • 数据改变:SCL为低电平时,SDA线才能改变传输的bit;

6bfd7c13f38bfb29fe8b39971a2eda1b.jpeg

  • I2C应答信号:

  • Master每发送完8bit数据后等待Slave的ACK。

  • 即在第9个clock,若从IC发ACK,SDA会被拉低。(写的ACK是0,读的ACK是1)

  • 若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程,如下所示:

  • 9d76ff1ecd5cd7a128326e6f4731cb41.jpeg

  • 两个实践例子

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

8936bf365e2424d7c6d8be929dc8299b.jpeg

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

2eccedfcb511560bb119ab8a000864de.jpeg

三、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为例,框图如下:

1b6fbb37eed0996cbb6388d184a7d98b.jpeg

  • 输入电源管理:

  • 双充电和电压保护(OVP)

  • 快速切换充电路径

  • 自主充电

  • 反向升压模块和效率

  • 反向升压开关模式电池充电器(SMBB)架构和总结

c49808a23e5f05e92215cb926143f9e2.jpeg

  • SMBB Architecture:

71d54089d960108f1b0db127fb5fba7e.jpeg

  • 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电路如原理如下:

7f45df3ac429b5326a74ab8efcad2b8c.jpeg

  • 图中,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电路内部结构

78c4022b3e1c93716cce3def36718e69.jpeg

  • LDO是low dropout regulator,意为低压差线性稳压器,是相对于传统的线性稳压器来说的。传统的线性稳压器,如78xx系列的芯片都要求输入电压要比输出电压高出2v~3V以上,否则就不能正常工作。但是在一些情况下,这样的条件显然是太苛刻了,如5v转3.3v,输入与输出的压差只有1.7v,显然是不满足条件的。针对这种情况,才有了LDO类的电源转换芯片。具有成本低,噪音低,静态电流小,需要的外接元件少等优点。缺点是效率偏低。LDO的输入电流基本上是等于输出电流,效率等于输出电压/输入电压,如果压降太大,损耗就很大。

  • LDO的基本电路如下:该电路由串联调整管VT、取样电阻R1和R2、比较放大器A组成。取样电压加在比较器A的同相输入端,与加在反相输入端的基准电压Uref相比较,两者的差值经放大器A放大后,控制串联调整管的压降,从而稳定输出电压。当输出电压Uout降低时,基准电压与取样电压的差值增加,比较放大器输出的驱动电流增加,串联调整管压降减小,从而使输出电压升高。相反,若输出电压Uout超过所需要的设定值,比较放大器输出的前驱动电流减小,从而使输出电压降低。

1f6559c16c1fc7b46d657cbda7f27ca2.jpeg

  • General Housekeeping:

  • HK/XO ADC circuits 如下图:

  • 包括系统时钟和ADC

c96a0c5f1b58415061d32d614667425a.jpeg

  • User interface

  • Light pulse generators(LPG)

  • RGB LED driver

  • flash driver

  • White LED support

  • Keypad interface

  • Vibration motor driver

e2202c7c85a8bef5b6332b8620d1d3cf.jpeg

  • 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

665ee63a4c41642a2125690414184f5d.jpeg

  • 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

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

a0b0734b364ac25bf62759334987b70d.jpeg

点击阅读原文,为大佬点赞!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/162542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【iOS】JSONModel的基本使用

文章目录 前言一、导入JSONModel二、JSONModel的基本使用1.基本用法2.模型集合3.模型导出为NSDictionary或JSON4.设置所有属性可选(所有属性值可以为空)5.下划线(蛇式)转驼峰命名法 前言 JSONModel 是一个用于 Objective-C 的开源库,它用于简…

(三十四)大数据实战——scala运行环境安装配置及IDEA开发工具集成

前言 本节内容我们主要介绍一下scala运行环境的安装配置以及在idea开发工具中集成scala插件,便于scala项目的开发。 在开始scala安装配置之前,我们要先安装好jvm运行环境,scala运行于Java虚拟机(JVM)上,并…

TCP/IP五元组

什么是五元组规则? 五元组是通信术语,英文名称为five-tuple,或5-tuple,五元组包括源IP地址(source IP)、源端口(source port)、目的IP地址(destination IP)、目的端口(destination port) 和 传输层协议(the layer 4 protocol)的五个量集合。…

【API篇】四、Flink物理分区算子API

文章目录 1、 分区算子:随机分区2、分区算子:轮询分区3、分区算子:重缩放分区4、分区算子:广播5、分区算子:全局分区6、自定义分区 重分区,即数据"洗牌",将数据分配到下游算子的并行子…

互联网Java工程师面试题·Java 总结篇·第八弹

目录 72、用 Java 的套接字编程实现一个多线程的回显(echo)服务器。 73、XML 文档定义有几种形式?它们之间有何本质区别?解析XML 文档有哪几种方式? 74、你在项目中哪些地方用到了 XML? 72、用 Java 的套…

如何注册微信小程序

如何注册微信小程序 前言 因为最近沉迷和朋友们一起下班去打麻将,他们推荐了一个计分的小程序,就不需要每局都转账或者用扑克牌记录了,但是这个小程序不仅打开有广告,各个页面都植入了广告,用起来十分不适。 于是我…

Freemarker快速入门(SpringBoot版)

文章目录 Freemarker快速入门1、Freemarker概述2、Freemarker初体验3、数据类型3.0 常见操作符3.1 数值类型3.2 字符串类型3.3 布尔类型3.4 日期类型3.5 序列类型3.6 哈希类型 4、运算符4.1 算术运算符4.2 逻辑运算符4.3 比较运算符4.4 空值运算符 5、常用指令5.1 assign 自定义…

热门影视APP系统源码 可二开 后端+app+搭建教程

影视APP源码绿豆二开版 后端app搭建教程都在压缩包里,搭建步骤和绿豆一样 安装宝塔 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 安装环境 Nginx 1.20.2 MySQL5.6-5.7 php7.0-7.…

使用 VS Code 作为 VC++ 6.0 的编辑器

使用 VS Code 作为 VC 6.0 的编辑器 由于一些众所周知的原因,我们不得不使用经典(过时)的比我们年龄还大的已有 25 年历史的 VC 6.0 来学习 C 语言。而对于现在来说,这个经典的 IDE 过于简陋,并且早已不兼容新的操作系…

tomcat、nginx实现四层转发+七层代理+动静分离实验

实验环境: nginx1——20.0.0.11——客户端 静态页面: nginx2——20.0.0.21——代理服务器1 nginx3——20.0.0.31——代理服务器2 动态页面: tomcat1——20.0.0.12——后端服务器1 tomcat2——20.0.0.22——后端服务器2 实验步骤&…

基于LSTM-Adaboost的电力负荷预测(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

基于SSM的仓库管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

什么是模拟芯片,模拟芯片都有哪些测试指标?

模拟芯片又称处理模拟信号的集成电路 模拟集成电路主要是指由电容、电阻、晶体管等组成的模拟电路集成在一起用来处理模拟信号的集成电路。有许多的模拟集成电路,如运算放大器、模拟乘法器、锁相环、电源管理芯片等。 模拟集成电路的主要构成电路有:放…

代理模式(初学)

代理模式 一、什么是代理模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问 二、简单例子 这里面的骏骏就起到了代理的身份,而贵贵则是被代理的身份。 三、代码实现 1、用一个接口(GivingGifts)来保存送礼物的动作…

一些bug总结

今天被几个小问题和bug折磨了一天,来总结一下… 权限问题 用vscode连接服务器,如果是在root用户连接的情况下新建的文件/文件夹,然后切换到别的用户的时候去写的代码 可能会遇到各种问题 解决方案是更改文件或文件夹的所有权。这可以通过使用…

win11 搭建Apache webdav 设置用户名密码 加密授权访问以及多个不同目录访问

Apache webdav 的搭建应该比较简单,但是搭建后还遇到了一些问题,也就是设置了访问用户名密码,咋就不生效呢,苦苦思索两日,终于发现了问题,本文就是分两个方面来编写 一、搭建 1.下载Apache 官网下载: https://www.apachehaus.com/cgi-bin/download.plx 2.下载后解压…

spring 资源操作:Resources

文章目录 Spring Resources概述Resource接口Resource的实现类UrlResource访问网络资源ClassPathResource 访问类路径下资源FileSystemResource 访问文件系统资源ServletContextResourceInputStreamResourceByteArrayResource Resource类图ResourceLoader 接口ResourceLoader 概…

6.DApp-用Web3实现前端与智能合约的交互

题记 用Web3实现前端与智能合约的交互&#xff0c;以下是操作流程和代码。 准备ganache环境 文章地址&#xff1a;4.DApp-MetaMask怎么连接本地Ganache-CSDN博客 准备智能合约 文章地址&#xff1a; 2.DApp-编写和运行solidity智能合约-CSDN博客 编写index.html文件 <!…

kubernetes

概述 K8S 是什么? K8S 的全称为 Kubernetes (K12345678S)&#xff0c;PS:“嘛&#xff0c;写全称也太累了吧&#xff0c;写”。不如整个缩 由来: K8S由coogle的Borg系统(博格系统&#xff0c;google内部使用的大规模容器编排工具)作为原型&#xff0c;后经GO语言延用Borg的…

python特别篇—github基本操作手册

一、开始使用 1.1 “Hello world” 1.1.1 github介绍 GitHub是一个基于Git版本控制系统的代码托管平台。它提供了一个在线的代码仓库&#xff0c;使开发者可以将自己的代码存储在云端&#xff0c;并与其他开发者进行协作。GitHub不仅仅是一个代码托管平台&#xff0c;还提供了…