USER GUIDE / PERIPHERALS / SSI / REGISTER DESCRIPTION

寄存器描述

SSI Data Register

SSIDRBASE + 0x0000
Bit313029282726252423222120191817161514131211109876543210
字段D31-D17GPC/D16D15-D0
RST????????????????????????????????
位名称说明RW
31:17D31-D17D31-D17 被写入T-FIFO中待发送,或是从R-FIFO中被读取,待传给 APB总线RW
16GPC/D16这一bit数据可以当做普通的数据总线的第16bit,此时它是可读可写的。
在SSI_GPC模式下,这一bit可以作为SSI_GPC输出到外部的pin脚, 此时它是只写寄存器。
需要注意的是,SSI_GPC模式只能在SSI0控制器 中使用。
RW
15:0D15-D0D15-D0 被写入T-FIFO中待发送,或是从R-FIFO中被读取,待传给APB 总线。
当传输数据帧的长度小于17bit时,接收数据会在R-FIFO中自动调整, 未被使用的比特位会被自动填0。
对于发送操作来说,未被使用的比特位 在发送时会被发送逻辑忽略。
RW

SSI Control Register0

SSICR0BASE + 0x0004
Bit313029282726252423222120191817161514131211109876543210
字段ReservedresetFIETENDIANRENDIANSSIETIERIETEIEREIELOOPRFINERFINC*EACLRUNFSELReservedVRCNTTFMODETFLUSHRFLUSHDISREV
RST00000000000000000000000000000000
位名称说明RW
31:27Reserved写入无影响,读取为零。
R
26:21reset软复位,复位时间为reset*pclk周期;
当为0时硬件自动释放
RW
20FIE开启和关闭end结束中断 0:关闭 1:开启RW
19:18TENDIAN发送大小端 0:MSB在一个word的最前端,MSB在一个byte的最前端 1:MSB在一个word的最前端,LSB在一个byte的最前端 2:LSB在一个word的最前端,LSB在一个byte的最前端 3:LSB在一个word的最前端,MSB在一个word的最前端 注:按word来存储时,表示大小端,即以字节为单位来进行数据存储, 若为大端,则数据的高位字节放在地址的低端,低位字节放在地址的高 端;
若为小端则反之。
MSB LSB以bit为单位,大端小端以数据类型为单位
RW
17:16RENDIAN接收大小端 0:MSB在一个word的最前端,MSB在一个byte的最前端 1:MSB在一个word的最前端,LSB在一个byte的最前端 2:LSB在一个word的最前端,LSB在一个byte的最前端 3:LSB在一个word的最前端,MSB在一个word的最前端RW
15SSIE用来开启/关闭SSI模块 0:关闭 1:开启 清零SSIE并不会将SSIFIFO,SSICR0,SSICR1,SSIGR,SSIITR SSIICR自动复位。
软件需要确保在开启SSI传输前,FIFO和寄存器已 经手动清零或者复位完成。
RW
14TIE开启/关闭T-FIFO的半空中断或DMA发送请求 0:关闭;
1:开启TXI半空中断 0:关闭;
1:开启DMA发送请求 注意:TXI中断与DMA发送请求不能同时工作
RW
13RIE开启/关闭R-FIFO的半满中断或DMA读取请求 0:关闭;
1:开启RXI半满中断 0:关闭;
1:开启DMA读取请求 注意:RXI中断与DMA读取请求不能同时工作
RW
12TEIE开启/关闭发送错误中断TEI 0:关闭 1:开启RW
11REIE开启/关闭接收错误中断REI 0:关闭 1:开启RW
10LOOP做测试用,在回环模式下,SSI输出的移位寄存器与SSI输入的移位寄 存器直接相连。
控制器接收到的数据应该与发送的数据完全相同。
数据 总线pin脚上不输出任何数据。
0:正常SSI传输模式 1:回环测试模式
RW
9RFINE接收完成控制位使能 0:关闭RFINC控制 1:开启RFINC控制 当SSICR1.FMAT = B’010,即当前传输协 议格式为NM1时,此 位必须置0RW
8RFINC*接收完成控制位 0:接收继续 1:接收完毕RW
7EACLRUN0:不自动清零underrun标志位 1:当T-FIFO不为空时,自动清零underrun标志位RW
6FSEL选择从机使能信号,未被选中的从机使能信号持续输出无效值 0:选择SSI_FRM1有效 1:选择SSI_CE2_IO2有效 注:SSI_CE2_IO2仅适用于SSI0RW
5Reserved写入无影响,读取为零。
R
4VRCNT接收计数(RCNT)有效标志位 0:SSIRCNT.RCNT被忽略 1:SSIRCNT.RCNT被使用RW
3TFMODET-FIFO空模式判断选择 0:新的T-FIFO空模式判断,使用格雷码(建议使用)RW
2TFLUSH冲刷T-FIFO使能 0:不冲刷 1:冲刷 如果被写1,会在一个PCLK周期后自动清零RW
1RFLUSH冲刷R-FIFO使能 0:不冲刷 1:冲刷 如果被写1,会在一个PCLK周期后自动清零RW
0DISREV接收操作使能 0:开启 1:关闭RW

SSI Control Register1

SSICR1BASE + 0x0008
Bit313029282726252423222120191817161514131211109876543210
字段FRMHLTFVCKTCKFIGPCMDITFRMUNFINFMATTTRGMCOMRTRGFLENGPCHLPHAPOL
RST00000000000010000111100000110000
位名称说明RW
31:30FRMHL帧有效电平选择 FRMHL[1:0] Description 00 SSI_FRM1 低电平有效 默认值 SSI_CE2_IO2 低电平有效 01 SSI_FRM1 高电平有效 SSI_CE2_IO2 低电平有效 10 SSI_FRM1 低电平有效 SSI_CE2_IO2 高电平有效 11 SSI_FRM1 高电平有效 SSI_CE2_IO2 高电平有效 注意:SSI_CE2_IO2仅作用于SSI0RW
29:28TFVCK从从机选择信号使能到串行时钟开始翻转的时间。
当TFVCK = B’00,时间 为半个或一个SSI_CLK时钟周期(视POL和PHA的设定值而定) 当SSICR1.FMAT = B’001,忽略SSICR1.TFVCK不看 TFVCK[1:0] Description 00 间隔半个或一个SSI_CLK周期 初始值 01 多插入一个SSI_CLK时钟周期 10 多插入两个SSI_CLK时钟周期 11 多插入三个SSI_CLK时钟周期
RW
27:26TCKFI从串行时钟停止翻转到从机使能信号取消断言的时间。
当TCKFI=B’00时, 时间间隔为半个或一个SSI_CLK时钟周期(视POL和PHA的设定值而定) 当SSICR1.FMAT = B’001,忽略SSICR1.TFCKI不看 TCKFI[1:0] Description 00 间隔半个或一个SSI_CLK周期 初始值 01 多插入一个SSI_CLK时钟周期 10 多插入两个SSI_CLK时钟周期 11 多插入三个SSI_CLK时钟周期
RW
25GPCMDSSI_GPC 模式选择 0:正常模式 1:特殊模式 正常模式下,SSI_GPC 位与SSIDR 寄存器的值关联 在特殊模式下,SSI_GPC 可以被配置,高低电平取决于GPCHL 注意:SSI_GPC 仅作用于SSI0RW
24ITFRM从机选择信号在间隔期间是否被断言,仅在间隔模式下有效,正常模式下会 被忽略 0:SSI_FRM1 /SSI_CE2_IO2在间隔模式间隔时间取消断言 1:SSI_FRM1 /SSI_CE2_IO2在间隔模式间隔期间持续断言RW
23UNFIN当T-FIFO中所有的数据都被发送完之后,选择SSI直接结束传输还是等待 数据重新填进T-FIFO中(underrun发生时)。
当SSICR1.FMAT= B’001 即处在SSP协议格式下时,此位必须被置0 0:T-FIFO为空就结束本次传输 1:T-FIFO为空时不结束本次传输,会发生SSIunderrun 错误中断并等待 T-FIFO中填入数据SSI_CLK 和 SSI_FRM1 /SSI_CE2_IO2保持断言。
RW
22:20FMAT配置传输的协议格式 FMAT Description 000 Motorola’sSPIformat(standard) Initialvalue 001 TI’sSSP format 010 NationalMicrowire 1format 011 NationalMicrowre2formatRW
19:16TTRG定义T-FIFO的半空阈值,当实际T-FIFO 中的数据量小于或等于该值时, SSISR.TFHE会被置1 0:小于或等于1 N:小于或等于N x8 注意:不建议配置成0RW
15:12MCOM定义命令帧的长度 仅在SSICR1.FMAT =b’010 或 b’011,即NM1 |NM2模式下才有效 命令帧长度为MCOM+1 初始值为b’0111RW
11:8RTRG定义R-FIFO的半满阈值,当实际R-FIFO中的数据量大于或等于该值时, SSISR.RFHF会被置1 0:大于或等于1 N:大于或等于N x8 注意:不建议配置为0RW
7:3FLEN定义待发送,待接收的数据帧的长度,最大可配置的长度为32bit一帧。
当 帧长度大于17bit时,软件需要确保编码正确,当SSI_GPC引脚处于使用 状态,FLEN不能被配置为b’01111(17bit)。
当处于SSP协议格式下时,FLEN不能配置为0(2bit数据帧长度) 数据帧长度 =FLEN +2 注意:在DSPI模式下,数据帧长度应该为2或4的倍数
RW
2GPCHLSSI_SPC状态,此位在GPCMD为高时有效 0:低 1:高RW
1PHA配置串行时钟SSI_CLK的相位 0:从机使能信号SSI_FRM1/SSI_CE2_IO2断言后,SSI_CLK的第一个跳 变沿用来采样RXD上的数据 1:从机使能信号SSI_FRM1/SSI_CE2_IO2断言后,SSI_CLK的第一个跳 变沿用来驱动数据到TXD上 注意:仅适用于SPI协议RW
0POL配置串行时钟SSI_CLK的极性 0:SSI_CLK的空闲状态为低电平 1:SSI_CLK的空闲状态为高电平 注意:仅适用于SPI协议RW

