5 可编程中断
ICM-20602有一个可编程中断系统,该系统可以在INT和DRDY引脚上产生中断信号。状态标志表示中断的来源。中断源可以单独启用和禁用。
中断名称 | 模块 |
---|---|
运动检测 | 运动 |
FIFO溢出 | FIFO |
FIFO Watermark | FIFO |
数据准备就绪 | 传感器寄存器 |
注: 有关中断启用/禁用寄存器和标志寄存器的信息,请参阅本文件第11节和第12节。下面解释一些中断源。
5.1 唤醒运动中断
ICM-20602提供运动检测功能。限定运动样本是从任何轴的高通过样本具有超过用户可编程阈值的绝对值的一个样本。以下步骤说明如何配置唤醒运动中断。
步骤1:确保加速计正在运行
- 在PWR_MGMT_1寄存器(0x6B)中,设置CYCLE = 0, SLEEP = 0, GYRO_STANDBY = 0
- 在PWR_MGMT_2寄存器(0x6C)中,设置SSTBY_XA = STBY_YA = STBY_ZA = 0, STBY_XG = STBY_YG = STBY_ZG = 1
步骤2:加速计配置
- 在ACCEL_CONFIG2寄存器(0x1D)中,设置ACCEL_FCHOICE_B = 1, A_DLPF_CFG[2:0] = 1 (b001)
步骤3:启用运动中断
- 在INT_ENABLE寄存器(0x38)中设置WOM_X_INT_EN = WOM_Y_INT_EN = WOM_Z_INT_EN = 1,以使能X、Y、Z轴的运动中断
步骤4:设置运动阈值
- 在CCEL_WOM_X_THR寄存器(0x20)中设置X轴的运动阈值
- 在CCEL_WOM_Y_THR寄存器(0x21)中设置Y轴的运动阈值
- 在CCEL_WOM_Z_THR寄存器(0x22)中设置Z轴的运动阈值
步骤5:设置中断模式
- 在ACCEL_INTEL_CTRL寄存器(0x69)中,清除(写0)第0位(WOM_TH_MODE)选择X,Y,Z轴的使能中断的或关系作为运动中断。置位(写1)第0位选择X,Y,Z轴的使能中断的与关系作为运动中断。
步骤6:启用加速计硬件智能
- 在ACCEL_INTEL_CTRL寄存器(0x69)中,设置ACCEL_INTEL_EN = ACCEL_INTEL_MODE = 1
步骤7:设置唤醒频率
- 在SMPLRT_DIV寄存器(0x19)中,设置SMPLRT_DIV[7:0]=3.9Hz–500Hz
步骤8:启用循环模式(加速计低功率模式)
- 在PWR_MGMT_1 寄存器(0x6B)中,设置CYCLE=1
6 数字接口
6.1 I2C和SPI接口
ICM-20602的内部寄存器和存储器可以使用400 kHz的I2C或10 MHz的SPI访问。SPI使用四线制模式。
管脚编号 | 管脚名称 | 管脚描述 |
---|---|---|
2 | SCL/SPC | I2C串口时钟(SCL);SPI串口时钟(SPC) |
3 | SDA/SDI | I2C串口数据(SDA);SPI串口数据输入(SDI) |
4 | SA0/SDO | I2C从地址LSB(SA0);SPI串口数据输出(SDO) |
5 | CS | 片选信号(0=SPI模式) |
注意: 为了防止在使用SPI时切换到I2C模式,应通过将I2C_IF_DIS 配置位设置为I2C_IF来禁用I2C接口。应在等待第3.3.2节“寄存器读/写启动时间”指定的时间后立即设置该位。有关I2C_IF_DIS位在I2C_IF寄存器的更多信息,请参阅本文件第10节和第11节。
6.2 I2C接口
I2C是一个由信号串行数据(SDA)和串行时钟(SCL)组成的双线接口。一般情况下,数据线是开漏和双向的。在通用的I2C接口实现中,连接的设备可以是主设备或从设备。主设备向总线发送从设备地址,预知匹配的从设备将响应主设备。
当与系统处理器通信时,ICM-20602始终作为从设备工作,因此系统处理器充当主设备。SDA和SCL线通常需要到VDD的上拉电阻。最大总线速度为400K Hz。
ICM-20602的从机地址是b110100X,长度为7位。7位地址的LSB位由引脚SA0上的逻辑电平决定。这允许两个ICM-20602连接到同一个I2C总线。在该配置中使用时,其中一个设备的地址应为b1101000(引脚SA0为逻辑低),另一个设备的地址应为b1101001(引脚SA0为逻辑高)。
6.3 I2C通信协议
启动(S)和停止(P)条件
当主机向总线发送启动条件(S)信号时,I2C总线启动。该信号定义为SDA线路的从高到低转换,而SCL线路为高(见下图)。总线被认为是繁忙的,直到主机在总线上设置了停止条件(P)信号,这被定义为SDA线路上的从低到高的转换,而SCL是高的(见下图)。
此外,如果重复发送启动(Sr)而不是停止条件,则总线仍处于忙碌状态。
数据格式/响应
I2C数据字节定义为8位长。对每次数据传输传输的字节数没有限制。传输的每个字节后面必须跟着一个确认(ACK)信号。确认信号的时钟由主机生成,而接收器通过在确认时钟脉冲的高部分下拉SDA并保持低电平来生成实际的确认信号。
如果从机正忙,并且在执行当前任务之前无法发送或接收另一字节的数据,则它可以保持SCL低,从而迫使主机进入等待状态。从机准备好后,恢复正常数据传输,并释放时钟线(参见下图)。
通信
在发送开始条件,系统开始通信后,主机发送一个7位从机地址,后跟第8位读/写位。读/写位指定主设备是接收数据还是写入数据。然后,主设备释放SDA线路并等待来自从设备的确认信号(ACK)。传输的每个字节后面必须跟一个确认位。确认信号为:从设备将SDA线拉低,并在SCL线的高时段保持低。数据传输总是由具有停止条件(P)的主机终止,从而释放通信线路。但是,主机可以重新生成一个启动条件(Sr),并在没生成停止条件(P)之前寻址另一个从机。当SCL为高时,SDA线上的从低到高的转换定义了停止条件。除启动和停止条件外,所有SDA变化应在SCL低时发生。
为了写入内部ICM-20602寄存器,主机发送开始条件,然后是I2C地址和写入位(0)。在第9个时钟周期(当时钟高时),ICM-20602确认传输。然后主机把寄存器地址(RA)放在总线上。在ICM-20602确认接收到寄存器地址后,主机将寄存器数据放到总线上。随后是ACK信号,数据传输可以由停止条件(P)结束。主机可以不发送停止信号而继续传输数据从而在最后ACK信号之后写入多个字节数据。在这种情况下,ICM-20602自动递增寄存器地址并将数据加载到适当的寄存器。下图显示了单字节和双字节写入序列。
单字节写入序列
突发写入序列
要读取内部ICM-20602寄存器,主机发送一个开始条件,然后是I2C地址和一个写入位,然后是要读取的寄存器地址。在接收到来自ICM-20602的ACK信号时,主机发送一个开始信号,然后是从机地址和读取位。结果,ICM-20602发送ACK信号和数据。通信以不确认(NACK)信号和来自主机的停止位结束。NACK的定义为SDA线在第9个时钟周期保持高电平。下图显示了单字节和双字节读取序列。
6.4 I2C 定义
信号 | 定义 |
---|---|
S | 开始条件:SDA在SCL为高的时候由高变低(下降沿) |
AD | 从机I2C地址 |
W | 写入位(0) |
R | 读取位(1) |
ACK | 响应:SDA为低电平且SCL在第九个时钟为高电平 |
NACK | 不响应:SDA保持为高在第九个时钟 |
RA | ICM内部寄存器地址 |
DATA | 发送或者接收的数据 |
P | 停止条件:当SCL为高的时候,SDA由低变高(上升沿) |
6.5 SPI接口
SPI是一个4线同步串行接口,使用两条控制线和两条数据线。在标准主从SPI操作期间,ICM-20602始终作为从设备工作。
对于主设备,串行时钟输出(SPC)、串行数据输出(SDO)和串行数据输入(SDI)在从设备之间共享。每个SPI从设备都需要主设备自己的芯片选择(CS)线。
CS在传输开始时变低(活动),在传输结束时变高(非活动)。一次只激活一条CS线路,确保在任何给定时间只选择一个从机。未选择的从设备的CS线保持高电平,使得其SDO线保持在高阻抗(high-z)状态,从而不干扰任何有源设备。
SPI操作特性
- 数据先传递MSB,后传递LSB
- 数据锁存在SPC的上升沿上
- 数据应该在SPC的下降沿上传输
- SPC的最大频率为10MHz。
- SPI读写操作在16个或更多时钟周期(两个或更多字节)内完成。第一个字节包含SPI地址,下一个字节包含SPI数据。第一个字节的第一位包含读/写位,并指示读(1)或写(0)操作,以下7位包含寄存器地址。在多字节读/写的情况下,数据是两个或更多字节。
- 支持单个或突发式读写。
.
7 串口接口配置
ICM-20602在其串行接口上支持I2C通信。ICM-20602的I/O逻辑级别设置为VDDIO。
下图描绘了ICM-20602的一个采样电路。它显示了相关的逻辑电平和电压连接。
来源:CSDN
作者:海洋想想
链接:https://blog.csdn.net/qq_17525633/article/details/103233572