Edit online

寄存器描述

31 May 2024
Read time: 19 minute(s)

0x000 I2C_CTL

默认值:0x0000006F I2C 控制(I2C Control)
位域 类型 默认值 描述
31:11 - - -
10 R/W 0x0 BUS_CLEAR_FEATURE_CTL
总线清除控制
  • 0:BUS_CLEAR_FEATURE 禁止
  • 1:BUS_CLEAR_FEATURE 使能

此位置 1,SDA 挂死机制使能以及 SCL_STUCK_AT_LOW 中断可触发

仅 master 模式有效

9 R/W 0x0 RX_FIFO_FULL_HLD_CTL
RX_FIFO 满状态保持总线控制,仅在 master 模式下:
  • 0:RX_FIFO 满状态时数据溢出
  • 1:RX_FIFO 满状态时保持总线
8 R/W 0x0 TX_EMPTY_CTL
TX_EMPTY 中断控制
  • 0:TX_EMPTY 中断行为 0
  • 1:TX_EMPTY 中断行为 1
(详细描述见 I2C_INTR_STAT[4])
7 R/W 0x0 STOP_DET_IFADDRESSED
STOP_DET 中断控制,在 Slave 模式下:
  • 0:不管被寻址与否,都发出 STOP_DET 中断
  • 1:仅在被寻址时发出 STOP_DET 中断
注: 此位设为 1 时,且在 GEN_CALL 下,即使响应也不会发出 STOP_DET 中断
6 R/W 0x1 RESTART_ENABLE
重开始使能控制
  • 0:master RESTART 禁止

  • 1:master RESTART 使能

master 发送 RESTART 信号控制,一些旧 slave 设备不支持处理 RESTART 信号。当 RESTART 禁止时,master 被禁止执行以下功能:
  • 发送 START 字节

  • 使用 10bit 寻址模式进行读操作

5:4 R/W 0x2 SPEED_MODE_SELECT
速率模式选择
  • 1:标准模式(100Kb/s)

  • 2: 快速模式(<=400Kb/s)

此位只能写 1 或者 2。
3 R/W 0x1 10BITADDR_SELECT_SLAVE
Slave 被寻址 bit 选择
  • 0:7 bits 寻址模式

  • 1:10 bits 寻址模式

2 R/W 0x1 10BITADDR_SELECT_MASTER
Master 寻址 bit 选择
  • 0:7 bits 寻址模式

  • 1:10 bits 寻址模式

1 R/W 0x1 SLAVE_MODE_DISABLE
Slave 模式使能控制
  • 0:Slave 模式使能

  • 1:Slave 模式禁止

当 I2C_CTL[0]设置为 1 时,此位也需设置为 1。I2C_CTL [0]设置为 0 时,此位也设置为 0。

0 R/W 0x1 MASTER_MODE_ENABLE
Master 模式使能控制
  • 0:Master 模式禁止

  • 1:Master 模式使能

当 I2C_CTL [1]设置为 1 时,此位也需设置为 1。I2C_CTL [1]设置为 0 时,此位也设置为 0。

0x004 I2C_TAR

默认值:0x0000005A I2C 目标设备(I2C Target)
位域 类型 默认值 描述
31:12 - - -
11 R/W 0 GEN_CALL_CTL
  • 0:GEN_CALL 模式禁止

  • 1:GEN_CALL 模式使能

此位配 1,当 bit[10]为 0 时,master 进行广播模式寻址,无视 bit[9:0]中的目标地址,进行 GEN_CALL 模式,GEN_CALL 模式只允许进行写操作,尝试读操作会导致 TX_ABRT(I2C_INTR_STAT[6])中断产生。当 bit[10]为 1 时,start 字节使能时,master 先发起 start 字节,再进行目标寻址

10 R/W 0 START_BYTE_CTL
Start 字节控制
  • 0:start 字节禁止

  • 1:start 字节使能

9:0 R/W 0x5A I2C_TAR

目标地址

