USER GUIDE / PERIPHERALS / SSI SLV / REGISTER DESCRIPTION

寄存器描述

SSI_SLV Control Register

SSLVCTRLBASE + 0x00
Bit313029282726252423222120191817161514131211109876543210
字段Is_cs_disLOOPcs_sw_enReservedTX_RDFLAGTX_WRFLAGTX_RDEMPTY_ER RTX_WRFULL_ERRTX_EMPTYTX_FULLRX_RDFLAGRX_WRFLAGRX_RDEMPTY_ER RRX_WRFULL_ERRRX_EMPTYRX_FULLRESETIRQCKG_MASKIRQ_MASKCPHACPOLTX_ENRX_EN
RST01000000000000000001111110000000
位名称说明RW
31Is_cs_dis选择位。
默认是0,选择使用cs 片选 0-使用硬件cs 片选,即cs低有效,高无效;
1-不使用cs片选;
RW
30LOOP回环模式。
非回环模式时,初始化前设为1,初始化结束设为0。
注:回环模式,因为从机不能自己产生时钟和片选,所以需主 机提供,即回环模式依然需要配置主机为接收或发送相同的数 据量来提供相应时钟和片选。
0-正常模式 1-回环模式
RW
29cs_sw_en0-默认,硬件控制cs片选;
1-软件控制cs,和is_dis_cs结合不使能硬件cs;
R
28:25Reserved写入无影响,读取为零。
24TX_RDFLAG发送读标志。
不关心,可先屏蔽掉,在未屏蔽时会引起总中断。
0-无 1-发送读标志
R
23TX_WRFLAG发送写标志。
响应DMA请求。
在未屏蔽时会引起总中断。
当SSLVFLR[7:0]tx_unfill_data>
SSLVTXC[7:0]tx_wrthr时, SSLVCTRL[23]tx_wrflag置1,触发tx_dma_req。
0-无 1-发送写标志
R
22TX_RDEMPTY_ER R发送读空错误。
fifo空了,继续读。
在未屏蔽时会引起总中断。
0-无错误 1-错误
R
21TX_WRFULL_ERR发送写满错误。
fifo满了,继续写。
在未屏蔽时会引起总中断。
0-无错误 1-错误
R
20TX_EMPTY发送fifo空。
0-不空 1-空
R
19TX_FULL发送fifo满。
0-不满 1-满
R
18RX_RDFLAG接收读标志。
响应DMA请求。
在未屏蔽时会引起总中断。
当 SSLVFLR[15:8]rx_fifo_data >
SSLVRXC[15:8]rx_rdthr 时,SSLVCTRL[18]rx_rdflag置1,触发rx_dma_req。
0-无 1-接收读标志
R
17RX_WRFLAG接收写标志。
不关心,可先屏蔽掉,在未屏蔽时会引起总中断。
0-无 1-接收写标志
R
16RX_RDEMPTY_ER R接收读空错误。
fifo空了,继续读。
在未屏蔽时会引起总中断。
0-无错误 1-错误
R
15RX_WRFULL_ERR接收写满错误。
fifo满了,继续写。
在未屏蔽时会引起总中断。
0-无错误 1-错误
R
14RX_EMPTY接收fifo空。
0-不空
R
13RX_FULL接收fifo满。
0-不满 1-满
R
12:7RESET复位计数器。
范围为0~63,对应的复位时间=设定值*1/fclk,例如,复位设定 值 是 10 , pclk 的 频 率 为 100Mhz , 则 复 位 耗 时 =10*1/100000000=100ns。
00_0000 0-bit 00_0001 1-bit 00_0010 2-bit 00_0011 3-bit ...... 11_1110 62-bit 11_1111 63-bit
RW
6IRQ总中断。
由每个独立的中断的状态决定是否为置1,硬件置1,不会硬件 自动清零,需手动清零。
若手动置1,不能使各个独立中断置1;
清零也不能清除独立中断。
触发总中断的条件是独立中断被触发,rx_wrfull_err, rx_rdempty_err , rx_wrflag , rx_rdflag ;
tx_wrfull_err , tx_rdempty_err,tx_wrflag,tx_rdflag(在未屏蔽情况下)。
0-清总中断 1-读取时,指示总中断的状态为1;
不建议写1。
RW
5CKG_MASK时钟屏蔽。
0-不屏蔽 1-屏蔽
RW
4IRQ_MASK总中断屏蔽。
0-不屏蔽 1-屏蔽
RW
3CPHA串行时钟相位。
串行时钟相位的选择与spimaster有关. 0-串行时钟在第一个数据位的中间翻转
RW
2CPOL串行时钟极性。
表示在空闲状态下串行时钟的电平 SSI_SLV 的 CPOL 与 spi master保持一致。
0-串行时钟在空闲状态下电平为低 1-串行时钟在空闲状态下电平为高
RW
1TX_EN发送使能。
在设置完所有寄存器以后再使能。
0-不使能 1-使能
RW
0RX_EN接收使能。
在设置完所有寄存器以后再使能。
0-不使能 1-使能
RW

