一、Exynos4412下的控制器
(一)IIC中的寄存器
(二)IIC的特点
1、每个器件7bit地址。
2、标准模式下的最大通信速度100kbit/s,最快模式下的最大通信速度400kbit/s。
3、IIC支持主机发送、主机接收、从机发送、从机接收模式。
4、支持终端和轮询,发送完1字节数据会产生中断信号,通知接收方读取。
把要发送的数据放在I2CDS。
地址寄存器用于从机对比第一个字节中的地址。
例:主机发送
1、工作模式配置
2、写入从机地址
3、产生起始信号
4、发送从机地址
5、等待应答
6、判断是否继续通信
NO:
1)写入发送的1字节数据
2)清除中断挂起位
3)写入的1字节数据被发送
YES:
1)0xD0停止信号
2)清理中断挂起位
3)等待结束
主机接收
主控制器很少作为从机,一般4412做主机,其他传感器作为从机。
二、IIC寄存器详解
I2CADDn:作为从机时,设置地址
I2CLCn:滤波寄存器
(一)I2CCON
1、接收到外部信号后应答信号的产生
接收有意义
2、时钟选择
设置分频倍数,分频越高,通信速度越慢。
3、中断开关
发送和接收完1字节数据,都会产生中断信号
4、中断挂起标志位
只有打开标志位,这个寄存器才有作用,显示是否产生中断。
读走数据之后需要清零。
(二)I2CSTAT
1、设置输出模式
2、产生起始和停止信号
作为主机使用。
3、收发数据的开关
4、收发数据的状态-只读
(三) I2CADD
做从机时才有用,做主机时没有用。
三、MPU6050原理
4412与MPU6050通信
MPU6050主要作用是测量加速度和角速度
设置陀螺仪和加速度传感器
/****************MPU6050内部常用寄存器地址****************/
#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)
#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)
#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000°/s)
#define ACCEL_CONFIG 0x1C //加速计自检及测量范围及高通滤波频率,典型值:0x0(不自检,2G,5Hz)
#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define TEMP_OUT_H 0x41
#define TEMP_OUT_L 0x42
#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)
#define SlaveAddress 0x68 //MPU6050-I2C地址
存储x,y,z轴方向上的加速度
温度传感器:
存储x,y,z轴上的角速度
黑点是参考点
电源管理寄存器
地址寄存器
高低电平两种,防止一条总线不同硬件地址相同发生地址冲突,可以通过硬件配置修改地址。
四、MPU6050寄存器读写时序
(一)写入MPU6050
写MPU6050时序,MPU6050只能做从机。
RA:指定寄存器
(二)读取MPU6050
RA指定寄存器
五、作业
简述通过主机从MPU6050中的一个寄存器中读一个字节的数据的过程
1 主机(Exynos4412)发送起始信号
2 主机发送从机地址(MPU6050的地址)及读写方向(写)
3 从机(MPU6050)发送应答信号
4 主机发送一个字节数据(要写的寄存器的地址)
5 从机发送应答信号
6 主机(Exynos4412)发送起始信号
7 主机发送从机地址(MPU6050的地址)及读写方向(读)
8 从机(MPU6050)发送应答信号
9 从机发送一个字节数据(要读的寄存器中的数据)
10 主机发送非应答信号(不再接收更多的数据)
11 主机发送停止信号