Master 依此目标地址寻址建立通信。如果 I2C_TAR 和 I2C_SAR 相同,则存在回环,但是 FIFO 在 master 与 slave 之间共享,因此双向传输是不可行的,只能单向传输。Master 不能传输数据给自己,只能传输给 slave。

当进行 GEN_CALL 时,无视此地址。

0x008 I2C_SAR

默认值:0x0000005A I2C 从机地址(I2C Slave Address)
位域 类型 默认值 描述
31:10 - - -
9:0 R/W 0x5A I2C_SAR

SLAVE 模式被寻址的地址

当为 7bit 寻址时,只有 bit[6:0]有效。此位仅在 I2C 禁止时可写(I2C_ENABLE[0]写 0),其他时间写入无效。

0x00C I2C_ACK_GEN_CALL

默认值:0x00000001 I2C 响应广播(I2C Acknowledge General Call)
位域 类型 默认值 描述
31:1 - - -
0 R/W 0x1 ACK_GEN_CALL
GEN_CALL 应答状态。
  • 0:接收到 GEN_CALL 地址后不应答

  • 1:接收到 GEN_CALL 地址后应答

0x010 I2C_DATA_CMD

默认值:0x00000000 I2C 数据命令(I2C Data Command)
位域 类型 默认值 描述
31:11 - - -
10 W 0x0 RESTART
重开始行为控制
  • 0:如果 RESTART_ENABLE(I2C_CTL[6]) 为 1,只有当传输方向与上一个传输命令的方向不同时,发出 RESTART 信号。如果 RESTART_ENABLE (I2C_CTL[6]) 为 0,则发送一个 STOP 信号然后接着一个 START 信号

  • 1:如果 RESTART_ENABLE(I2C_CTL[6]) 为 1,无论当前数据传输方向与上一个传输命令的方向是否相同,都会发出 RESTART 信号。如果 RESTART_ENABLE (I2C_CTL[6]) 为 0,则发送一个 STOP 信号然后接着一个 START 信号

9 W 0x0 STOP
STOP 命令控制
  • 0:一个 byte 传输完后不接着 STOP 信号

  • 1:一个 byte 传输完后接着 STOP 信号

8 W 0x0 CMD
操作命令,仅在 master 模式下有效
  • 0:Master 写操作命令

  • 1:Master 读操作命令

注: 如果在收到 RD_REQ 请求后此位写 1,则产生 TX_ABRT 中断。
7:0 R/W 0x0 DAT

数据缓冲区

发送数据时,数据需写入此位段。接收数据时,数据亦接收到此位段。

0x020 I2C_SS_SCL_HCNT

默认值:0x00000060 I2C 标准速度时钟高位计数(I2C Standard SCL High Count)
位域 类型 默认值 描述
31:16 - - -
15:0 R/W 0x60 I2C_SS_SCL_HCNT

标准速率模式下 SCL 高电平持续时间计数。

此位仅在 I2C 禁止时可写(I2C_ENABLE[0] 写 0),其他时间写入无效。最小值为 0x60,写入小于 0x60 的数值无效。

计算方法:
  • 标准速率 SCL 高电平最小时间:4000 ns

  • 标准速率 SCL 低电平最小时间:4700 ns

以标准速度模式为例:
  • SCL 高电平时间 = (I2C_SS_SCL_HCNT + I2C_FS_SPIKELEN + 8) * I2C_clk_period

  • I2C_clk_period 为 I2C 模块输入时钟周期

0x024 I2C_SS_SCL_LCNT

默认值:0x00000070 I2C 标准速度时钟低位计数(I2C Standard SCL Low Count)
位域 类型 默认值 描述
31:16 - - -
15:0 R/W 0x70 I2C_SS_SCL_LCNT

标准速率模式下 SCL 低电平持续时间计数。

此位仅在 I2C 禁止时可写(I2C_ENABLE[0] 写 0),其他时间写入无效。最小值为 0x70,写入小于 0x70 的数值无效。

计算方法:
  • 标准速率 SCL 高电平最小时间:4000 ns

  • 标准速率 SCL 低电平最小时间:4700 ns

