功放ic总线工作原理视频 嵌入式arm学习之I²C总线

小编 2024-10-10 产品展示 23 0

嵌入式arm学习之I²C总线

嵌入式arm学习之I²C总线

cpu和外设常见的几种通信方式:GPIO/UART/I²C总线/1-Wire总线

今天学习I²C总线:

CPU和外设传输需要两根信号线,SDA数据线、SCL时钟控制信号线(数据同步)

SCL周期(频率)由外设决定

SDA和SCL分别外接两个上拉电阻,默认为高电平

CPU和外设数据通信只需要一根数据线,一个时钟周期传输一个bit位,cpu在SCL为低电平的时候将数据放到SDA上(拉高/拉低),外设在同周期的SCL为高电平的时候从SDA取出数据(判断高/低电平),低放高取

I²C总线数据传输从高位开始,一次传输一个子节

SDA和SCL这两根信号线上可以连接多个外设,也可以连接多个CPU,总线上的负载电容不超过400pF即可,跟硬件设计相关

优点:

节省CPU引脚资源

简化硬件设计

软件设计相对简单

开发周期短

成本降低

在手机中有一个PMIC芯片与CPU之间就是用的I²C,给LCD、WIFI、摄像头等供电

CPU如何找到需要访问的外设?

通过设备地址

CPU如何与外设进行数据传输?

SDA与SCL如何搭配使用?

在I²C外设的芯片手册中的时序图查找

相关概念:

START信号:起始信号,时序为SCL为高电平,SDA由高电平向低电平跳变,产生一个下降沿

STOP信号:结束信号,时序为SCL为高电平,SDA由低电平向高电平跳变,产生一个上升沿

读写位(R/W):表示CPU是读还是写,如果从外设读数据,R/W=1,如果向外设写入数据,R/W=0

如果传输数据时读写位发生改变,必须重发START和设备地址+读写位

设备地址:外设的唯一设备地址,通过原理图和芯片手册得到,有效位数为7位(居多)或10位(极少)

例如:LM77温度传感器

LM77设备地址=10010A1A0(A1A0为两个引脚)

假设硬件工程师将A1A0接地,1001000(二进制),0x48(十六进制,高位补0)

例如:MMA8653三轴加速度传感器

MMA8653设备地址=0x1D

例如:ADP8860背光灯控制芯片

ADP8860设备地址=0x2a

读设备地址:将设备地址<<1|1(R/W=1,表示读外设)

MMA8653的读设备地址=0x1D<<1|1=0x3B

写设备地址:将设备地址<<1|0(R/W=0,表示写外设)

MMA8653的写设备地址=0x1D<<1|0=0x3A

I²C总线规定传输一次一个子节,设备地址为7位,加一个读写位,正好一个子节

ACK信号:应答信号,有效位1位,低电平有效

I²C数据传输协议:

I²C总线接口的外设,芯片内部都集成一堆寄存器(片内寄存器),这些寄存器地址从0x00开始,本质就是CPU通过I²C总线访问寄存器,不能以指针的形式访问片内寄存器(片内寄存器地址不再CPU直接寻址的4G地址控件上),根据外设的时序来访问片内寄存器地址

看I²C外设芯片手册先找片内寄存器地址和片内寄存器BIT含义,再找片内寄存器的读写时序

例如:CPU读取LM77内某个寄存器2子节过程

打开LM77芯片手册第一个时序图:

CPU向总线发送START信号

发送LM77的设备地址和读写位1(0x48<<1|1)(1是读,0是写)

LM77接收到设备地址和读写位之后再第九个时钟周期给CPU一个有效的ACK信号

LM77将2子节数据中的高字节发送给CPU

CPU接收到数据后给LM77发送一个有效的ACK信号(第九个周期)

LM77将低字节字节发送给CPU

CPU接收到最后一个子节数据后,发送给LM77一个无效的ACK(高电平)

CPU发送一个STOP信号

例如:CPU读取MMA8653三周加速度传感器的ID为例,过程如下:

打开MMA8653芯片手册,得到MMA8653片内寄存器(设备ID)地址为0x0D,保存了MMA8653的ID(0x5A),读取即可

CPU向总线发送START信号

CPU向总线发送MMA8653得设备地址和读写位0(0x1D<<1|0)

MMA8653在第九个时钟周期给CPU发送一个有效的ACK

CPU向MMA8653发送要访问的片内寄存器地址0x0D

外设向CPU发送一个有效的ACK

CPU重新发送START,告诉外设,读写方向发生改变

