【TI毫米波雷达笔记】SOC外设初始化配置及驱动(以IWR6843AOP为例)
最基本的工程建立好以后
 需要给SOC进行初始化配置
	SOC_Cfg         socCfg;     //SOC配置结构体
    Task_Params     taskParams; //任务参数
    SOC_Handle      socHandle;
    ESM_init(0U);               //与安全等有关,可略过
    /* Initialize the SOC configuration: */
    /* 初始化SOC配置结构体 */
    memset ((void *)&socCfg, 0, sizeof(SOC_Cfg));
    memset((void *)&MMWave_Global_Params,0,sizeof(MMWave_Global));
    /* 配置SOC配置结构体 */
    /* Populate the SOC configuration: */
    socCfg.clockCfg = SOC_SysClock_INIT;
    socCfg.mpuCfg = SOC_MPUCfg_CONFIG;
    /* require to UNHALT the DSS if this core is available in selected device */
    socCfg.dssCfg = SOC_DSSCfg_UNHALT;
    /* Initialize the SOC Module: This is done as soon as the application is started
     * to ensure that the MPU is correctly configured. */
    /* SOC初始化,必须在系统运行后尽快调用该初始化函数 */
    socHandle = SOC_init (&socCfg, &errCode);
    if (socHandle == NULL)
    {
        System_printf ("Error: SOC Module Initialization failed [Error code %d]\n", errCode);
        return -1;
    }
 
这是最基本的配置模板
 包含了SOC时钟配置
 MPU初始化和DSS初始化
而如果需要用到毫米波雷达和安全功能
 则需要对BSS进行上电 并进行安全配置
/* Wait for BSS powerup */
    if (SOC_waitBSSPowerUp(socHandle, &errCode) < 0)
    {
        /* Debug Message: */
        System_printf ("Debug: SOC_waitBSSPowerUp failed with Error [%d]\n", errCode);
        return 0;
    }
    /* Check if the SOC is a secure device */
    if (SOC_isSecureDevice(socHandle, &errCode))
    {
        /* Disable firewall for JTAG and LOGGER (UART) which is needed by all unit tests */
        SOC_controlSecureFirewall(socHandle,
                                  (uint32_t)(SOC_SECURE_FIREWALL_JTAG | SOC_SECURE_FIREWALL_LOGGER),
                                  SOC_SECURE_FIREWALL_DISABLE,
                                  &errCode);
    }
 
最后 把soc的句柄放在一个全局变量中 结尾开启BIOS
MMWave_Global_Params.handle.socHandle = socHandle;
    /* Debug Message: */
    System_printf ("Debug: Launching the MMW HWA Demo\n");
    /* Initialize the Task Parameters. */
    /* 创建一个任务用于测试 */
    Task_Params_init(&taskParams);
    //taskParams.priority = 3;      //优先级3
    MMWave_Global_Params.task.init = Task_create(MMWave_InitTask, &taskParams, NULL);
    /* Start BIOS */
    BIOS_start();
    return 0;
 
并不需要调用
MCPI_LOGBUF_INIT(9216);
 
和
MCPI_Initialize();
 
如果调用了 可能会报警告说MCPI的位置没指定
 但并不影响调试
 
 编译后调试运行 可以看到打印的信息 即配置成功



















![java八股文面试[java基础]——如何实现不可变的类](https://img-blog.csdnimg.cn/f2a807b64279437aa3c4ee78763369d8.png)