读取温度C值出现ACCERR
未解决
YTM32B1M系列
-
读取NVR中的温度C值出现了ACCERR,这个可能啥原因导致的?
static uint32_t SafMgrUser_ReadOptNvr(uint32_t Address) { uint32_t u32Data = 0U; /* Step 0: Wait for IDLE flag to be set */ while (0U == (EFM->STS & (EFM_STS_IDLE_MASK))) { /* wait */ } /* Enter Fls critical section to prevent concurrent EFM access */ SchM_Enter_Fls_FLS_EXCLUSIVE_AREA_07(); /* Add NOP command to clear write buffer */ EFM->CMD = 0; /* Step 1: Clear error status of EFM STS register */ EFM->STS = EFM_STS_FAIL_MASK | EFM_STS_ACCERR_MASK | EFM_STS_UNRECOVERR_MASK | EFM_STS_RECOVERR_MASK | EFM_STS_DONE_MASK; #if (PLATFORM_MPU_CFG == STD_ON) ARM_MPU_Disable(); #endif /* Step 2: Set the address that needs to be read in the NVR_ADDR register */ EFM->NVR_ADDR = Address; #if (PLATFORM_MPU_CFG == STD_ON) ARM_MPU_Enable(MPU_CTRL_PRIVDEFENA_Msk); #endif /* Step 3: Write 0xFD9573F5 to CMD_UNLOCK to unlock the command */ EFM->CMD_UNLOCK = 0xFD9573F5U; /* Step 4: Set Read NVR command (0x42) in CMD register */ EFM->CMD = 0x42U; /* Exit Fls critical section */ SchM_Exit_Fls_FLS_EXCLUSIVE_AREA_07(); /* Step 5: Wait for DONE flag to be set */ while (0U == (EFM->STS & (EFM_STS_DONE_MASK))) { /* wait */ } /* Step 6: Read NVR_DATA0 and NVR_DATA1 */ if (0U == (EFM->STS & EFM_STS_ACCERR_MASK)) { u32Data = EFM->NVR_DATA[0]; /* NVR_DATA[1] also available if needed */ } return u32Data; }

-
tx007007 点击链接直接加入会议:
https://meeting.tencent.com/dm/wr7sc3E5Bq4h#腾讯会议:751-895-963
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...