以标准速度模式为例
  • SCL 低电平时间 = (I2C_SS_SCL_LCNT + 1) * I2C_clk_period

  • I2C_clk_period 为 I2C 模块输入时钟周期。

0x028 I2C_FS_SCL_HCNT

默认值:0x0000000F I2C 快速时钟高位计数(I2C Fast SCL High Count)
位域 类型 默认值 描述
31:16 - - -
15:0 R/W 0xF I2C_FS_SCL_HCNT

快速模式下 SCL 高电平持续时间计数。

此位仅在 I2C 禁止时可写(I2C_ENABLE[0]写 0),其他时间写入无效。最小值为 0xF,写入小于 0xF 的数值无效。

计算方法:
  • 快速 SCL 高电平最小时间:600ns

  • 快速 SCL 低电平最小时间:1300ns

以快速模式为例
  • SCL 高电平时间 = (I2C_FS_SCL_HCNT + I2C_FS_SPIKELEN + 8) * I2C_clk_period

  • I2C_clk_period 为 I2C 模块输入时钟周期

0x02C I2C_FS_SCL_LCNT

默认值:0x0000001F I2C 快速时钟低位计数(I2C Fast SCL Low Count)
位域 类型 默认值 描述
31:16 - - -
15:0 R/W 0x1F I2C_FS_SCL_LCNT

快速模式下 SCL 低电平持续时间计数。此位仅在 I2C 禁止时可写(I2C_ENABLE[0]写 0),其他时间写入无效。最小值为 0x1F,写入小于 0x1F 的数值无效。

计算方法:
  • 快速 SCL 高电平最小时间:600ns

  • 快速 SCL 低电平最小时间:1300ns

以快速模式为例
  • SCL 低电平时间 = (I2C_FS_SCL_LCNT + 1) * I2C_clk_period

  • I2C_clk_period 为 I2C 模块输入时钟周期

0x030 I2C_SDA_HOLD

默认值:0x00000001 I2C SDA 保持时间(I2C SDA Hold Time)
位域 类型 默认值 描述
31:24 - - -
23:16 R/W 0x0 I2C_SDA_RX_HOLD

I2C 接收时设置所需的 SDA 保持时间,以 I2C_clk 周期为单位

15:0 R/W 0x1 I2C_SDA_TX_HOLD

I2C 发送时设置所需的 SDA 保持时间,以 I2C_clk 周期为单位

0x034 I2C_SDA_SETUP

默认值:0x00000002 I2C SDA 建立时间(I2C SDA Setup Time)
位域 类型 默认值 描述
31:8 - - -
7:0 R/W 0x2 I2C_SDA_SETUP

SDA 设置时间,数值为(该值-1),以 I2C_clk 周期为单位。

如默认值为(2-1)个 cycle 建议如果需要延迟 1000ns,则对于 10Mhz 的 I2C,时钟频率此字段设为 11,此字段最小值设 2

0x038 I2C_INTR_MASK

默认值:0x000048FF I2C 中断屏蔽(I2C Interrupt Mask)
位域 类型 默认值 描述
31:15 - - -
14 R/W 0x1 M_SCL_STUCK_AT_LOW
  • 0:中断屏蔽

  • 1:中断未屏蔽

13 R/W 0x0 M_MASTER_ON_HOLD
  • 0:中断屏蔽

  • 1:中断未屏蔽

12 - - -
11 R/W 0x1 M_GEN_CALL
  • 0:中断屏蔽

  • 1:中断未屏蔽

10 R/W 0x0 M_START_DET
  • 0:中断屏蔽

  • 1:中断未屏蔽

9 R/W 0x0 M_STOP_DET
  • 0:中断屏蔽

  • 1:中断未屏蔽

8 R/W 0x0 M_ACTIVITY
  • 0:中断屏蔽

  • 1:中断未屏蔽

7 R/W 0x1 M_RX_DONE
  • 0:中断屏蔽

  • 1:中断未屏蔽

