请问我在使用的是1642的SPIB进行通信,请问有什么方法可以使程序不用扫描的方式接收传输来的数据 ,我设置了回调函数,但始终无法进入该函数中,具体代码如下:
void driver_spi_init(void)
{
SPI_Params spiParams;
DMA_Params dmaParams;
int32_t retVal;
int32_t errCode;
Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PIND13_PADAD, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);/* SPIA_MOSI */
Pinmux_Set_FuncSel(SOC_XWR16XX_PIND13_PADAD, SOC_XWR16XX_PIND13_PADAD_SPIA_MOSI);
Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINE14_PADAE, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);/* SPIA_MISO */
Pinmux_Set_FuncSel(SOC_XWR16XX_PINE14_PADAE, SOC_XWR16XX_PINE14_PADAE_SPIA_MISO);
Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINE13_PADAF, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);/* SPIA_CLK */
Pinmux_Set_FuncSel(SOC_XWR16XX_PINE13_PADAF, SOC_XWR16XX_PINE13_PADAF_SPIA_CLK);
Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINC13_PADAG, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);/* SPIA_CS */
Pinmux_Set_FuncSel(SOC_XWR16XX_PINC13_PADAG, SOC_XWR16XX_PINC13_PADAG_SPIA_CSN);
Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINP13_PADAA, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);/* SPI_HOST_INTR - not used, reference code */
Pinmux_Set_FuncSel(SOC_XWR16XX_PINP13_PADAA, SOC_XWR16XX_PINP13_PADAA_SPI_HOST_INTR);
/* Enable output control for SPIB */
if(SOC_SPIOutputCtrl(gMmwMssMCB.socHandle, 1U, 1U, &errCode) < 0)
{
/* Debug Message: */
System_printf ("Debug: SOC_SPIOutputCtrl failed with Error [%d]\n", errCode);
}
System_printf ("Debug: MibSPI Driver Test Application begin \n");
/* Init SYSDMA params */
DMA_Params_init(&dmaParams);
/* Open DMA driver instance 0 for SPI test */
gMmwMssMCB.gDmaHandle = DMA_open(0, &dmaParams, &retVal);
if( gMmwMssMCB.gDmaHandle == NULL)
{
System_printf("Open DMA driver failed with error=%d\n", retVal);
}
SPI_init();
/* Setup the default spi Parameters */
SPI_Params_init(&spiParams);
spiParams.mode = SPI_MASTER;
spiParams.u.masterParams.bitRate = 40000000;
spiParams.u.masterParams.numSlaves = 1;
spiParams.u.masterParams.slaveProf[0].chipSelect = 0;
spiParams.u.masterParams.slaveProf[0].ramBufLen = MIBSPI_RAM_MAX_ELEM;
spiParams.u.masterParams.slaveProf[0].dmaCfg.txDmaChanNum =1U;
spiParams.u.masterParams.slaveProf[0].dmaCfg.rxDmaChanNum =0U;
/* Enable DMA and set DMA channels */
spiParams.dmaEnable = 1;
spiParams.dataSize = 16;
spiParams.dmaHandle = gMmwMssMCB.gDmaHandle;
// spiParams.frameFormat = SPI_POL0_PHA0;
// spiParams.shiftFormat = SPI_MSB_FIRST;
spiParams.frameFormat = SPI_POL1_PHA0;
spiParams.shiftFormat = SPI_LSB_FIRST;
spiParams.pinMode = SPI_PINMODE_4PIN_CS;
spiParams.eccEnable = 1;
gMmwMssMCB.gSpiHandle = SPI_open(0, &spiParams);
if (gMmwMssMCB.gSpiHandle == NULL)
{
System_printf("Error: Unable to open the SPI Instance\n");
return;
}
System_printf("SPI open successful..\n");
}
上面是可以使用扫描方式进行接收 ,请问我要开启SPI回调函数的配置是什么 谢谢
每当调用'MIBSPI_sysDmaIntHandler'时,都会调用回调。 我们尝试了SDK 3.2 SPI测试应用程序,它能够击中这个中断处理程序。所以建议您检查SPI测试应用程序,以验证是否正在调用DMA中断处理程序。
您可以在此链接中找到所有mmWave SDK版本:
http://www.ti.com/tool/MMWAVE-SDK
SDK 3.2的下载链接为:
http://software-dl.ti.com/ra-processors/esd/MMWAVE-SDK/latest/index_FDS.html