SSI Status Register

SSISRBASE + 0x000C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedEND_CLEARTREQN-DMATREQNTSURPLUSRREQN-DMARREQNRSURPLUSTFIFO-NUMRFIFO-NUMENDBUSYTFFRFETFHERFHFTUNDRROVER
RST00110110000000000000000010011000
位名称说明RW
31Reserved写入无影响,读取为零。
R
30END_CLEAR写0会清除XFI中断,写1无效果W
29TREQN-DMA表示SSI在T-FIFO半空状态下请求了DMA搬运数据 0:请求 1:未请求R
28TREQN与TSURPLUS寄存器一起,确认TREQN-DMA的状态R
27TSURPLUS表示T-FIFO是否工作在surplus模式下.R
26RREQN-DMA表示SSI在R-FIFO半满状态下请求了DMA搬运数据 0:请求 1:未请求R
25RREQN与RSURPLUS寄存器一起,判断RREQN-DMA的状态R
24RSURPLUS表示R-FIFO是否工作在surplus模式下R
23:16TFIFO-NUM表示T-FIFO中的数据总量R
15:8RFIFO-NUM表示R-FIFO中的数据总量R
7END传输结束标志位,当处在传输中时与SSISR.BUSY相反,在传输完成 前的间隔时间时,此位会保持清零。
当传输完全结束时,此位会置1, 当SSICR0.FIE被使能,会产生XFI中断,这个中断会在写 END_CLEAR之后自动清零
R
6BUSY显示SSI当前工作状态 0:SSI处在空闲状态或工作状态 1:正在进行传输R
5TFF显示SSI T-FIFO是否已满 0:不满 1:满R
4RFE显示SSI R-FIFO是否是空的 0:不空 1:空R
3TFHE显示T-FIFO中的数据总量是否小于或等于SSICR1.TTRG的设定值 0:T-FIFO中的数据总量比SSICRI.TTRG的设定值要高 1:T-FIFO中的数据总量达到了SSICRI.TTRG的设定值 此时,若SSICR0.TIE被使能,则会产生TXI中断R
2RFHF显示R-FIFO中的数据总量是否大于等于SSICR1.RTRG的设定值 0:R-FIFO中的数据总量比SSICR1.RTRG小,未达到设定值 1:R-FIFO中的数据总量达到了SSICR1.RTRG的设定值 此时,若SSICR0.RIE被使能,则会产生RXI中断R
1TUNDR显示T-FIFO是否工作在underrun状态下,当工作在underrun状态 下时,控制器会将此位置1,并维持SSI_CLK的翻转及 SSI_FRM1/SSI_CE2_IO2的断言状态,直到T-FIFO被重新填充 0:未发生T-FIFO的underrun状态RW
0ROVER显示R-FIFO的overrun状态,若处在此状态,后续接收到的所有数 据将无法进入移位寄存器,会被丢失 0:R-FIFO未发生overrun状态 1:R-FIFO处在overrun状态 此时,若SSICR0.REIE被使能,则会产生REI中断 写0可以将此位清零,写1不会自己产生中断,无效果RW

