Other Parts Discussed in Thread: MMWAVE-SDK
I am using IWR6843AOPEVM + mmwaveboost
I want to receive TLV or 1DFFT data through spi communication. No errors were displayed during initialization but cli didn't work.
Communication is added to the void MmwDemo_uartTxTask(UArg arg0, UArg arg1) part.
I tried adding it to another project vital sign, but an error occurs during initialization
Do any of the mmwave_industrial_toolbox/lab demos have spi capabilities? Or is it possible to attach a mmwave_industrial_toolbox/lab project by adding a function?
I'd appreciate it if you let me know if I'm wrong in the code or if there's anything I need to add.
referenced the link, path
C:\ti\mmwave_sdk_03_05_00_04\packages\ti\drivers\spi\test\xwr68xx
I coded as below
// /* SPIA_MOSI */
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PIND13_PADAD, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PIND13_PADAD, SOC_XWR68XX_PIND13_PADAD_SPIA_MOSI);
/* SPIA_MISO */
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINE14_PADAE, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINE14_PADAE, SOC_XWR68XX_PINE14_PADAE_SPIA_MISO);
/* SPIA_CLK */
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINE13_PADAF, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINE13_PADAF, SOC_XWR68XX_PINE13_PADAF_SPIA_CLK);
/* SPIA_CS */
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINE15_PADAG, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINE15_PADAG, SOC_XWR68XX_PINE15_PADAG_SPIA_CSN);
/* SPI_HOST_INTR - not used, reference code */
Pinmux_Set_OverrideCtrl(SOC_XWR68XX_PINP13_PADAA, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);
Pinmux_Set_FuncSel(SOC_XWR68XX_PINP13_PADAA, SOC_XWR68XX_PINP13_PADAA_SPI_HOST_INTR);
static void Pcount3DDemo_initTask(UArg arg0, UArg arg1)
{
int32_t errCode;
MMWave_InitCfg initCfg;
UART_Params uartParams;
Task_Params taskParams;
Semaphore_Params semParams;
DPM_InitCfg dpmInitCfg;
DMA_Params dmaParams;
DMA_Handle dmaHandle;
SPI_Params spiParams;
DPC_ObjectDetectionRangeHWA_InitParams objDetInitParams;
// int32_t i;
/* Debug Message: */
System_printf("Debug: Launched the Initialization Task\n");
/*****************************************************************************
* Initialize the mmWave SDK components:
*****************************************************************************/
/* Initialize the UART */
UART_init();
/* Initialize the SPI */
SPI_init();
/* Initialize the DMA for UART */
DMA_init ();
/* Open the DMA Instance */
DMA_Params_init(&dmaParams);
dmaHandle = DMA_open(0, &dmaParams, &errCode);
if (dmaHandle == NULL)
{
printf ("Error: Unable to open the DMA Instance [Error code %d]\n", errCode);
return;
}
/* Initialize the GPIO */
GPIO_init();
/* Initialize the Mailbox */
Mailbox_init(MAILBOX_TYPE_MSS);
/* Platform specific configuration */
Pcount3DDemo_platformInit(&gMmwMssMCB.cfg.platformCfg);
/*****************************************************************************
* Open the mmWave SDK components:
*****************************************************************************/
/* Setup the default UART Parameters */
UART_Params_init(&uartParams);
uartParams.clockFrequency = gMmwMssMCB.cfg.platformCfg.sysClockFrequency;
uartParams.baudRate = gMmwMssMCB.cfg.platformCfg.commandBaudRate;
uartParams.isPinMuxDone = 1;
/* Open the UART Instance */
gMmwMssMCB.commandUartHandle = UART_open(0, &uartParams);
if (gMmwMssMCB.commandUartHandle == NULL)
{
Pcount3DDemo_debugAssert (0);
return;
}
/* Setup the default UART Parameters */
UART_Params_init(&uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.clockFrequency = gMmwMssMCB.cfg.platformCfg.sysClockFrequency;
uartParams.baudRate = gMmwMssMCB.cfg.platformCfg.loggingBaudRate;
uartParams.isPinMuxDone = 1U;
uartParams.dmaHandle = dmaHandle;
uartParams.txDMAChannel = UART_DMA_TX_CHANNEL;
uartParams.rxDMAChannel = UART_DMA_RX_CHANNEL;
/* Open the Logging UART Instance: */
gMmwMssMCB.loggingUartHandle = UART_open(1, &uartParams);
if (gMmwMssMCB.loggingUartHandle == NULL)
{
System_printf("Error: Unable to open the Logging UART Instance\n");
Pcount3DDemo_debugAssert (0);
return;
}
DMA_Params_init(&dmaParams);
dmaHandle1 = DMA_open(1, &dmaParams, &errCode);
/* Setup the default SPI Parameters */
SPI_Params_init(&spiParams);
spiParams.mode = SPI_MASTER;
spiParams.frameFormat = SPI_POL0_PHA0;
spiParams.pinMode = SPI_PINMODE_4PIN_CS;
// spiParams.shiftFormat = SPI_MSB_FIRST;
/* When communicating with PC through FTDI, it is difficult to toggle CS for every two bytes, hence set csHold to 1.
In this mode, the highest working SPI clock is 2MHz */
// spiParams.csHold = 1;
/* Enable DMA and set DMA channels */
spiParams.dmaEnable = 1;
spiParams.dmaHandle = dmaHandle1;
spiParams.u.masterParams.bitRate = 6000000U;
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;
/* Delay parameters */
spiParams.u.masterParams.c2tDelay = 0x20;
spiParams.u.masterParams.t2cDelay = 0x20;
spiParams.u.masterParams.wDelay = 0;
/* Open the SPI Instance */
spiHandle = SPI_open(0, &spiParams);
if (spiHandle == NULL)
{
System_printf("Error: Unable to open the Logging SPI Instance\n");
return;
}......
Thank you.