补上后续:
代码需要移植官方的FP-SNS-DATALOG2,
部分驱动代码如下
if (ext_pdetect == true)
{
sI2C3BusObj = I2CBusTaskAlloc(&MX_I2C3InitParams);
if (ext_pdetect2 == false && ext_pdetect3 == false && ext_sensirion == false)
{
HAL_GPIO_WritePin(GPIO3_EX_GPIO_Port, GPIO3_EX_Pin, GPIO_PIN_SET);
spVL53L8CXObj = VL53L8CXTaskAlloc(&MX_GPIO_INT_TOFInitParams, NULL, NULL);
spSTHS34PF80Obj = STHS34PF80TaskAlloc(&MX_GPIO_INT_TMOSInitParams, NULL, NULL);
spVD6283TXObj = VD6283TXTaskAlloc(NULL, NULL, NULL);
}
else
{
spVL53L8CXObj = VL53L8CXTaskAlloc(NULL, NULL, &MX_GPIO3_EXInitParams);
spSTHS34PF80Obj = STHS34PF80TaskAlloc(NULL, NULL, &MX_GPIO3_EXInitParams);
spVD6283TXObj = VD6283TXTaskAlloc(NULL, NULL, &MX_GPIO3_EXInitParams);
if (ext_pdetect2 == true)
{
spVL53L8CX_2Obj = VL53L8CXTaskAllocSetName(NULL, NULL, &MX_GPIO2_EXInitParams, "vl53l8cx_2");
spSTHS34PF80_2Obj = STHS34PF80TaskAllocSetName(NULL, NULL, &MX_GPIO2_EXInitParams, "sths34pf80_2");
spVD6283TX_2Obj = VD6283TXTaskAllocSetName(NULL, NULL, &MX_GPIO2_EXInitParams, "vd6283tx_2");
}
if (ext_pdetect3 == true)
{
spVL53L8CX_3Obj = VL53L8CXTaskAllocSetName(NULL, NULL, &MX_GPIO1_EXInitParams, "vl53l8cx_3");
spSTHS34PF80_3Obj = STHS34PF80TaskAllocSetName(NULL, NULL, &MX_GPIO1_EXInitParams, "sths34pf80_3");
spVD6283TX_3Obj = VD6283TXTaskAllocSetName(NULL, NULL, &MX_GPIO1_EXInitParams, "vd6283tx_3");
}
if (ext_sensirion == true)
{
spSHT40Obj = SHT40TaskAlloc(NULL, NULL);
spSGP40Obj = SGP40TaskAlloc(NULL, NULL);
spLPS22DFObj = LPS22DFTaskAlloc(NULL, NULL);
}
}
}
/ Add the task object to the context /
res = ACAddTask(pAppContext, (AManagedTask *) sUtilObj);
res = ACAddTask(pAppContext, (AManagedTask *) sDatalogAppObj);
res = ACAddTask(pAppContext, (AManagedTask *) sI2C2BusObj);
res = ACAddTask(pAppContext, (AManagedTask *) sSPI2BusObj);
if (spSTHS34PF80Obj)
{
res = ACAddTask(pAppContext, (AManagedTask *) sI2C3BusObj);
res = ACAddTask(pAppContext, (AManagedTask *)spVL53L8CXObj);
res = ACAddTask(pAppContext, (AManagedTask *)spSTHS34PF80Obj);
res = ACAddTask(pAppContext, (AManagedTask *)spVD6283TXObj);
}
if (spSTHS34PF80_2Obj)
{
res = ACAddTask(pAppContext, (AManagedTask *)spVL53L8CX_2Obj);
res = ACAddTask(pAppContext, (AManagedTask *)spSTHS34PF80_2Obj);
res = ACAddTask(pAppContext, (AManagedTask *)spVD6283TX_2Obj);
}
if (spSTHS34PF80_3Obj)
{
res = ACAddTask(pAppContext, (AManagedTask *)spVL53L8CX_3Obj);
res = ACAddTask(pAppContext, (AManagedTask *)spSTHS34PF80_3Obj);
res = ACAddTask(pAppContext, (AManagedTask *)spVD6283TX_3Obj);
}
if (spLPS22DFObj)
{
res = ACAddTask(pAppContext, (AManagedTask *) spSHT40Obj);
res = ACAddTask(pAppContext, (AManagedTask *) spSGP40Obj);
res = ACAddTask(pAppContext, (AManagedTask *) spLPS22DFObj);
}
res = ACAddTask(pAppContext, (AManagedTask *) sIIS2ICLXObj);
res = ACAddTask(pAppContext, (AManagedTask *) sIIS2MDCObj);
res = ACAddTask(pAppContext, (AManagedTask *) sILPS22QSObj);
res = ACAddTask(pAppContext, (AManagedTask *) sIMP34DT05Obj);
res = ACAddTask(pAppContext, (AManagedTask *) sSTTS22HObj);
res = ACAddTask(pAppContext, (AManagedTask *) sISM330DHCXObj);
pIIS2ICLX_ACC_PnPLObj = Iis2iclx_Acc_PnPLAlloc();
pIIS2MDC_MAG_PnPLObj = Iis2mdc_Mag_PnPLAlloc();
pILPS22QS_PRESS_PnPLObj = Ilps22qs_Press_PnPLAlloc();
pIMP34DT05_MIC_PnPLObj = Imp34dt05_Mic_PnPLAlloc();
pSTTS22H_TEMP_PnPLObj = Stts22h_Temp_PnPLAlloc();
pISM330DHCX_ACC_PnPLObj = Ism330dhcx_Acc_PnPLAlloc();
pISM330DHCX_GYRO_PnPLObj = Ism330dhcx_Gyro_PnPLAlloc();
if (spSTHS34PF80Obj)
{
pVl53l8cx_Tof_PnPLObj = Vl53l8cx_Tof_PnPLAlloc();
pSths34pf80_Tmos_PnPLObj = Sths34pf80_Tmos_PnPLAlloc();
pVd6283tx_Als_PnPLObj = Vd6283tx_Als_PnPLAlloc();
}
if (spSTHS34PF80_2Obj)
{
pVl53l8cx_2_Tof_PnPLObj = Vl53l8cx_2_Tof_PnPLAlloc();
pSths34pf80_2_Tmos_PnPLObj = Sths34pf80_2_Tmos_PnPLAlloc();
pVd6283tx_2_Als_PnPLObj = Vd6283tx_2_Als_PnPLAlloc();
}
if (spSTHS34PF80_3Obj)
{
pVl53l8cx_3_Tof_PnPLObj = Vl53l8cx_3_Tof_PnPLAlloc();
pSths34pf80_3_Tmos_PnPLObj = Sths34pf80_3_Tmos_PnPLAlloc();
pVd6283tx_3_Als_PnPLObj = Vd6283tx_3_Als_PnPLAlloc();
}
if (spLPS22DFObj)
{
pSgp40_Voc_PnPLObj = Sgp40_Voc_PnPLAlloc();
pSht40_Hum_PnPLObj = Sht40_Hum_PnPLAlloc();
pSht40_Temp_PnPLObj = Sht40_Temp_PnPLAlloc();
pLps22df_Press_PnPLObj = Lps22df_Press_PnPLAlloc();
}
pDeviceInfoPnPLObj = Deviceinformation_PnPLAlloc();
pAcquisitionInfoPnPLObj = Acquisition_Info_PnPLAlloc();
pTagsInfoPnPLObj = Tags_Info_PnPLAlloc();
pFirmwareInfoPnPLObj = Firmware_Info_PnPLAlloc();
pLogControllerPnPLObj = Log_Controller_PnPLAlloc();
pAutomodePnPLObj = Automode_PnPLAlloc();