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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. ME05 ADC_STS标志清除时序问题与规避方案

ME05 ADC_STS标志清除时序问题与规避方案

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

    1. 问题总结

    1.1 核心结论

    ADC 的 STS 寄存器中 EOS、SQ、SEQ 等标志位为写 1 清零。写 1 只发起清除请求,标志位需要 6 个 ADC 功能时钟(fADC) 才真正变为 0。

    1.2 问题表现

    若清标志与下一次启动转换的间隔不足 6 个 fADC 周期,标志尚未清除即进入下一流程,FIFO 返回的仍是上一通道的采样结果,表现为通道错位。

    2. 问题机理

    2.1 清除窗口为 6 个功能时钟

    STS 标志的复位由 ADC 功能时钟域完成,软件写 1 与位真正翻转之间固定相差 6 个 fADC 周期。窗口期内回读 STS 仍返回 1,FIFO 也未按新一次转换刷新。两种时序的差异如下。
    3ff1ab59-49f2-4dbd-ade1-057e2427971e-image.png

    2.2 故障特征

    该问题不带随机性,但极易被误判为通道配置错误,可按表 1 的三条特征交叉判断。
    1c308bb0-e67c-4a10-a423-7313407de6e8-image.png
    (清标志时序不足的典型表现。三条同时出现,基本可判定为时序问题。)

    3. 测试记录

    1. 一开始调试时没有在第10行加EOSEQ等待标志清零,测试发现ADC切换了通道后总是会错位;
    2. 之后在该处加了等待标志清零或加延时后,问题消失。
    static uint16 BootCheck_ReadChannel(uint8 channel)
    {
        volatile ADC_Type *adc = ADC0;
        uint16 raw;
    
        adc->CHSEL[0] = channel;
        /* 清序列结束标志 */
        adc->STS = ADC_STS_EOSEQ_MASK;
        /* 确认旧完成标志已清零,避免将其误判为本次转换完成。 */
        while (0U != (adc->STS & ADC_STS_EOSEQ_MASK))
        {
        }
        /* 启动转换 */
        adc->CTRL |= ADC_CTRL_ADSTART_MASK;
        /* 等待序列转换完成 */
        while (0U == (adc->STS & ADC_STS_EOSEQ_MASK))
        {
            /* 等待转换完成 */
        }
        raw = (uint16)(adc->FIFO & ADC_FIFO_DATA_MASK);
    
        return raw;
    }
    

    18de63e4-b226-47ec-962e-bc32d31efce4-image.png

    1 条回复 最后回复
    0
    • xianghanX xianghan 从 Blogs 移动了该主题
    • FrankieF 离线
      FrankieF 离线
      Frankie YunTu
      编写于 最后由 编辑
      #2

      规避方案仅供参考。建议加timeout,不要一直while

      1 条回复 最后回复
      1

    • 云途开发生态介绍

      快速上手云途开发生态

    • 云途论坛规则/Yuntu Forum Rules

      发帖前请查看

    • YT CONFIG TOOL调查问卷

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

    • can
      31
      demo
      26
      uds
      16
      lin stack
      13
      fbl
      6
      md14
      6
      yt-link
      6
      adc模块
      4
      Online Users
      • 登录

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