一、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/transmitter1)开始并且设置主机发送模式。
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)
区别就是,我如果是写数据那么就可以直接写,数据
如果是主机去读数据,那么我要重新发一个起始信号,并设定主机作为接收器。
————————————————————