6 R/W 0x1 M_TX_ABRT
  • 0:中断屏蔽

  • 1:中断未屏蔽

5 R/W 0x1 M_RD_REQ
  • 0:中断屏蔽

  • 1:中断未屏蔽

4 R/W 0x1 M_TX_EMPTY
  • 0:中断屏蔽

  • 1:中断未屏蔽

3 - - -
2 R/W 0x1 M_RX_FULL
  • 0:中断屏蔽

  • 1:中断未屏蔽

1 - - -
0 R/W 0x1 M_RX_UNDER
  • 0:中断屏蔽

  • 1:中断未屏蔽

0x03C I2C_INTR_CLR

默认值:0x00000000 I2C 中断清除(I2C Interrupt Clear)
位域 类型 默认值 描述
31:15 - - -
14 R/W1C 0x0 CLR _SCL_STUCK_AT_LOW
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

13 R/W1C 0x0 CLR _M_MASTER_ON_HOLD
  • 0:中断未激活

  • 1:写 1 清零

12 - - -
11 R/W1C 0x0 CLR _GEN_CALL
  • 0:中断未激活

  • 1:写 1 清零

ACK 需持续一个 SCL 周期,在此期间无法对 GEN_CALL 中断清零详细描述见 I2C_INTR_STAT

10 R/W1C 0x0 CLR _START_DET
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

9 R/W1C 0x0 CLR _STOP_DET
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

8 R/W1C 0x0 CLR _ACTIVITY
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

7 R/W1C 0x0 CLR _RX_DONE
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

6 R/W1C 0x0 CLR _TX_ABRT
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

5 R/W1C 0x0 CLR _RD_REQ
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

4 R/W1C 0x0 TX_EMPTY
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

3 - - -
2 R/W1C 0x0 RX_FULL
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

1 - - -
0 R/W1C 0x0 CLR _RX_UNDER
  • 0:中断未激活

  • 1:写 1 清零

详细描述见 I2C_INTR_STAT

0x040 I2C_RAW_INTR_STAT

默认值:0x00000000 I2C 中断状态(I2C Interrupt Status)
位域 类型 默认值 描述
31:15 - - -
14 R 0x0 SCL_STUCK_AT_LOW
  • 0:中断未触发

  • 1:中断触发

指示 SCL 处于低电平的持续时间是否为 I2C_SCL_STUCK_TIMEOUT 设置的时间,需配置 I2C_CTL[10]为 1

13 R 0x0 MASTER_ON_HOLD
  • 0:中断未触发

  • 1:中断触发

指示 master 是否保持总线并且 TX FIFO 为空,硬件自动清零

12 - - -
11 R 0x0 GEN_CALL
  • 0:中断未触发

  • 1:中断触发

仅在接收到 GEN_CALL 地址并且回复 ACK 时触发。

10 R 0x0 START_DET
  • 0:中断未触发

  • 1:中断触发

指示 master 或者 slave 模式下,是否检测到一个 START 信号

9 R 0x0 STOP_DET
  • 0:中断未触发

  • 1:中断触发

指示 master 或者 slave 模式下,是否检测到一个 STOP 信号。

在 slave 模式下:当 I2C_CON[7](STOP_DET_IFADDRESSED)设为 1,中断 STOP_DET 仅在寻址模式下触发,GEN_CALL 模式下不触发。当 I2C_CON[7](STOP_DET_IFADDRESSED)设为 0,中断 STOP_DET 不管是否被寻址都会触发。

8 R 0x0 ACTIVITY
  • 0:中断未触发

  • 1:中断触发

指示 I2C 捕获活动状态并且一直保持为 1 直到被清零,清除此位有 3 种方式:
  • 关闭 I2C

  • I2C_INTR_CLR[8]写 1 清零

  • 系统复位

一旦此位被设为 1,即使 I2C 处于空闲状态,也会保持直到以上其中一种方式清零

7 R 0x0 RX_DONE
  • 0:中断未触发

  • 1:中断触发