SSI Interval Time Control Register

SSIITRBASE + 0x0010
Bit313029282726252423222120191817161514131211109876543210
字段ReservedCNTCLKIVLTM
RST????????????????0000000000000000
位名称说明RW
31:16Reserved写入无影响,读取为零。
R
15CNTCLK计数器时钟源选择位 0:使用串行时钟SSI_CLK做时钟源来计数 1:使用外部32k时钟源计数 建议配置为0RW
14:0IVLTM配置间隔时间,设置在间隔模式下,每帧之间的间隔需要多少个时钟源 周期。
当SSIITR.IVLTM= 0x0000,SSI控制器被配置为普通模式,此模式下 不存在间隔时间,故可以忽略SSIITR.CNTCLK和SSIICR寄存器。
当SSIITR.IVLTM≤0x0000,SSI控制器被配置为间隔模式,间隔时间 的计算方式如下: 当CNTCLK配置为0,选择SSI_CLK计时 Intervaltime =[CNTCLK clock period]* [ValueofIVLTM] + 3* dev_clk period
RW

SSI Interval Character-per-frame Control Register

SSIICRBASE + 0x0014
Bit313029282726252423222120191817161514131211109876543210
字段ReservedICC
RST?????????????????????????????000
位名称说明RW
31:3Reserved写入无影响,读取为零。
R
2:0ICC配置两段间隔时间中,可以连续传输的数据帧数,若SSICR1.FMAT≤B’000 即不处于SPI协议格式下,此寄存器可以忽略不看。
最终的配置结果为,在两段间隔时间之间,可以传输SSIICR 配置值 +1 帧数据
RW

SSI Clock Generator Register

SSIGRBASE + 0x0018
Bit313029282726252423222120191817161514131211109876543210
字段ReservedCGV
RST????????????????????????00000000
位名称说明RW
31:8Reserved写入无影响,读取为零。
R
7:0CGV配置串行时钟SSI_CLK的频率,此时种是由DEV_CLK 生成的,故可以 动态调整频率,计算公式如下: F = [FrequencyofDEV_CLK]/(2* (CGV +1)) SSI_CLKRW

SSI Receive Counter Register

SSIRCNTBASE + 0x001C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedRCNT
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved写入无影响,读取为零。
R
15:0RCNTT-FIFO为空后跳转为仅接收模式时,R-FIFO预计接收的数据量 如果SSICR1.UNFIN=0andSSICR0.RFINE=1,当T-FIFO为空时,SSI 会进入仅接收模式。
如果此时SSICR0.VRCNT= 1,内置计数器会自动开 始计数。
当计数值等于RCNT的设定值后,接收操作会自动终止。
RW

SSI Surplus Process Enable Register

SSISENBASE + 0x0020
Bit313029282726252423222120191817161514131211109876543210
字段ReservedSEN_RFFReservedSEN_TFF
RST00000000000000000000000000000000
位名称说明RW
31:5Reserved写入无影响,读取为零。
R
4SEN_RFFR-FIFO surplus操作使能位,结合中断信号产生中断RW
3:1Reserved写入无影响,读取为零。
R
0SEN_TFFT-FIFO surplus操作使能位,结合中断信号产生中断RW

SSI Surplus Process Load Register

SSITLOADBASE + 0x0024
Bit313029282726252423222120191817161514131211109876543210
字段ReservedSLD_RFFReservedSLD_TFF
RST00000000000000000000000000000000
位名称说明RW
31:5Reserved写入无影响,读取为零。
R
4SLD_RFFR-FIFO的surplus处理使能信号,重置内置的接受数据总量的计数器W
3:1Reserved写入无影响,读取为零。
.
R
0SLD_TFFT-FIFO的surplus处理使能信号,重置内置的发送数据总量的计数器W

SSI Surplus Process Count Register

SSISCNTBASE + 0x0028
Bit313029282726252423222120191817161514131211109876543210
字段SNUMTNUM
RST00000000000000000000000000000000
位名称说明RW
31:16SNUM剩余需要被接收或需要发送的数据量RW
15:0TNUM接收或发送的数据总量RW