TI中文支持网
TI专业的中文技术问题搜集分享网站

AWR1642BOOST: SRR範例GPIO設定問題

Part Number:AWR1642BOOST

你好:

  我想使用SRR的範例增加GPIO控制,用來顯示燈號

  目前我的作法是在MSS裡的SRR_MSS_initTask增加腳位定義,代碼如下:

  Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINJ13_PADAC, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);
  Pinmux_Set_FuncSel(SOC_XWR16XX_PINJ13_PADAC, SOC_XWR16XX_PINJ13_PADAC_GPIO_1);
  Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINK13_PADAZ, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);
  Pinmux_Set_FuncSel(SOC_XWR16XX_PINK13_PADAZ, SOC_XWR16XX_PINK13_PADAZ_GPIO_2);

  GPIO_setConfig (SOC_XWR16XX_GPIO_1, GPIO_CFG_OUTPUT);
  GPIO_setConfig (SOC_XWR16XX_GPIO_2, GPIO_CFG_OUTPUT);

static void SRR_MSS_initTask (UArg arg0, UArg arg1)
{int32_terrCode;MMWave_InitCfginitCfg;UART_ParamsuartParams;Task_ParamstaskParams;SOC_SysIntListenerCfglistenerCfg;Semaphore_ParamssemParams;Mailbox_ConfigmboxCfg;/* Debug Message: */System_printf("Debug: Launched the Initialization Task\n");/****************************************************************************** Initialize the mmWave SDK components:*****************************************************************************//* Pinmux setting *//* Setup the PINMUX to bring out the UART-1 */Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINN5_PADBE, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);Pinmux_Set_FuncSel(SOC_XWR16XX_PINN5_PADBE, SOC_XWR16XX_PINN5_PADBE_MSS_UARTA_TX);Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINN4_PADBD, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);Pinmux_Set_FuncSel(SOC_XWR16XX_PINN4_PADBD, SOC_XWR16XX_PINN4_PADBD_MSS_UARTA_RX);/* Setup the PINMUX to bring out the UART-3 */Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINF14_PADAJ, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);Pinmux_Set_FuncSel(SOC_XWR16XX_PINF14_PADAJ, SOC_XWR16XX_PINF14_PADAJ_MSS_UARTB_TX);/* Setup the PINMUX to bring out the DSS UART */Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINP8_PADBM, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);Pinmux_Set_FuncSel(SOC_XWR16XX_PINP8_PADBM, SOC_XWR16XX_PINP8_PADBM_DSS_UART_TX);/*GPIO腳位設定*/Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINJ13_PADAC, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);Pinmux_Set_FuncSel(SOC_XWR16XX_PINJ13_PADAC, SOC_XWR16XX_PINJ13_PADAC_GPIO_1);Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINK13_PADAZ, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);Pinmux_Set_FuncSel(SOC_XWR16XX_PINK13_PADAZ, SOC_XWR16XX_PINK13_PADAZ_GPIO_2);GPIO_setConfig (SOC_XWR16XX_GPIO_1, GPIO_CFG_OUTPUT);GPIO_setConfig (SOC_XWR16XX_GPIO_2, GPIO_CFG_OUTPUT);/* Initialize the UART */UART_init();/* Initialize the GPIO */GPIO_init();/* Initialize the Mailbox */Mailbox_init(MAILBOX_TYPE_MSS);/* Open UART Driver: */UART_Params_init(&uartParams);uartParams.clockFrequency = MSS_SYS_VCLK;uartParams.baudRate= 115200;uartParams.isPinMuxDone= 1;/* Open the Command UART Instance */gSrrMSSMCB.commandUartHandle = UART_open(0, &uartParams);if (gSrrMSSMCB.commandUartHandle == NULL){System_printf("Error: Unable to open the Command UART Instance\n");return;}/* Setup the default UART Parameters */UART_Params_init(&uartParams);uartParams.writeDataMode = UART_DATA_BINARY;uartParams.readDataMode = UART_DATA_BINARY;uartParams.clockFrequency = MSS_SYS_VCLK;uartParams.baudRate= 115200*8;  //  115200*8uartParams.isPinMuxDone= 1U;/* Open the Logging UART Instance: */gSrrMSSMCB.loggingUartHandle = UART_open(1, &uartParams);if (gSrrMSSMCB.loggingUartHandle == NULL){System_printf("Error: MMWDemoMSS Unable to open the Logging UART Instance\n");return;}/****************************************************************************** Creating communication channel between MSS & DSS*****************************************************************************//* Create a binary semaphore which is used to handle mailbox interrupt. */Semaphore_Params_init(&semParams);semParams.mode= Semaphore_Mode_BINARY;gSrrMSSMCB.mboxSemHandle = Semaphore_create(0, &semParams, NULL);/* Setup the default mailbox configuration */Mailbox_Config_init(&mboxCfg);/* Setup the configuration: */mboxCfg.chType= MAILBOX_CHTYPE_MULTI;mboxCfg.chId= MAILBOX_CH_ID_0;mboxCfg.writeMode= MAILBOX_MODE_BLOCKING;mboxCfg.readMode= MAILBOX_MODE_CALLBACK;mboxCfg.readCallback = &MmwDemo_mboxCallback;/* Initialization of Mailbox Virtual Channel  */gSrrMSSMCB.peerMailbox = Mailbox_open(MAILBOX_TYPE_DSS, &mboxCfg, &errCode);if (gSrrMSSMCB.peerMailbox == NULL){/* Error: Unable to open the mailbox */System_printf("Error: Unable to open the Mailbox to the DSS [Error code %d]\n", errCode);return;}/* Create task to handle mailbox messges */Task_Params_init(&taskParams);taskParams.stackSize = 16*1024;Task_create(MmwDemo_mboxReadTask, &taskParams, NULL);/* Register Chirp Available Listener */memset ((void*)&listenerCfg, 0, sizeof(SOC_SysIntListenerCfg));listenerCfg.systemInterrupt= SOC_XWR16XX_MSS_CHIRP_AVAIL_IRQ;listenerCfg.listenerFxn= SRR_MSS_chirpIntCallback;listenerCfg.arg= 0;gSrrMSSMCB.chirpIntHandle = SOC_registerSysIntListener (gSrrMSSMCB.socHandle, &listenerCfg, &errCode);if (gSrrMSSMCB.chirpIntHandle == NULL){System_printf ("Error: Unable to register the Chirp Available Listener [Error code %d]\n", errCode);return;}/* Register Frame Start Listener */memset ((void*)&listenerCfg, 0, sizeof(SOC_SysIntListenerCfg));listenerCfg.systemInterrupt= SOC_XWR16XX_MSS_FRAME_START_INT;listenerCfg.listenerFxn= SRR_MSS_frameStartIntCallback;listenerCfg.arg= 0;gSrrMSSMCB.frameStartIntHandle = SOC_registerSysIntListener (gSrrMSSMCB.socHandle, &listenerCfg, &errCode);if (gSrrMSSMCB.frameStartIntHandle == NULL){System_printf("Error: Unable to register the Frame start Listener [Error code %d]\n", errCode);return ;}/****************************************************************************** Initialize the mmWave module:*****************************************************************************/memset ((void *)&initCfg, 0, sizeof(MMWave_InitCfg));/* Populate the initialization configuration:* The MMWAve is configured in minimal isolation mode. */initCfg.domain= MMWave_Domain_MSS;initCfg.socHandle= gSrrMSSMCB.socHandle;initCfg.eventFxn= &SRR_MSS_eventFxn;initCfg.cfgMode= MMWave_ConfigurationMode_MINIMAL;initCfg.executionMode= MMWave_ExecutionMode_ISOLATION;initCfg.linkCRCCfg.useCRCDriver= 1U;initCfg.linkCRCCfg.crcChannel= CRC_Channel_CH1;initCfg.cooperativeModeCfg.cfgFxn= &SRR_MSS_cfgFxn;initCfg.cooperativeModeCfg.startFxn = &SRR_MSS_startFxn;initCfg.cooperativeModeCfg.stopFxn  = &SRR_MSS_stopFxn;initCfg.cooperativeModeCfg.openFxn  = &SRR_MSS_openFxn;initCfg.cooperativeModeCfg.closeFxn = &SRR_MSS_closeFxn;/* Initialize and setup the mmWave Control module */gSrrMSSMCB.ctrlHandle = MMWave_init (&initCfg, &errCode);if (gSrrMSSMCB.ctrlHandle == NULL){/* Error: Unable to initialize the mmWave control module */System_printf ("Error: mmWave Control Initialization failed [Error code %d]\n", errCode);return;}System_printf ("Debug: Initialized the mmWave module\n");/****************************************************************************** Synchronize the mmWave module:*****************************************************************************/while (1){int32_t syncStatus;/* Get the synchronization status: */syncStatus = MMWave_sync (gSrrMSSMCB.ctrlHandle, &errCode);if (syncStatus < 0){/* Error: Unable to synchronize the mmWave control module */System_printf ("Error: mmWave Control Synchronization failed [Error code %d]\n", errCode);return;}if (syncStatus == 1){/* Synchronization acheived: */break;}/* Sleep and poll again: */Task_sleep(1);}System_printf ("Debug: Synchronized the mmWave module\n");#ifdef SUBFRAME_CONF_SRR_USRRgSrrMSSMCB.numChirpsPerSubframe[0] = SUBFRAME_SRR_NUM_CHIRPS_TOTAL;gSrrMSSMCB.numChirpsPerSubframe[1] = SUBFRAME_USRR_NUM_CHIRPS_TOTAL;#else#ifdef SUBFRAME_CONF_SRRgSrrMSSMCB.numChirpsPerSubframe[0] = SUBFRAME_SRR_NUM_CHIRPS_TOTAL;#endif#ifdef SUBFRAME_CONF_USRRgSrrMSSMCB.numChirpsPerSubframe[0] = SUBFRAME_USRR_NUM_CHIRPS_TOTAL;#endif#endif