当 I2C 作为 slave 发送数据时,若 master 不再回复一个 ACK,则此位设为 1。此中断在传输的最后一个字节发生,指示传输结束

6 R 0x0 TX_ABRT
  • 0:中断未触发

  • 1:中断触发

指示 I2C 作为发送者无法完成对发送 FIFO 内容的预期操作。master 和 slave 模式都可发生此中断。当此中断发生时,I2C_TX_ABRT_SOURCE 寄存器指示发生停止发送的原因

5 R 0x0 RD_REQ
  • 0:中断未触发

  • 1:中断触发

当此位设为 1 时,表明在 slave 模式下,master 设备在尝试读取 I2C 的数据。I2C 将总线保持为等待状态,直到此中断被服务,这意味这 slave 已经被 master 寻址。当中断发生时,处理器必须响应此中断,将请求的数据写入 I2C_DATA_CMD 寄存器。

4 R 0x0 TX_EMPTY
  • 0:中断未触发

  • 1:中断触发

TX_EMPTY_CTL 设为 0:当发送缓冲器小于等于 I2C_TX_TL 寄存器设定的阈值时,此位设为 1。

TX_EMPTY_CTL 设为 1:当发送缓冲器小于等于 I2C_TX_TL 寄存器设定的阈值时,并且最新命令的地址/数据从内部的移位寄存器传输完成,此位设为 1。

当缓冲器数据量超过 I2C_TX_TL 寄存器设定值硬件会自动清零。

3 - - -
2 R 0x0 RX_FULL
  • 0:中断未触发

  • 1:中断触发

当接收缓冲器达到或超过 I2C_RX_TL 寄存器设定的阈值时,此位设 1。当缓冲器深度低于阈值,硬件自动清零。

1 - - -
0 R 0x0 RX_UNDER(接收下溢出)
  • 0:中断未触发

  • 1:中断触发

如果接收缓冲器为空时,通过 I2C_DATA_CMD 读取数据则设为 1。

0x048 I2C_ENABLE

默认值:0x00000000 I2C 使能(I2C Enable)
位域 类型 默认值 描述
31:4 - - -
3 R/W 0x0 SDA_STUCK_RECOVERY_ENABLE

SDA 挂死恢复使能控制

  • 0: master 禁止 SDA 挂死恢复机制

  • 1: master 使能 SDA 挂死恢复机制

如果 SDA 挂死状态由 I2C_TX_ABRT_SOURCE[17] 指示的 TX_ABORT 中断,然后此位发起一个恢复机制,即发送 9 个 SCL 时钟和一个 STOP 信号释放 SDA 线,之后此位清零

2 - - -
1 R/W 0x0 ABORT,
传输停止控制
  • 0:不发起传输停止或者传输停止已完成

  • 1:停止正在进行的操作

软件设置此位可以停止 master 模式下的传输。只有在 ENABLE 设为 1 的情况下才能对此位操作,否则操作无效。一旦 ABORT 设为 1,软件则无法清除。响应一个 ABORT,控制器在当前传输完成后发出 STOP 信号并且冲刷 TX FIFO,然后在完成停止操作后设置 TX_ABORT 中断(I2C_INTR_STAT[6])

0 R/W 0x0 ENABLE
I2C 使能控制
  • 0:I2C 禁止

  • 1:I2C 使能

0x04C I2C_ENABLE_STATUS

默认值:0x00000000 I2C 使能状态(I2C Enable Status)
位域 类型 默认值 描述
31:3 - - -
2 R 0x0 SLV_RX_DATA_LOST
Slave 接收数据丢失。
  • 0:slave 接收数据不丢失

  • 1:slave 接收数据丢失

指示 slave 模式接收下是否由于 I2C_ENABLE[0]由 1 设为 0 导致至少一个数据丢失。

1 R 0x0 SLV_DISABLED_WHILE_BUSY
Slave 禁用时状态
  • 0:slave 活跃时禁用

  • 1:slave 空闲时禁用

指示由于 I2C_ENABLE[0]由 1 设为 0 时,导致活跃或者潜在的 slave 操作被停止。