CPU重新发送设备地址和读写位1(0x1D<<1|1)

外设给CPU发送ACK

外设将片内寄存器地址0x0D的内容发送给CPU

CPU发送无效ACK

CPU发送STOP信号

例如:CPU向HMC6352指南针传感器发送休眠指令‘S’,过程如下:

打开芯片手册,找到时序图:

CPU发送START

CPU发送0x21<<1|0

外设发送ACK信号

CPU发送休眠指令0x53('S')

外设发送ACK信号

CPU发送STOP信号

一张图讲透NVIC工作原理 #硬件工程师

一张图讲透 NVIC 工作原理。

1. 重点来了,NVIC 的工作原理。假如现在来了三个外部中断,它们都到达了 ISER 寄存器,每一位控制一个中断,只有被使能的才能通过,而外部中断 1 就没有被使能。

2. 接下来进入到了 IPR 寄存器,要进行优先级的比较了,要结合着优先级分组的设计来去看,后边优先级高的要先响应,这里外部中断 2 的优先级最高,它先响应,接下来是外部中断 3 响应。

3. 内核也是可以直接产生中断的,它的路径跟前面的外部中断不一样,会直接经过 SHPR,SHPR 和 IPR 是平级的,统一比较一下优先级,而它最后执行说明它的优先级最低。这就是 NVIC 的工作原理。

4. 真正编程的时候要找到对应的结构体的定义,对应上相应的寄存器。能够看到像 32 的代码当中有一个 NVIC 的结构体,这个结构体当中提到了 ISERICER IP,同时还能看到另外一个结构体 SCB,这里边有像分组寄存器包括 SHP。

5. 带大家简单的看一下,找一个跟中断相关的代码跟一下就可以了。这是设置有限级的,往里跟,它掉的是这样的一个神秘四的接口,继续跟,再跟,看到了 NVIC,终于找到了它的根源。

最后,给大家准备了 STM32 从环境搭建到项目实战的全套资料,还包括 5 种嵌入式经典总线协议的免费视频教程,需要的同学预约领取。

相关问答

视频如何通过CAN总线传输?

视频通过CAN总线传输的首要步骤是将视频数据分割成小包,并为每个包添加特定的包头信息,例如数据长度等。随后,将这些数据包发送到CAN总线上,其中每个数据包...

can芯片是什么意思?

can芯片也叫总线模块是一个比较模糊的概念,但凡是和CAN总线沾边,应用CAN总线进行通讯的设备,我们其实都可以称其为CAN总线模块。不过,一般情况情况下,我们更...

lvds通信接口详细介绍?

LVDS(LowVoltageDifferentialSignaling,即低电压差分信号)接口又称RS-644总线接口,是20世纪90年代才提出的一种数据传输和接口技术。LVDS接口是美国N...

电脑主板上的南北桥芯片作用?-Vvvvivian_rhyMe的回答-懂得

装模式最初采用BGA封装模式,到现在Intel的北桥芯片已经转变为FC-PGA封装模式,不过AMD处理器设计的主板北桥芯片到现在依然还使用传统德BGA...南桥...

blackberry8800插卡使用介绍

接口类型是指显卡与主板连接所采用的接口种类。显卡的接口决定着显卡与系统之间数据传输的最大带宽,也就是瞬间所能传输的最大数据量。不同的接口能...

中央处理器工作原理是什么?_其他_舒适100网触屏版

[回答]我来介绍CPU的工作原理浅析:一个完整的微型计算机系统包括硬件系统和软件系统两大部分。计算机硬件是指组成一台计算机的各种物理装置,它们是由各...

dsvb接口是什么?

你还可以上网玩游戏,很不错的海尔电视DSMB接口是模卡接口,模卡的接口界面是整个模卡系统最复杂的部分之一:它必须是高速总线接口,能够满足全高清信号传输的...

网络与总线技术?

总线技术就是将各部件连接到计算机处理器的一个元件。要连接的部件包括硬盘、内存、音响系统和视频系统等。例如,要查看计算机在做什么,一般是使用阴极射线管(...

汽车助力泵工作原理视频

[最佳回答]汽车助力泵的工作原理是汽车在转向时,转矩(转向)传感器会“感觉”到转向盘的力矩和拟转动的方向,这些信号会通过数据总线发给电子控制单元(查成交价...

英特尔HM77高速芯片组是什么?

尔HM75高速芯片组是移动式英特尔7系列芯片组家族的一个成员;它支持第二代和第三代智能英特尔酷睿处理器家族,目前用到的有HM77,HM76以及HM75.以下分别将...