USER GUIDE / PERIPHERALS / SSI SLV / REGISTER DESCRIPTION
寄存器描述
SSI_SLV Control Register
SSLVCTRLBASE + 0x00
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | Is_cs_dis | 选择位。 默认是0,选择使用cs 片选 0-使用硬件cs 片选,即cs低有效,高无效; 1-不使用cs片选; | RW |
| 30 | LOOP | 回环模式。 非回环模式时,初始化前设为1,初始化结束设为0。 注:回环模式,因为从机不能自己产生时钟和片选,所以需主 机提供,即回环模式依然需要配置主机为接收或发送相同的数 据量来提供相应时钟和片选。 0-正常模式 1-回环模式 | RW |
| 29 | cs_sw_en | 0-默认,硬件控制cs片选; 1-软件控制cs,和is_dis_cs结合不使能硬件cs; | R |
| 28:25 | Reserved | 写入无影响,读取为零。 | |
| 24 | TX_RDFLAG | 发送读标志。 不关心,可先屏蔽掉,在未屏蔽时会引起总中断。 0-无 1-发送读标志 | R |
| 23 | TX_WRFLAG | 发送写标志。 响应DMA请求。 在未屏蔽时会引起总中断。 当SSLVFLR[7:0]tx_unfill_data> SSLVTXC[7:0]tx_wrthr时, SSLVCTRL[23]tx_wrflag置1,触发tx_dma_req。 0-无 1-发送写标志 | R |
| 22 | TX_RDEMPTY_ER R | 发送读空错误。 fifo空了,继续读。 在未屏蔽时会引起总中断。 0-无错误 1-错误 | R |
| 21 | TX_WRFULL_ERR | 发送写满错误。 fifo满了,继续写。 在未屏蔽时会引起总中断。 0-无错误 1-错误 | R |
| 20 | TX_EMPTY | 发送fifo空。 0-不空 1-空 | R |
| 19 | TX_FULL | 发送fifo满。 0-不满 1-满 | R |
| 18 | RX_RDFLAG | 接收读标志。 响应DMA请求。 在未屏蔽时会引起总中断。 当 SSLVFLR[15:8]rx_fifo_data > SSLVRXC[15:8]rx_rdthr 时,SSLVCTRL[18]rx_rdflag置1,触发rx_dma_req。 0-无 1-接收读标志 | R |
| 17 | RX_WRFLAG | 接收写标志。 不关心,可先屏蔽掉,在未屏蔽时会引起总中断。 0-无 1-接收写标志 | R |
| 16 | RX_RDEMPTY_ER R | 接收读空错误。 fifo空了,继续读。 在未屏蔽时会引起总中断。 0-无错误 1-错误 | R |
| 15 | RX_WRFULL_ERR | 接收写满错误。 fifo满了,继续写。 在未屏蔽时会引起总中断。 0-无错误 1-错误 | R |
| 14 | RX_EMPTY | 接收fifo空。 0-不空 | R |
| 13 | RX_FULL | 接收fifo满。 0-不满 1-满 | R |
| 12:7 | RESET | 复位计数器。 范围为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 |
| 6 | IRQ | 总中断。 由每个独立的中断的状态决定是否为置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 |
| 5 | CKG_MASK | 时钟屏蔽。 0-不屏蔽 1-屏蔽 | RW |
| 4 | IRQ_MASK | 总中断屏蔽。 0-不屏蔽 1-屏蔽 | RW |
| 3 | CPHA | 串行时钟相位。 串行时钟相位的选择与spimaster有关. 0-串行时钟在第一个数据位的中间翻转 | RW |
| 2 | CPOL | 串行时钟极性。 表示在空闲状态下串行时钟的电平 SSI_SLV 的 CPOL 与 spi master保持一致。 0-串行时钟在空闲状态下电平为低 1-串行时钟在空闲状态下电平为高 | RW |
| 1 | TX_EN | 发送使能。 在设置完所有寄存器以后再使能。 0-不使能 1-使能 | RW |
| 0 | RX_EN | 接收使能。 在设置完所有寄存器以后再使能。 0-不使能 1-使能 | RW |
SSI_SLV Receive Control Register
SSLVRXCBASE + 0x04
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | RX_EMPTY_IRQ_MAS K | 接收空中断屏蔽。 无作用。 屏蔽只会使接收空中断不会产生总中断,不会清除接收空中 断。 0-不屏蔽 1-屏蔽 | RW |
| 30 | RX_FULL_IRQ_MASK | 接收满中断屏蔽。 无作用。 屏蔽只会使接收满中断不会产生总中断,不会清除接收满中 断。 0-不屏蔽 1-屏蔽 | RW |
| 29 | RX_RDFLAG_IRQ_MA SK | 接收读标志中断屏蔽。 屏蔽只会使接收读标志中断不会产生总中断,不会清除接收 读标志中断。 0-不屏蔽 1-屏蔽 | RW |
| 28 | RX_WRFLAG_IRQ_M ASK | 接收写标志中断屏蔽。 屏蔽只会使接收写标志中断不会产生总中断,不会清除接收 写标志中断。 0-不屏蔽 1-屏蔽 | RW |
| 27 | RX_RDEMPTY_ERR_I RQ_MASK | 接收读空错误中断屏蔽。 屏蔽只会使接收读空错误中断不会产生总中断,不会清除接 收读空错误中断。 0-不屏蔽 1-屏蔽 | RW |
| 26 | RX_WRFULL_ERR_IR Q_MASK | 接收写满错误中断屏蔽。 屏蔽只会使接收写满错误中断不会产生总中断,不会清除接 收写满错误中断。 0-不屏蔽 1-屏蔽 | RW |
| 25:24 | RX_CHANNEL | 接收通道。 00-单通道(标准SPI) 01-双通道(DualSPI) 10-四通道(QuadSPI) 11-Reserved | RW |
| 23:22 | RX_ENDIAN | 接收大小端。 00-word中大端byte在前,byte中大端bit在前. 01-word中大端byte在前,byte中小端bit在前. | RW |
| 21:16 | RX_BITWIDTH | 接收位长。 每个数据桢的位宽。 00_0000- 保留 00_0001- 保留 00_0010- 保留 00_0011- 保留 00_0100- 4-bit 数据长度 ...... 01_1111- 31-bit 数据长度 10_0000- 32-bit 数据长度 | RW |
| 15:8 | RX_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:0 | RX_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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | TX_EMPTY_IRQ_MA SK | 发送空中断屏蔽。 无作用。 屏蔽只会使发送空中断不会产生总中断,不会清除发送空中 断。 0-不屏蔽 1-屏蔽 | RW |
| 30 | TX_FULL_IRQ_MAS K | 发送满中断屏蔽。 无作用。 屏蔽只会使发送满中断不会产生总中断,不会清除发送满中 断。 0-不屏蔽 1-屏蔽 | RW |
| 29 | TX_RDFLAG_IRQ_M ASK | 发送读标志中断屏蔽。 屏蔽只会使发送读标志中断不会产生总中断,不会清除发送 读标志中断。 0-不屏蔽 1-屏蔽 | RW |
| 28 | TX_WRFLAG_IRQ_M ASK | 发送写标志中断屏蔽。 屏蔽只会使发送写标志中断不会产生总中断,不会清除发送 写标志中断。 0-不屏蔽 1-屏蔽 | RW |
| 27 | TX_RDEMPTY_ERR _IRQ_MASK | 发送读空错误中断屏蔽。 屏蔽只会使发送读空错误中断不会产生总中断,不会清除发 送读空错误中断。 0-不屏蔽 1-屏蔽 | RW |
| 26 | TX_WRFULL_ERR_I RQ_MASK | 发送写满错误中断屏蔽。 屏蔽只会使发送写满错误中断不会产生总中断,不会清除发 送写满错误中断。 0-不屏蔽 1-屏蔽 | RW |
| 25:24 | TX_CHANNEL | 发送通道。 00-单通道(标准SPI) 01-双通道(Dual SPI) 10-Reserved 11-Reserved | RW |
| 23:22 | TX_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:16 | TX_BITWIDTH | 发送位长。 每个数据桢的位宽。 00_0000- 保留 00_0001- 保留 00_0010- 保留 00_0011- 保留 00_0100-4-bit 数据长度 ...... 01_1111-31-bit 数据长度 10_0000-32-bit 数据长度 | RW |
| 15:8 | TX_RDTHR | 发送读阈值。 不关心。 0000_0000 - 大于1个数据 0000_0001 - 大于2个数据 0000_0010 - 大于3个数据 0000_0011 - 大于4个数据 ...... 111_1110- 大于127个数据 111_1111- 大于128个数据 | RW |
| 7:0 | TX_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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | RXD | 接受数据寄存器,接受FIFO 缓存。 | R |
SSI_SLV Transmit Data Register
SSLVTXDBASE + 0x10
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | TXD | 发送数据寄存器,发送 FIFO 缓存。 | W |
SSI_SLV Receive Number Register
SSLVRXNBASE + 0x14
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | RX_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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | TX_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
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:24 | TX_FILL_SPACE | 发送,FIFO 填充的空间,即发送FIFO 的DATA 数量。 | R |
| 23:16 | TX_UNFILL_SPACE | 发送,FIFO 未填充的空间。 结合阈值响应CPU 或dma 请求。 | R |
| 15:8 | RX_FILL_SPACE | 接收,FIFO 填充的空间,即接收FIFO 的DATA 数量。 结合阈值响应CPU 或dma 请求。 | R |
| 7:0 | RX_UNFILL_SPACE | 接收,FIFO 未填充的空间。 | R |
注:fifo 大小为 128,128+ 预取小容量 fifo=fill_space+unfill_space,所以通常情况下 fill_space+unfill_space > 128。