0 R 0x0 I2C_EN_STATUS

I2C 使能状态

  • 0:I2C 禁止状态

  • 1:I2C 使能状态

0x050 I2C_STATUS

默认值:0x00000006 I2C 状态(I2C Status)
位域 类型 默认值 描述
31:12 - - -
11 R 0x0 SDA_STUCK_NOT_RECOVERED
SDA 挂死未恢复
  • 1:SDA 挂死触发恢复机制后未恢复

  • 0:SDA 挂死触发恢复机制后已恢复

此位仅在 master 模式有效,slave 模式无效

10 R 0x0 SLV_HOLD_RX_FIFO_FULL
Slave 因 RX FIFO 为满保持总线
  • 0:slave 未保持总线或者总线保持非因 RX FIFO 为满

  • 1:RX FIFO 为满,slave 保持总线

指示当 RX FIFO 为满并且接收额外的字节数据,slave 则保持总线停止接收。

9 R 0x0 SLV_HOLD_TX_FIFO_EMPTY
Slave 因 TX FIFO 为空保持总线
  • 0:slave 未保持总线或者总线保持非因 TX FIFO 为空

  • 1:TX FIFO 为空,slave 保持总线

指示当 slave 收到读请求而 TX FIFO 为空,slave 则保持总线直到 TX FIFO 有数据响应读请求

8 R 0x0 MST_HOLD_RX_FIFO_FULL
Master 因 RX FIFO 为满保持总线
  • 0:master 未保持总线或者总线保持非因 RX FIFO 为满

  • 1:RX FIFO 为满,master 保持总线

指示当 RX FIFO 为满并且接收额外的字节数据,master 则保持总线停止接收。

7 R 0x0 MST_HOLD_TX_FIFO_EMPTY
Master 因 TX FIFO 为空保持总线
  • 0:master 未保持总线或者总线保持非因 TX FIFO 为空

  • 1:TX FIFO 为空,master 保持总线

指示当 TX FIFO 为空并且最后一个字节数据没有 STOP 信号,master 则保持总线停止发送。
6 R 0x0 SLV_ACTIVITY
Slave 状态
  • 0:slave 空闲状态

  • 1:slave 活跃状态

当 slave 处于活跃状态,此位置 1
5 R 0x0 MST_ACTIVITY
Master 状态
  • 0:master 空闲状态

  • 1:master 活跃状态

当 master 有限状态机处于活跃状态,此位置 1
4 R 0x0 RFF(RX FIFO FULL)
接收 FIFO 为满状态标志
  • 0:接收 FIFO 非满

  • 1:接收 FIFO 为满

当接收 FIFO 包含一个或多个数据时,此位置为 0。FIFO 为满时为 1
3 R 0x0 RFNE(RX FIFO NOT EMPTY)
接收 FIFO 非空状态标志
  • 0:接收 FIFO 为空

  • 1:接收 FIFO 非空

当接收 FIFO 包含一个或多个数据时,此位置 1。FIFO 为空时清零
2 R 0x1 TFE(TX FIFO EMPTY)
发送 FIFO 为空状态标志
  • 0:发送 FIFO 非空

  • 1:发送 FIFO 为空

当发送 FIFO 为空时,此位置 1。当 FIFO 包含一个或多个数据时清零。此位不请求中断
1 R 0x1 TFNF(TX FIFO NOT FULL)
发送 FIFO 非满状态标志
  • 0:发送 FIFO 为满

  • 1:发送 FIFO 非满

当发送 FIFO 包含一个或多个数据时,此位置 1。FIFO 为满时清零
0 R 0x0 ACTIVITY
I2C 状态
  • 0:I2C 处于空闲状态

  • 1:I2C 处于活跃状态

0x054 I2C_TX_ABRT_SOURCE

默认值:0x00000000 I2C 发送停止源(I2C Transport Abort Source)
位域 类型 默认值 描述
31:23 R 0x0 TX_FLUSH_CNT。

