要启用和初始化 SSI,请执行以下步骤:
- 确保相应的电源域已正确加电。相关详细信息,请参阅Chapter8。
- 通过以下操作启用 PRCM 中的 SSI 模块:写入 PRCM:SSICLKGR 寄存器、PRCM:SSICLKGS 寄存器、PRCM:SSICLKGDS 寄存器,或使用以下 DriverLib 函数:
PRCMPeripheralRunEnable(uint32_t)
PRCMPeripheralSleepEnable(uint32_t)
PRCMPeripheralDeepSleepEnable(uint32_t)
and then loading the setting to clock controller by writing to PRCM:CLKLOADCTL
或者使用 DriverLib 函数。
PRCMLoadSet().
- 配置 IOC 模块,以将 SSIn_RX、SSIn_TX、SSIn_FSS 和 SSIn_CLK 功能从 I/O 路由到 SSI 模块。IOCFGn.PORTID 必须写入正确的 PORTID。
对于每种帧格式,应按照如下步骤配置 SSI:
- 在进行任何配置更改之前,确保 SSI:CR1 寄存器中的 SSE 位清零。
- 选择 SSI 用作主器件还是从器件:
- 对于主器件操作,将 SSI:CR1 寄存器设置为 0x0000 0000。
- 对于从器件模式(启用输出),将 SSI:CR1 寄存器设置为 0x0000 0004。
- 对于从器件模式(禁用输出),将 SSI:CR1 寄存器设置为 0x0000 000C。
- 通过写入 SSI:CPSR 寄存器来配置时钟预分频除数。
- 使用以下配置写入 SSI:CR0 寄存器:
- 串行时钟速率 (SCR)
- 如果使用 Motorola SPI 模式,需设置所需的时钟相位和极性(SPH 和 SPO)
- 协议模式:Motorola SPI、TI SSF、MICROWIRE (FRF)
- 数据大小 (DSS)
- (可选)配置 μDMA 通道(请参阅Chapter15),并在 SSI:DMACR 寄存器中启用 DMA 选项。
- 通过置位 SSI:CR1 寄存器中的 SSE 位来启用 SSI。
例如,假设要求 SSI 配置按以下参数运行:
- 主器件运行
- 德州仪器 (TI) SSI 模式
- 1Mbps 比特率
- 8 个数据位
假设系统时钟为 48MHz,比特率计算如方程式 9 所示。
方程式 9. SSIn_CLK = PERDMACLK / [CPSDVSR × (1 + SCR)] 1 × 106 = 20 × 106 / [CPSDVSR × (1 + SCR)] 1000000 bps = 48000000 Hz / [2 × (1 + 23)]
在这种情况下,如果 CPSDVSR = 0x2,则 SCR 必须为 0x18。
配置顺序为:
- 确保 SSI:CR1 寄存器中的 SSE 位清零。
- 向 SSI:CR1 寄存器写入值 0x0000 0000。
- 向 SSI:CPSR 寄存器写入值 0x0000 0002。
- 向 SSI:CR0 寄存器写入值 0x0000 1817。
- 然后,通过置位 SSI:CR1 寄存器中的 SSE 位来启用 SSI。