寄存器描述
寄存器名称 |
描述 |
偏移地址 |
宽度 |
属性 |
默认值 |
字段名称 |
字段范围 |
字段属性 |
字段默认值 |
字段释义 |
---|---|---|---|---|---|---|---|---|---|---|
FRAME_CTRL |
I2C帧控制寄存器 |
0x0000 |
32 |
RW |
0x00000019 |
reserved |
31:7 |
- |
0x0000000 |
reserved |
hs_mstcode_addr |
6:4 |
RW |
0x1 |
I2C高速模式下master code地址 |
||||||
restart_en |
3 |
RW |
0x1 |
是否允许主设备产生“重新开始”条件。 0:不允许; 1:允许。 |
||||||
slv_addr_10bit |
2 |
RW |
0x0 |
作为主设备时发出的地址位数。 0:7位地址; 1:10位地址。 |
||||||
speed_mode |
1:0 |
RW |
0x1 |
I2C设备的操作速度。 00:标准速度; 01:快速速度; 10:高速速度; 11:reserved。 |
||||||
SLV_ADDR |
I2C访问的目标设备地址寄存器 |
0x0004 |
32 |
RW |
0x00000055 |
reserved |
31:12 |
- |
0x00000 |
reserved |
gc_sbyte_en |
11 |
RW |
0x0 |
是否执行general call和start byte功能。 0:不执行; 1:执行。 |
||||||
gc_sbyte_mode |
10 |
RW |
0x0 |
当执行general call和start byte的功能时。 0:General call; 1:Start byte。 |
||||||
slv_addr |
9:0 |
RW |
0x055 |
Master访问的slave地址 7bit地址时:slv_addr[6:0]有效 10bit地址时:slv_addr[9:0]有效 |
||||||
CMD_TXDATA |
I2C设备的命令及TX数据控制寄存器 |
0x0008 |
32 |
RW |
0x00000000 |
reserved |
31:11 |
- |
0x000000 |
reserved |
sr_en |
10 |
RW |
0x0 |
该bit控制在1 byte数据被发送或接收前是否发送restart,restart_en为1是该位才有效。 0:如果restart_en为1,只有当传输方向从上一个命令改变时,才下发RESTART;当restart_en为0时,下发STOP+START。 1:如果restart_en为1,不管传输方向是否从上一个命令改变,则在发送/接收数据之前(根据CMD的值)发出RESTART,;如果restart_en为0,则发出一个STOP后接着一个START。 |
||||||
p_en |
9 |
RW |
0x0 |
该bit控制在1 byte数据被发送或接收后是否产生stop。 0:在该byte之后不发送stop; 1:在该byte之后发送stop; |
||||||
rnw |
8 |
RW |
0x0 |
读/写控制位。 0:写,表示I2C设备将要向I2C总线发送数据。此时低8bit是I2C设备要向I2C总线发送的数据; 1:读,表示I2C设备将要从I2C总线读回数据。 |
||||||
tx_data |
7:0 |
RW |
0x00 |
将要在I2C总线上发送的数据。 |
||||||
RXDATA |
I2C设备接收数据接口 |
0x000C |
32 |
RO |
0x00000000 |
reserved |
31:8 |
- |
0x000000 |
reserved |
rx_data |
7:0 |
RO |
0x00 |
接收数据端口 |
||||||
SS_SCL_HCNT |
I2C设备的分频数值寄存器。SS模式下SCL高电平周期数配置寄存器 |
0x0010 |
32 |
RW |
0x00000010 |
reserved |
31:16 |
- |
0x0000 |
reserved |
ss_scl_hcnt |
15:0 |
RW |
0x0010 |
标准速度下的SCL信号高电平的时钟周期数(core_clk周期)。对应产生的高电平周期数为ss_scl_hcnt + fs_spk_len + 7 |
||||||
SS_SCL_LCNT |
I2C设备的分频数值寄存器。SS模式下SCL低电平周期数配置寄存器 |
0x0014 |
32 |
RW |
0x000001D6 |
reserved |
31:16 |
- |
0x0000 |
reserved |
ss_scl_lcnt |
15:0 |
RW |
0x01D6 |
标准速度下的SCL信号低电平的时钟周期数(core_clk周期)。对应产生的低电平周期数为ss_scl_lcnt + 1 |
||||||
FS_SCL_HCNT |
I2C设备的分频数值寄存器。FS模式下SCL高电平周期数配置寄存器 |
0x0018 |
32 |
RW |
0x00000006 |
reserved |
31:16 |
- |
0x0000 |
reserved |
fs_scl_hcnt |
15:0 |
RW |
0x0006 |
快速速度下的SCL信号高电平的时钟周期数(core_clk周期)。对应产生的高电平周期数为fs_scl_hcnt + fs_spk_len + 7 |
||||||
FS_SCL_LCNT |
I2C设备的分频数值寄存器。FS模式下SCL低电平周期数配置寄存器 |
0x001C |
32 |
RW |
0x00000082 |
reserved |
31:16 |
- |
0x0000 |
reserved |
fs_scl_lcnt |
15:0 |
RW |
0x0082 |
快速速度下的SCL信号低电平的时钟周期数(core_clk周期)。对应产生的低电平周期数为fs_scl_lcnt + 1 |
||||||
HS_SCL_HCNT |
I2C设备的分频数值寄存器。HS模式下SCL高电平周期数配置寄存器 |
0x0020 |
32 |
RW |
0x00000006 |
reserved |
31:16 |
- |
0x0000 |
reserved |
hs_scl_hcnt |
15:0 |
RW |
0x0006 |
高速速度下的SCL信号高电平的时钟周期数(core_clk周期)。对应产生的高电平周期数为hs_scl_hcnt + hs_spk_len + 7 |
||||||
HS_SCL_LCNT |
I2C设备的分频数值寄存器。HS模式下SCL低电平周期数配置寄存器 |
0x0024 |
32 |
RW |
0x00000010 |
reserved |
31:16 |
- |
0x0000 |
reserved |
hs_scl_lcnt |
15:0 |
RW |
0x0010 |
高速速度下的SCL信号低电平的时钟周期数(core_clk周期)。对应产生的低电平周期数为hs_scl_lcnt + 1 |
||||||
FIFO_CTRL |
FIFO控制寄存器 |
0x0028 |
32 |
RW |
0x000004F0 |
reserved |
31:14 |
- |
0x00000 |
reserved |
tx_fifo_ae_thre |
13:8 |
RW |
0x04 |
tx fifo将空阈值 |
||||||
rx_fifo_af_thre |
7:2 |
RW |
0x3C |
rx fifo将满阈值 |
||||||
tx_fifo_clr |
1 |
RW |
0x0 |
tx_fifo清空寄存器,1有效,需配1再配0 |
||||||
rx_fifo_clr |
0 |
RW |
0x0 |
rx_fifo清空寄存器,1有效,需配1再配0 |
||||||
FIFO_STATE |
FIFO状态寄存器 |
0x002C |
32 |
RO |
0x0000030C |
fifo_state |
31:0 |
RO |
0x0000030C |
fifo状态 bit31~12:reserved bit11:tx_fifo_full bit10:tx_fifo_afull bit9:tx_fifo_empty bit8:tx_fifo_aempty bit7:tx_fifo_werror bit6:tx_fifo_rerror bit5:rx_fifo_full bit4:rx_fifo_afull bit3:rx_fifo_empty bit2:rx_fifo_aempty bit1:rx_fifo_werror bit0:rx_fifo_rerror |
SDA_HOLD |
I2C SDA HOLD时间控制寄存器 |
0x0030 |
32 |
RW |
0x00000001 |
reserved |
31:24 |
- |
0x00 |
reserved |
sda_hold_rx |
23:16 |
RW |
0x00 |
作为接收时,设置要求的SDA保持时间,单位为core_clk周期 |
||||||
sda_hold_tx |
15:0 |
RW |
0x0001 |
作为发送时,设置要求的SDA保持时间,以core_clk周期为单位 |
||||||
DMA_CTRL |
DMA模式控制寄存器 |
0x0034 |
32 |
RW |
0x00000000 |
reserved |
31:1 |
- |
0x00000000 |
reserved |
dma_en |
0 |
RW |
0x0 |
DMA模式使能控制 0:DMA不使能 1:DMA使能 |
||||||
FS_SPK_LEN |
在快速模式下,滤毛刺长度寄存器 |
0x0038 |
32 |
RW |
0x00000005 |
reserved |
31:8 |
- |
0x000000 |
reserved |
fs_spk_len |
7:0 |
RW |
0x05 |
以core_clk的cycle为准,Fast Speed模式下设置SCL和SDA中可被过滤毛刺的最长长度,配置为0时不滤波,支持最大为50ns |
||||||
HS_SPK_LEN |
在高速模式下,滤毛刺长度寄存器 |
0x003C |
32 |
RW |
0x00000001 |
reserved |
31:8 |
- |
0x000000 |
reserved |
hs_spk_len |
7:0 |
RW |
0x01 |
以core_clk的cycle为准,High Speed模式下设置SCL和SDA中可被过滤毛刺的最长长度,配置为0时不滤波,支持最大为10ns |
||||||
INT_CLR |
中断清除寄存器 |
0x0040 |
32 |
WC |
0x00000000 |
reserved |
31:1 |
- |
0x0000000 |
reserved |
tx_aempty_int |
0 |
WC |
0x0 |
tx fifo将空中断清除: 1:写1时清除中断; 0:中断不清楚。 |
||||||
INT_MSTAT |
中断屏蔽状态寄存器 |
0x0044 |
32 |
RO |
0x00000000 |
reserved |
31:5 |
- |
0x0000000 |
reserved |
tx_aempty_int_mstat |
4 |
RO |
0x0 |
tx fifo将空屏蔽后的中断状态: 1'b1:有中断; 1'b0:无中断; |
||||||
rx_afull_int_mstat |
3 |
RO |
0x0 |
rx fifo将满屏蔽后的中断状态: 1'b1:有中断; 1'b0:无中断; |
||||||
fifo_err_int_mstat |
2 |
RO |
0x0 |
fifo溢出屏蔽后的中断状态: 1'b1:有中断; 1'b0:无中断; |
||||||
trans_err_int_mstat |
1 |
RO |
0x0 |
传输错误屏蔽后的中断状态: 1'b1:有中断; 1'b0:无中断; |
||||||
trans_cmplt_int_mstat |
0 |
RO |
0x0 |
传输完成屏蔽后的中断状态: 1'b1:有中断; 1'b0:无中断; |
||||||
INT_CLR |
中断清除寄存器 |
0x0048 |
32 |
WC |
0x00000000 |
reserved |
31:4 |
- |
0x0000000 |
reserved |
rx_afull_int |
3 |
WC |
0x0 |
rx fifo将满中断清除: 1:写1时清除中断; 0:中断不清楚。 |
||||||
fifo_err_int |
2 |
WC |
0x0 |
fifo溢出中断清除: 1:写1时清除中断; 0:中断不清楚。 |
||||||
trans_err_int |
1 |
WC |
0x0 |
传输错误中断清除: 1:写1时清除中断; 0:中断不清楚。 |
||||||
trans_cmplt_int |
0 |
WC |
0x0 |
传输完成中断清除: 1:写1时清除中断; 0:中断不清楚。 |
||||||
INT_MASK |
中断屏蔽寄存器 |
0x004C |
32 |
RW |
0x00000001 |
reserved |
31:5 |
- |
0x0000000 |
reserved |
tx_aempty_int_mask |
4 |
RW |
0x0 |
tx fifo将空中断屏蔽位: 1'b0:中断屏蔽; 1'b1:中断不屏蔽; |
||||||
rx_afull_int_mask |
3 |
RW |
0x0 |
rx fifo将满中断屏蔽位: 1'b0:中断屏蔽; 1'b1:中断不屏蔽; |
||||||
fifo_err_int_mask |
2 |
RW |
0x0 |
fifo溢出中断屏蔽位: 1'b0:中断屏蔽; 1'b1:中断不屏蔽; |
||||||
trans_err_int_mask |
1 |
RW |
0x0 |
传输错误中断屏蔽位: 1'b0:中断屏蔽; 1'b1:中断不屏蔽; |
||||||
trans_cmplt_int_mask |
0 |
RW |
0x1 |
传输完成中断屏蔽位: 1'b0:中断屏蔽; 1'b1:中断不屏蔽; |
||||||
TRANS_STATE |
传输状态寄存器 |
0x0050 |
32 |
RO |
0x00000060 |
reserved |
31:7 |
- |
0x0000000 |
reserved |
scl_level |
6 |
RO |
0x1 |
SCL线电平状态 |
||||||
sda_level |
5 |
RO |
0x1 |
SDA线电平状态 |
||||||
mtc_st_curr |
4:0 |
RO |
0x00 |
MTC状态机当前状态 5'd0:IDLE 5'd1:发送START 5'd2:发送Master code 5'd3:读取tx fifo 5'd4:发送general call或start byte 5'd5:读取数据 5'd6:发送STOP 5'd7:发送7bit设备地址 5'd8:发送10bit设备地址first addr 5'd9:发送10bit设备地址second addr 5'd10:发送Repeat START 5'd11:发送写数据 5'd12:10bit地址模式下发送Repeat START 5'd13:7bit地址模式下发送Repeat START 5'd14:HS模式下发送Repeat START 5'd15:进入写数据hold状态 5'd16:进入读数据hold状态 |
||||||
TRANS_ERR |
传输错误寄存器 |
0x0054 |
32 |
RO |
0x00000000 |
trans_err_state |
31:0 |
RO |
0x00000000 |
传输过程中错误状态 bit31~11:reserved bit10:general call时接收到nack bit9:general call时为读命令 bit8:start byte时接收到ack bit7:start byte时未配置restart_en bit6:hs模式下未配置restart_en bit5:hs模式下发送完master code接收到ack bit4:发送7bit地址是接收到nack bit3:发送10bit first地址时接收到nack bit2:发送10bit second地址时接收到nack bit1:10bit地址模式下读未配置restart_en bit0:写数据时接收到nack |
I2C_VERSION |
版本寄存器 |
0x0058 |
32 |
RO |
0x00000030 |
i2c_version |
31:0 |
RO |
0x00000030 |
I2C版本寄存器 |