此位域指示由于 TX_ABRT 中断而冲刷的 TX FIFO 数据命令数。

22:18 - - -
17 R 0x0 ABRT_SDA_STUCK_AT_LOW
  • 0:不生成停止操作

  • 1:生成停止操作。

仅在 master 模式有效,master 检测 SDA 持续低电平的时间超过 I2C_SDA_STUCK_TIMEOUT 设置的阈值

16 R 0x0 ABRT_USER_ABRT
  • 0:不生成停止操作

  • 1:生成停止操作。

仅在 master 模式有效,master 检测到传输中止 (I2C_ENABLE[1]),生成停止操作。

15 R 0x0 ABRT_SLVRD_INTX
  • 0:不生成停止操作

  • 1:生成停止操作。

Slave 模式下正在进行发送数据给远程 master,此时用户在 I2C_CMD_DATA[8] 写 1,则产生停止操作。

14 R 0x0 ABRT_SLV_ARBLOST
  • 0:不生成停止操作

  • 1:生成停止操作。

指示在向远程 master 传输时,slave 丢失总线,同时 I2C_TX_ABRT_SOURCE[12] 设 1,生成停止操作。

13 R 0x0 ABRT_SLVFLUSH_TXFIFO
  • 0:不生成停止操作

  • 1:生成停止操作。

指示 slave 已接收到读取命令,并且某些数据存在于 TX FIFO 中,因此 slave 发出 TX_ABRT 中断以刷新 TX FIFO 中的旧数据,则生成停止操作。

12 R 0x0 ABRT_LOST
  • 0:不生成停止操作

  • 1:生成停止操作。

指示 master 失去仲裁,或者设置了 I2C_TX_ABRT_SOURCE[14],则 slave 失去仲裁,生成停止操作

11 R 0x0 ABRT_MASTER_DIS
  • 0:不生成停止操作

  • 1:生成停止操作。

指示用户在 master 禁用的情况下发起一个 master 操作,则生成停止操作

10 R 0x0 ABRT_10B_RD_NORSTRT
  • 0:不生成停止操作

  • 1:生成停止操作。

    指示当 RESTART 禁止时(I2C_CTL[6]设 0),master 在 10bit 寻址模式发送一个读操作,则生成停止操作

9 R 0x0 ABRT_SBYTE_NORSTRT
  • 0:不生成停止操作

  • 1:生成停止操作。

指示在 RESTART 禁止时(I2C_CTL[6]设 0)用户发送一个 START 字节清除此位,需修复造成此位生成停止操作的源,RESTART 必须先使能(I2C_CTL[6]设 1),I2C_TAR[11]或者 I2C_TAR[10]必须清除。一旦此位的源被修复,此位就可以读取清零。若在修复源之前尝试读取此位清零,则此位在一个周期内清除,随后重新赋值

8 - - -
7 R 0x0 ABRT_SBYTE_ACKDET
  • 0:不生成停止操作

  • 1:生成停止操作。

指示 master 发送一个 START 字节并且被应答(错误行为),则生成停止操作

6 - - -
5 R 0x0 ABRT_GCALL_READ
  • 0:不生成停止操作

  • 1:生成停止操作。

指示 I2C 发送一个 GEN_CALL 但是紧接着用户进行一个读操作(I2C_DATA_CMD[8]写 1),则生成停止操作

4 R 0x0 ABRT_GCALL_NOACK
  • 0:不生成停止操作

  • 1:生成停止操作。

指示 master 模式发出一个 GEN_CALL,而总线上没有 slave 应答,则生成停止操作

3 R 0x0 ABRT_TXDATA_NOACK
  • 0:不生成停止操作

  • 1:生成停止操作。

仅在 master 模式,当发送一个地址并且收到应答,接着发送数据而没有收到应答,则生成停止操作

2 R 0x0 ABRT_10ADDR2_NOACK
  • 0:不生成停止操作

  • 1:生成停止操作。

仅在 master 模式,当 10bit 寻址模式发送第一个地址并且收到应答,接着发送第二个地址而没有收到应答,则生成停止操作