SSI_SLV Receive Control Register

SSLVRXCBASE + 0x04
Bit313029282726252423222120191817161514131211109876543210
字段RX_EMPTY_IRQ_MAS KRX_FULL_IRQ_MASKRX_RDFLAG_IRQ_MA SKRX_WRFLAG_IRQ_M ASKRX_RDEMPTY_ERR_I RQ_MASKRX_WRFULL_ERR_IR Q_MASKRX_CHANNELRX_ENDIANRX_BITWIDTHRX_RDTHRRX_WRTHR
RST00000000000000000000000000000000
位名称说明RW
31RX_EMPTY_IRQ_MAS K接收空中断屏蔽。
无作用。
屏蔽只会使接收空中断不会产生总中断,不会清除接收空中 断。
0-不屏蔽 1-屏蔽
RW
30RX_FULL_IRQ_MASK接收满中断屏蔽。
无作用。
屏蔽只会使接收满中断不会产生总中断,不会清除接收满中 断。
0-不屏蔽 1-屏蔽
RW
29RX_RDFLAG_IRQ_MA SK接收读标志中断屏蔽。
屏蔽只会使接收读标志中断不会产生总中断,不会清除接收 读标志中断。
0-不屏蔽 1-屏蔽
RW
28RX_WRFLAG_IRQ_M ASK接收写标志中断屏蔽。
屏蔽只会使接收写标志中断不会产生总中断,不会清除接收 写标志中断。
0-不屏蔽 1-屏蔽
RW
27RX_RDEMPTY_ERR_I RQ_MASK接收读空错误中断屏蔽。
屏蔽只会使接收读空错误中断不会产生总中断,不会清除接 收读空错误中断。
0-不屏蔽 1-屏蔽
RW
26RX_WRFULL_ERR_IR Q_MASK接收写满错误中断屏蔽。
屏蔽只会使接收写满错误中断不会产生总中断,不会清除接 收写满错误中断。
0-不屏蔽 1-屏蔽
RW
25:24RX_CHANNEL接收通道。
00-单通道(标准SPI) 01-双通道(DualSPI) 10-四通道(QuadSPI) 11-Reserved
RW
23:22RX_ENDIAN接收大小端。
00-word中大端byte在前,byte中大端bit在前. 01-word中大端byte在前,byte中小端bit在前.
RW
21:16RX_BITWIDTH接收位长。
每个数据桢的位宽。
00_0000- 保留 00_0001- 保留 00_0010- 保留 00_0011- 保留 00_0100- 4-bit 数据长度 ...... 01_1111- 31-bit 数据长度 10_0000- 32-bit 数据长度
RW
15:8RX_RDTHR接收读阈值。
当SSLVFLR[15:8]rx_fifo_data>
SSLVRXC[15:8]rx_rdthr 时,SSLVCTRL[18]rx_rdflag置1,触发rx_dma_req。
0000_0000- 大于0个数据 0000_0001- 大于1个数据 0000_0010- 大于2个数据 0000_0011- 大于3个数据 ...... 111_1110- 大于126个数据
RW
7:0RX_WRTHR接收写阈值。
不关心。
0000_0000- 小于0个数据 0000_0001- 小于1个数据 0000_0010- 小于2个数据 0000_0011- 小于3个数据 ...... 111_1110- 小于126个数据 111_1111- 小于127个数据
RW

SSI_SLV Transmit Control Register

