当前位置: 首页 > news >正文

设备注册挂载流程(包含上电、使能、i2c通讯介绍)

目录

简介

上电时序

电压不同

时序不同

使能与复位

CLK时钟

I2C通讯

主从关系

识别设备

通讯格式

从设备无响应


简介

任何相对于主板芯片的外挂设备都需要一定的注册挂载流程

(外挂设备:比如摄像头、nfc芯片、显示屏等等)

设备的挂载则需要满足一定的顺序

  • 上电时序

普通的电灯可能通上5v电压就可以工作(不同的灯需要的消耗电压功率也是不一样)

但是大部分稍微有功能的设备上电的不单单是一个5v

电压不同

比如摄像头需要三个不通的电压,分别是IOVDD,DVDD,AVDD,每个电压的大小不一样,而且一定要按照厂家的要求进行供电,不能低也不能高。因为摄像头内部的电路会检测电压才能正常工作。

时序不同

除了电压不通,上电时序也不通(上电的时间顺序不一样),就像上面的图中一开始都是低电平也就是不供电,随着时间推移,IOVDD先开始上电,然后是DVDD,最后是AVDD。甚至每两个的时间间隔也是有严谨的要求的,在IOVDD上电后,DVDD必须在最低50us后才能上电,同理AVDD也要在50us后才能上电。

使能与复位

管脚定义

PWDN

RESET

具体名称

使能脚

复位脚

作用

上电后,控制设备状态

上电后,复位设备的状态

举例子

(实际参考具体的手册)

PWDN低电平:待机状态

PWDN高电平:工作状态

上次供电是工作状态,

reset后进入默认准备状态

CLK时钟

简称

CLK,MCLK

详称

英文clock的缩写,中文意思“时钟”;

mclk就是main clock,主时钟

简介

提供固定时间间隔且不间断的脉冲

(由低到高的电平)

作用

为摄像头等设备的内置芯片提供时间,设备按照时间工作

I2C通讯

缩写

SDA

SCL

称呼

数据脚

时钟脚

简介

传输数据

传输时钟(数据传输按照这个时钟进行)

主从关系

如图主设备上通过两根SDA和SCL可以挂着多个从设备。主芯片通过I2C 发起指令,其他从设备只需要应答,从设备不能发起指令。

识别设备

从设备这么多怎么识别呢?每个从设备都有自己的内置芯片,内置芯片会定义自己的id地址,比如A设备地址(address byte)是0x01,B设备地址是0x02;在主设备发起通讯,想要使用A设备,就通过SDA发送0x01 来通知A设备响应。

通讯格式

如图是SDA的数据传输格式,每次8bit的数据就要求从设备返回一个高电平或者低电平响应

(即正常的从设备在工作时,每次检测到SDA上有数据传输都应该给与回应)

其他数据介绍如下表

control byte

读写控制

通过0和1的高低电平区分读写操作

address byte

设备地址

从设备的地址,例如0x01 就发送00000001

control byte

读写控制

发送设备地址的同时,控制从设备

data byte

控制数据

发送具体的控制数据,比如下发指令打开摄像头

从设备无响应

在主设备需要从设备A时,会发送0x01,但是如果A设备没有ack响应,那么从设备没有正常工作,而没有正常工作的原因可能是:上电时序问题,复位脚信号、重置信号、时钟问题、还有主设备是否正常发送通讯信号,从设备是否正常工作等等。

ps:以上是daisy新整理的,如果有其他问题欢迎评论区共同探讨

相关文章:

  • 详解动态库静态库、动态链接静态链接
  • 1.5万字总结 Redis 常见面试题知识点
  • TCP/IP 网络模型有哪几层
  • JSP——分页查询
  • 经典算法之深度优先搜索(DFS)
  • Java EE|多线程之线程状态与线程安全
  • html实现酷炫的公司年会抽奖(附源码)
  • C# 实现为Tcp服务器设计访问黑名单、白名单
  • Esp8266+TFT太空人天气时钟
  • 【C++】STL六大组件之一——适配器(adapters)
  • 【网络攻击手段之----- DDOS攻击】
  • 【关于Linux中----进程间通信方式之管道】
  • C语言——指针面试题详解
  • Elasticsearch:运用 Go 语言实现 Elasticsearch 搜索 - 8.x
  • RepVGG:让VGG风格的ConvNets再次伟大
  • 【翻译】babel对TC39装饰器草案的实现
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • canvas绘制圆角头像
  • chrome扩展demo1-小时钟
  • codis proxy处理流程
  • echarts花样作死的坑
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Git学习与使用心得(1)—— 初始化
  • in typeof instanceof ===这些运算符有什么作用
  • Javascript Math对象和Date对象常用方法详解
  • Java小白进阶笔记(3)-初级面向对象
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux链接文件
  • PaddlePaddle-GitHub的正确打开姿势
  • React-redux的原理以及使用
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • zookeeper系列(七)实战分布式命名服务
  • 程序员最讨厌的9句话,你可有补充?
  • 创建一种深思熟虑的文化
  • 浮现式设计
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 理解在java “”i=i++;”所发生的事情
  • 如何设计一个微型分布式架构?
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 小李飞刀:SQL题目刷起来!
  • 一文看透浏览器架构
  • 移动端解决方案学习记录
  • 用Python写一份独特的元宵节祝福
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 阿里云ACE认证之理解CDN技术
  • 如何正确理解,内页权重高于首页?
  • ​queue --- 一个同步的队列类​
  • ​卜东波研究员:高观点下的少儿计算思维
  • (1)Android开发优化---------UI优化
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (定时器/计数器)中断系统(详解与使用)
  • (六)软件测试分工
  • (论文阅读30/100)Convolutional Pose Machines