1 R 0x0 ABRT_10ADDR1_NOACK
  • 0:不生成停止操作

  • 1:生成停止操作。

仅在 master 模式,当 10bit 寻址模式发送第一个地址没有收到应答,则生成停止操作

0 R 0x0 ABRT_7B_ADDR_NOACK
  • 0:不生成停止操作

  • 1:生成停止操作。

仅在 master 模式,当 7bit 寻址模式发送第一个地址没有收到应答,则生成停止操作

0x090 I2C_RX_TL

默认值:0x00000000 I2C 接收阈值(I2C Receive Threshold)
位域 类型 默认值 描述
31:3 - - -
2:0 R/W 0x0 RX_TL

接收 FIFO 阈值深度

控制触发 RX_FULL 中断的数据数量,接收数据数量大于等于此值时触发。有效范围为 0-7,硬件不允许该值设置为大于缓冲寄存器的最大深度。值 0 设置 1 项的阈值,值 7 设置 8 项的阈值

0x094 I2C_TX_TL

默认值:0x00000000 I2C 发送阈值(I2C Transport Threshold)
位域 类型 默认值 描述
31:3 - - -
2:0 R/W 0x0 TX_TL

发送 FIFO 阈值深度

控制触发 TX_EMPTY 中断的数据数量,发送数据数量小于等于此值时触发。有效范围为 0-7,硬件不允许该值设置为大于缓冲寄存器的最大深度。值 0 设置 0 项的阈值,值 7 设置 7 项的阈值

0x098 I2C_TXFLR

默认值:0x00000000 I2C 发送 FIFO 水位(I2C Transport FIFO Level)
位域 类型 默认值 描述
31:4 - - -
3:0 R 0x0 TXFLR,显示发送 FIFO 数据量

0x09C I2C_RXFLR

默认值:0x00000000 I2C 接收 FIFO 水位(I2C Receive FIFO Level)
位域 类型 默认值 描述
31:4 - - -
3:0 R 0x0 RXFLR,接收 FIFO 数据量

0x0A0 I2C_SCL_STUCK_TIMEOUT

默认值:0xFFFFFFFF I2C SCL 挂死超时(I2C_SCL_STUCK_TIMEOUT)
位域 类型 默认值 描述
31:0 R/W 0xffff_ffff I2C_SCL_STUCK_TIMEOUT

SCL 挂死时间设置。

如果 I2C 检测 SCL 处于低的时间超过此位域设定的时间,则产生相应的中断(SCL_STUCK_AT_LOW)。仅在 I2C 禁止时(I2C_ENABLE[0] 设为 0)可配置,其他时间写入无效。

0x0A4 I2C_SDA_STUCK_TIMEOUT

默认值:0xFFFFFFFF I2C SDA 挂死超时(I2C_SDA_STUCK_TIMEOUT)
位域 类型 默认值 描述
31:0 R/W 0xffff_ffff I2C_SDA_STUCK_TIMEOUT

SCL 挂死时间设置。

如果 I2C 检测 SDA 处于低的时间超过此位域设定的时间,并且 I2C_ENABLE[3]设为 1,则触发 SDA 挂死恢复机制

0x0B0 I2C_FS_SPIKELEN

默认值:0x00000002 I2C 快速模式毛刺抑制时长(I2C_FS_SPIKELEN)
位域 类型 默认值 描述
31:0 R/W 0x2 I2C_FS_SPIKELEN

I2C FS 模式毛刺抑制寄存器。

此位设置 SCL 与 SDA 线持续抑制毛刺的最长时间,以 I2C_clk 周期为单位。

此位只有在 I2C_ENABLE[0]设为 0 时可配置,其他时间配置无效。此位最小值为 1,硬件会阻止写入小于此值的配置,即写 0 则此位会被设为 1

0x0FC VERSION

默认值:0x00000100 I2C 版本号(VERSION)
位域 类型 默认值 描述
31:0 RO 0x00000100 Version (模块版本号)

采用 BCD 码显示,V1.0