ARMA9——IIC(二)

本文详细介绍了EXYNOS_4412芯片在I2C通信中的四种工作模式,包括主机发送和接收、从机发送和接收。并提供了配置I2C寄存器的步骤,涉及I2CCONn、I2CSTATn、I2CADDn和I2CDSn等关键寄存器。此外,还探讨了与MPU6050交互时的I2C通信流程,包括写入寄存器地址和读写数据的操作。
摘要由CSDN通过智能技术生成

一、IIC寄存器的配置
在这里插入图片描述
这是一个I2C总线的工作框图。
我们的4412芯片在有I2c总线通信有四种工作模式:
1)主机发送模式(Master Transmitter Mode):4412作为主机且是发送器
2) 主机接收模式(Master Receive Mode):4412作为主机且是接收器
3)从机发送模式(Slave Transmitter Mode):4412作为从机且是发送器
4)从机接收模式(Slave Receive Mode):4412作为从机且是接收器
一般我们都是工作在1,2种工作模式
我们来看一下
工作流程图:
1、master/transmitter在这里插入图片描述1)开始并且设置主机发送模式。
2)往I2CDS里面写我们要通信的从机地址
3)往I2CSTAT写0XF0(起始信号)
4)I2C的数据传送(一个字节,7位地址,0)
5)在应答信号后设置中断挂起位
6)判断是否需要停止通信(否)
7)写一个新的字节数据去发送在i2cds里面
8)清除中断挂起位
9)数据通过I2C SDA发送
循环:5~9
6)判断是否需要停止通信(是)
7)往I2CSTAT写一个0XD0(通信停止位)
8)清除中断挂起位
9)通信结束

2、Master Receive
在这里插入图片描述
1)开始设置主机接收模式
2)往I2CDS里面写我们要通信的从机地址
3)往I2CSTAT写0XB0(起始信号)
4)I2C的数据传送(一个字节,7位地址,0)
5)在应答信号后设置中断挂起位
6)判断是否需要停止通信(否)
7)读新的数据在I2CDS里面
8)清除中断挂起位
9)数据通过I2C SDA接收
循环:5~9
6)判断是否需要停止通信(是)
7)往I2CSTAT写一个0X90(通信停止位)
8)清除中断挂起位
9)通信结束

以上就是两种我们EXYNOS_4412在I2C通信下常用的工作模式
————————————————————————————
接下来我们配置i2c寄存器。
在这里插入图片描述
我们有8个IC2接口,要用那个就找到n为几。每个接口都有以上5个寄存器。
1)I2CCONn:I2C控制寄存器
在这里插入图片描述
[7]:I2C总线的应答信号的开关
[6]:时钟线时钟源的分频,影响通信速度(一个周期读写一位)
[5]:读写位的中断开关
[4]:中断挂起位,如果开了中断(5为1)就要设置
[3:0]设置分屏
2)I2CSTATn:状态控制寄存器
在这里插入图片描述
【7:6】:设置我们应该处于那种工作模式(四种中的一种)
【5】:繁忙状态
【4】:读写开启位
3:0:为一些只读的状态。
3)I2CADDn:写我们的作为从机时的地址
在这里插入图片描述
4)I2CDSn:I2C数据读写位
在这里插入图片描述
要发送数据就往这个寄存器写数据
要读数据,就直接从这里面读数据
————————————————————————————
我们做一个I2C读MPU6050的加速度,角速度的一个实验
在这里插入图片描述
这是我们实验中要用到的mpu6050中的寄存器,没写注释的是,三轴的角速度和加速度。
——————————————————————————
mpu6050的经典时序
在这里插入图片描述

在这里插入图片描述
与I2C总线标准不一样的是(一样的)它找完从机的地址还得找我要和从机的那个寄存器去通信(我从机有很多寄存器,我怎么知道你的数据发给哪里?)
所以无论是主机去读还是写数据,一开始都是主机作为发送器去写一个寄存器地址为(RA)
区别就是,我如果是写数据那么就可以直接写,数据
如果是主机去读数据,那么我要重新发一个起始信号,并设定主机作为接收器。
————————————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值