11.6.4. 寄存器描述
11.6.4.1. 0x000 I2C_CTL
默认值:0x0000006F |
I2C控制(I2C Control) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:12 |
- |
- |
- |
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: 7bit寻址模式
1: 10bit寻址模式
|
2 |
R/W |
0x1 |
10BITADDR_SELECT_MASTER
Master寻址bit选择
0: 7bit寻址模式
1: 10bit寻址模式
|
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.
|
11.6.4.2. 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时,无视此地址。
|
11.6.4.3. 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),其他时间写入无效。
|
11.6.4.4. 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地址后应答
|
11.6.4.5. 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
数据缓冲区
发送数据时,数据需写入此位段;接收数据时,数据亦接收
到此位段。
|
11.6.4.6. 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的数值无效。对于
APB_DATA_WIDTH=8的设计,需确定先写入低8位再写高8位。
计算方法:
标准速率SCL高电平最小时间:4000ns
标准速率SCL低电平最小时间:4700ns
快速SCL高电平最小时间:600ns
快速SCL低电平最小时间:1300ns
以快速模式为例
HCNT=600ns/I2C_clk_period
LCNT=1300ns/ I2C_clk_period
I2C_clk_period为I2C模块输入时钟周期
|
11.6.4.7. 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的数值无效。对于
APB_DATA_WIDTH=8的设计,需确定先写入低8位再写高8位。
计算方法:
标准速率SCL高电平最小时间:4000ns
标准速率SCL低电平最小时间:4700ns
快速SCL高电平最小时间:600ns
快速SCL低电平最小时间:1300ns
以快速模式为例
HCNT=600ns/I2C_clk_period
LCNT=1300ns/ I2C_clk_period
I2C_clk_period为I2C模块输入时钟周期
|
11.6.4.8. 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的数值无效。对于
APB_DATA_WIDTH=8的设计,需确定先写入低8位再写高8位。
计算方法:
标准速率SCL高电平最小时间:4000ns
标准速率SCL低电平最小时间:4700ns
快速SCL高电平最小时间:600ns
快速SCL低电平最小时间:1300ns
以快速模式为例
HCNT=600ns/I2C_clk_period
LCNT=1300ns/ I2C_clk_period
I2C_clk_period为I2C模块输入时钟周期
|
11.6.4.9. 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的数值无效。对于
APB_DATA_WIDTH=8的设计,需确定先写入低8位再写高8位。
计算方法:
标准速率SCL高电平最小时间:4000ns
标准速率SCL低电平最小时间:4700ns
快速SCL高电平最小时间:600ns
快速SCL低电平最小时间:1300ns
以快速模式为例
HCNT=600ns/I2C_clk_period
LCNT=1300ns/ I2C_clk_period
I2C_clk_period为I2C模块输入时钟周期
|
11.6.4.10. 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周期为单位
|
11.6.4.11. 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
|
11.6.4.12. 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: 中断未屏蔽
|
11.6.4.13. 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: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:1 |
- |
- |
- |
0 |
R/W1C |
0x0 |
CLR _RX_UNDER
0: 中断未激活
1: 写1清零
详细描述见I2C_INTR_STAT
|
11.6.4.14. 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。
|
11.6.4.15. 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 |
R/W |
0x0 |
TX_CMD_BLOCK
阻止数据传输控制
0: 一旦TX FIFO上的第一个数据可用,数据自动在总线上传输
1: 阻止I2C总线上的数据传输,即使TX FIFO有数据要传输
要阻止master命令的执行,仅当TX FIFO为空并且master处于空闲
状态时,才设置此位。若此位置1,不会执行TX FIFO中任何其他的
命令,直到此位置0
|
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使能
|
11.6.4.16. 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使能状态
|
11.6.4.17. 0x050 I2C_STATUS
默认值:0x00000006 |
I2C 状态(I2C Status) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:12 |
- |
- |
- |
11 |
R |
0x0 |
SDA_STUCK_NOT_RECOVERED
SDA挂死未恢复
0: SDA挂死触发恢复机制后未恢复
1: 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处于活跃状态
|
11.6.4.18. 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寻址模式发送第一个地址没有收到应答,
则生成停止操作
|
11.6.4.19. 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项的阈值
|
11.6.4.20. 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项的阈值
|
11.6.4.21. 0x098 I2C_TXFLR
默认值:0x00000000 |
I2C 发送FIFO水位(I2C Transport FIFO Level) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:3 |
- |
- |
- |
2:0 |
R |
0x0 |
TXFLR
显示发送FIFO数据量
|
11.6.4.22. 0x09C I2C_RXFLR
默认值:0x00000000 |
I2C 接收FIFO水位(I2C Receive FIFO Level) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:3 |
- |
- |
- |
2:0 |
R |
0x0 |
RXFLR
接收FIFO数据量
|
11.6.4.23. 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)可配置,其他时间写
入无效。
|
11.6.4.24. 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挂死恢复机制
|
11.6.4.25. 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
|
11.6.4.26. 0x0FC VERSION
默认值:0x00000100 |
I2C 版本号(VERSION) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
RO |
0x100 |
Version(模块版本号)
采用BCD码显示,V1.00
|