SSLVTXCBASE + 0x08
Bit313029282726252423222120191817161514131211109876543210
字段TX_EMPTY_IRQ_MA SKTX_FULL_IRQ_MAS KTX_RDFLAG_IRQ_M ASKTX_WRFLAG_IRQ_M ASKTX_RDEMPTY_ERR _IRQ_MASKTX_WRFULL_ERR_I RQ_MASKTX_CHANNELTX_ENDIANTX_BITWIDTHTX_RDTHRTX_WRTHR
RST00000000000000000000000000000000
位名称说明RW
31TX_EMPTY_IRQ_MA SK发送空中断屏蔽。
无作用。
屏蔽只会使发送空中断不会产生总中断,不会清除发送空中 断。
0-不屏蔽 1-屏蔽
RW
30TX_FULL_IRQ_MAS K发送满中断屏蔽。
无作用。
屏蔽只会使发送满中断不会产生总中断,不会清除发送满中 断。
0-不屏蔽 1-屏蔽
RW
29TX_RDFLAG_IRQ_M ASK发送读标志中断屏蔽。
屏蔽只会使发送读标志中断不会产生总中断,不会清除发送 读标志中断。
0-不屏蔽 1-屏蔽
RW
28TX_WRFLAG_IRQ_M ASK发送写标志中断屏蔽。
屏蔽只会使发送写标志中断不会产生总中断,不会清除发送 写标志中断。
0-不屏蔽 1-屏蔽
RW
27TX_RDEMPTY_ERR _IRQ_MASK发送读空错误中断屏蔽。
屏蔽只会使发送读空错误中断不会产生总中断,不会清除发 送读空错误中断。
0-不屏蔽 1-屏蔽
RW
26TX_WRFULL_ERR_I RQ_MASK发送写满错误中断屏蔽。
屏蔽只会使发送写满错误中断不会产生总中断,不会清除发 送写满错误中断。
0-不屏蔽 1-屏蔽
RW
25:24TX_CHANNEL发送通道。
00-单通道(标准SPI) 01-双通道(Dual SPI) 10-Reserved 11-Reserved
RW
23:22TX_ENDIAN发送大小端。
00-word中大端byte在前,byte中大端bit在前. 01-word中大端byte在前,byte中小端bit在前. 10-word中小端byte在前,byte中小端bit在前. 11-word中小端byte在前,byte中大端bit在前. 例如,当为32bits时, 00-[31:24],[23:16],[15:8],[7:0] 01-[24:32],[16:23],[8:15],[0:7]
RW
21:16TX_BITWIDTH发送位长。
每个数据桢的位宽。
00_0000- 保留 00_0001- 保留 00_0010- 保留 00_0011- 保留 00_0100-4-bit 数据长度 ...... 01_1111-31-bit 数据长度 10_0000-32-bit 数据长度
RW
15:8TX_RDTHR发送读阈值。
不关心。
0000_0000 - 大于1个数据 0000_0001 - 大于2个数据 0000_0010 - 大于3个数据 0000_0011 - 大于4个数据 ...... 111_1110- 大于127个数据 111_1111- 大于128个数据
RW
7:0TX_WRTHR发送写阈值。
当SSLVFLR[7:0]tx_unfill_data>
SSLVTXC[7:0]tx_wrthr 时,SSLVCTRL[23]tx_wrflag置1,触发tx_dma_req。
0000_0000 - 大于0个数据 0000_0001 - 大于1个数据 0000_0010 - 大于2个数据 0000_0011 - 大于3个数据
RW

SSI_SLV Receive Data Register

SSLVRXDBASE + 0x0C
Bit313029282726252423222120191817161514131211109876543210
字段RXD
RST00000000000000000000000000000000
位名称说明RW
31:0RXD接受数据寄存器,接受FIFO 缓存。
R

SSI_SLV Transmit Data Register

SSLVTXDBASE + 0x10
Bit313029282726252423222120191817161514131211109876543210
字段TXD
RST00000000000000000000000000000000
位名称说明RW
31:0TXD发送数据寄存器,发送 FIFO 缓存。
W

SSI_SLV Receive Number Register

SSLVRXNBASE + 0x14
Bit313029282726252423222120191817161514131211109876543210
字段RX_NUM
RST00000000000000000000000000000000
位名称说明RW
31:0RX_NUM接收数据的总量。
需在使能前手动设置。
数值随数据被读入 RXD而减少。
注 : 硬 件 上 将 阈 值 变 为 动 态 阈 值 , 阈 值 =(rx_num>
=rx_rdthr)?rx_rdthr:rx_num,即当数据总量大 于等于阈值时,阈值为rx_rdthr设定值,当最后一次剩余数 据量小于阈值时,阈值动态变为剩余数据量。
此阈值在硬件上决定SSLVCTRL[18]rx_rdflag 的产生,不 等同于SSLVRXC[15:8]rx_rdthr的设定值,软件欲获取该 阈值需软件按公式计算。
RW

SSI_SLV Transmit Number Register

SSLVTXNBASE + 0x18
Bit313029282726252423222120191817161514131211109876543210
字段TX_NUM
RST00000000000000000000000000000000
位名称说明RW
31:0TX_NUM发送数据的总量。
需在使能前手动设置。
数值随数据被写入TXD 而减少。
注:硬件上将阈值变为动态阈值,阈值=(tx_num>=tx_wrthr) ? tx_wrthr : tx_num,即当数据总量大于等于阈值时,阈值为 rx_rdthr设定值,当最后一次剩余数据量小于阈值时,阈值动态 变为剩余数据量。
此阈值在硬件上决定SSLVCTRL[23]tx_wrflag的产生,不等同于 SSLVTXC[7:0]tx_wrthr的设定值,软件欲获取该阈值需软件按 公式计算。
RW

SSI_SLV FIFO Level Register

SSLVFLRBASE + 0x1C
Bit313029282726252423222120191817161514131211109876543210
字段TX_FILL_SPACETX_UNFILL_SPACERX_FILL_SPACERX_UNFILL_SPACE
RST00000000000000000000000000000000
位名称说明RW
31:24TX_FILL_SPACE发送,FIFO 填充的空间,即发送FIFO 的DATA 数量。
R
23:16TX_UNFILL_SPACE发送,FIFO 未填充的空间。
结合阈值响应CPU 或dma 请求。
R
15:8RX_FILL_SPACE接收,FIFO 填充的空间,即接收FIFO 的DATA 数量。
结合阈值响应CPU 或dma 请求。
R
7:0RX_UNFILL_SPACE接收,FIFO 未填充的空间。
R

注:fifo 大小为 128,128+ 预取小容量 fifo=fill_space+unfill_space,所以通常情况下 fill_space+unfill_space > 128。