#ifdef USE_LVDS_INTERFACE_FOR_OBJECT_DATA_TX/* Configure the LVDS streaming interface.*/{int32_t streamConfiguration = SRR_MSS_configureStreaming() ;if (streamConfiguration != 0){System_printf ("Error: Unable to activate the Streaming Session [Error code %d]\n", streamConfiguration);DebugP_assert (0);}}
#endif/****************************************************************************** Launch the mmWave control execution task* - This should have a higher priroity than any other task which uses the*mmWave control API*****************************************************************************/Task_Params_init(&taskParams);taskParams.priority  = 6;taskParams.stackSize = 3*1024;Task_create(SRR_MSS_mmWaveCtrlTask, &taskParams, NULL);/****************************************************************************** Setup the CLI*****************************************************************************/SRR_MSS_CLIInit ();
}

   但當我開UI後會出現錯誤訊息,請問是哪裡出了問題??

Nancy Wang:

根据截图中的错误提示,请检查一下设备管理器中的用户/数据端口。

dev.ti.com/…/node

,

nicky liu:

Hi Nancy:

  已有重覆進行測試,只要當SRR_MSS_initTask加入這幾段代碼要啟動UI時就會發生錯誤

,

Chris Meng:

你好,

SRR demo在mms_main.c的SRR_MSS_mssProcessDataPathTask函数里,也有对这两个硬件配置GPIO,请问是否有冲突?

赞(0)
未经允许不得转载:TI中文支持网 » AWR1642BOOST: SRR範例GPIO設定問題
分享到: 更多 (0)