跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. 读取温度C值出现ACCERR

读取温度C值出现ACCERR

已定时 已固定 已锁定 已移动 未解决 YTM32B1M系列
10 帖子 4 发布者 101 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • OliverChenO 离线
    OliverChenO 离线
    OliverChen
    编写于 最后由 编辑
    #1

    读取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;
    }
    

    883250dd-4eec-40ad-9345-55505a6df531-5bed317aa64e4f3ec9afdd02acf916df.png
    e47a9622-6d8a-4b79-9951-0c4fb449b6fa-image.png

    1 条回复 最后回复
    0
    • DigaD 离线
      DigaD 离线
      Diga
      编写于 最后由 编辑
      #2

      读的哪个地址时候出错的

      OliverChenO 1 条回复 最后回复
      0
      • OliverChenO 离线
        OliverChenO 离线
        OliverChen
        回复了Diga 最后由 编辑
        #3

        Diga 0x100103f8UL
        c89b062f-3615-4007-806c-28c768f851b6-image.png

        1 条回复 最后回复
        0
        • swustS 离线
          swustS 离线
          swust YunTu
          编写于 最后由 编辑
          #4

          操作之前关一下全局中断呢

          OliverChenO 1 条回复 最后回复
          0
          • OliverChenO 离线
            OliverChenO 离线
            OliverChen
            回复了swust 最后由 编辑
            #5

            swust 代码在1L,使用了SchM_Enter_Fls_FLS_EXCLUSIVE_AREA_07这个接口,应该是关了

            1 条回复 最后回复
            0
            • tx007007T 离线
              tx007007T 离线
              tx007007
              编写于 最后由 编辑
              #6

              从你的NVR_addr来看是0地址,可能传参出问题了,你这里改成绝对地址或者把传参的变量搞成全局看看

              OliverChenO 1 条回复 最后回复
              0
              • OliverChenO 离线
                OliverChenO 离线
                OliverChen
                回复了tx007007 最后由 编辑
                #7

                tx007007 这个估计是因为断点打的位置在Step6。实际上DATA0是能读到C值的,但是就是会出这个错误。我是直接使用的SafMgrUser_ReadOptNvr(0x100103f8UL)读取的。

                1 条回复 最后回复
                0
                • tx007007T 离线
                  tx007007T 离线
                  tx007007
                  编写于 最后由 编辑
                  #8

                  要不你拉个会议,远程给你看一下,看能不能找到原因

                  OliverChenO 2 条回复 最后回复
                  0
                  • OliverChenO 离线
                    OliverChenO 离线
                    OliverChen
                    回复了tx007007 最后由 编辑
                    #9

                    tx007007 可以

                    1 条回复 最后回复
                    0
                    • OliverChenO 离线
                      OliverChenO 离线
                      OliverChen
                      回复了tx007007 最后由 编辑
                      #10

                      tx007007 点击链接直接加入会议:
                      https://meeting.tencent.com/dm/wr7sc3E5Bq4h

                      #腾讯会议:751-895-963

                      1 条回复 最后回复
                      0

                    • 云途开发生态介绍

                      快速上手云途开发生态

                    • 云途论坛规则/Yuntu Forum Rules

                      发帖前请查看

                    • YT CONFIG TOOL调查问卷

                      帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                    • can
                      25
                      demo
                      23
                      lin stack
                      13
                      uds
                      13
                      md14
                      6
                      yt-link
                      6
                      fbl
                      5
                      adc模块
                      4
                      Online Users
                      • 登录

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 最新
                      • 标签
                      • 热门