我们的应用将 SSI1与(MSP432E SLSDKv2.40.00.11) SDSPI 驱动器配合使用、以访问 SD 卡。 我们发现、当我们指定 uDMA 通道10和11时、该驱动程序不起作用、但它可以与 uDMA 通道24和25配合使用。 我确认所有 uDMA 通道都设置为默认优先级。
TRM 和 TI 驱动程序头文件建议 SSI1支持两个通道对。 这是已知的硬件限制吗?我们是否可以在驱动程序初始化中遗漏一个步骤?
此配置工作正常:
CONST SPIMSP432E4DMA_HWAttrs spiMSP432E4DMAHWAttrs[MSP_EXP432E401Y_SPICOUNT]={
{
baseAddr = SSI1_base、
.intNum = INT_SSI1、
.intPriority =(~0)、
defaultTxBufValue =(~0)、
.rxDmaChannel = UDMA_CH24_SSI1RX、
TxDmaChannel = UDMA_CH25_SSI1TX、
.minDmaTransferSize = 10、
clkPinMask = SPIMSP432E4_PB5_SSI1CLK、
.fsPinMask = SPIMSP432E4_PB4_SSI1FSS、
.xdata0 PinMask = SPIMSP432E4_PE4_SSI1XDAT0、
.xdata1引脚掩码= SPIMSP432E4_PE5_SSI1XDAT1
};
此配置不起作用:
CONST SPIMSP432E4DMA_HWAttrs spiMSP432E4DMAHWAttrs[MSP_EXP432E401Y_SPICOUNT]={
{
baseAddr = SSI1_base、
.intNum = INT_SSI1、
.intPriority =(~0)、
defaultTxBufValue =(~0)、
.rxDmaChannel = UDMA_CH10_SSI1RX、
TxDmaChannel = UDMA_CH11_SSI1TX、
.minDmaTransferSize = 10、
clkPinMask = SPIMSP432E4_PB5_SSI1CLK、
.fsPinMask = SPIMSP432E4_PB4_SSI1FSS、
.xdata0 PinMask = SPIMSP432E4_PE4_SSI1XDAT0、
.xdata1引脚掩码= SPIMSP432E4_PE5_SSI1XDAT1
};
摘自 MSP432E TRM: