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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. YTM32B1ME0 读取ADC FIFO数据的通道号与配置通道不一致

YTM32B1ME0 读取ADC FIFO数据的通道号与配置通道不一致

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

    Diga 请问下问题1出现的原因是什么:
    1.我配置ADC的一组为: 通道 0,1,12,13;当我读取ADC->FIFO时,读出的通道是0, 12, 9, 9;

    DigaD 1 条回复 最后回复
    0
    • DigaD 离线
      DigaD 离线
      Diga
      在 回复了 FarleyHuang 最后由 编辑
      #4

      @FarlyHuang 大抵是因为你下面打开了 Memory 窗口,0x4004004C 正好是 ADC->FIFO 寄存器的地址,跟读左侧的寄存器窗口效果是一样的

      1 条回复 最后回复
      0
      • FarleyHuangF 离线
        FarleyHuangF 离线
        FarleyHuang
        写于 最后由 FarleyHuang 编辑
        #5

        Diga 我现在把memory读取ADC-> FIFO的视图关闭了,现在读取通道号仍然与配置不一样
        3fbd7a66-f8f0-4a09-bdc0-137b02b0fa5c-image.png

        下次是我调试的配置:

        /* adc_config0 */
        const adc_converter_config_t adc_config0={
            .clockDivider=0,
            .startTime=12,
            .sampleTime=2,
            .overrunMode=false,
            .autoOffEnable=false,
            .waitEnable=false,
            .trigger=ADC_TRIGGER_SOFTWARE,
            .align=ADC_ALIGN_RIGHT,
            .resolution=ADC_RESOLUTION_12BIT,
            .dmaWaterMark=0,
            .dmaEnable=false,
            .sequenceConfig={
                .sequenceMode=ADC_CONV_LOOP,
                .sequenceIntEnable=false,
                .convIntEnable=false,
                .readyIntEnable=false,
                .ovrunIntEnable=false,
                .sampIntEnable=false,
                .channels={
                    ADC_INPUTCHAN_EXT0,
                    ADC_INPUTCHAN_EXT1,
                    ADC_INPUTCHAN_EXT12,
                    ADC_INPUTCHAN_EXT13,
                },
                .totalChannels=4,
            },
            .compareConfig={
                .compareEnable=false,
                .compareAllChannelEnable=false,
        
                .compHigh=4095,
                .compLow=0,
                .compIntEnable=false,
            },
        };
        
        #include "adc.h"
        
        #define ADC_INST 0U
        
        adc_converter_config_t get_adc_config0;
        
        uint8_t set_adc_sequence_cnt = 2; 
        uint8_t get_adc_sequence_cnt = 2; 
        
        void ADC_Init(void)
        {
            ADC_DRV_ConfigConverter(ADC_INST,&adc_config0);
            ADC_DRV_Start(ADC_INST);
        
            //get adc sequence length
            set_adc_sequence_cnt = adc_config0.sequenceConfig.totalChannels;
            ADC_DRV_GetConverterConfig(ADC_INST, &get_adc_config0);
            get_adc_sequence_cnt = get_adc_config0.sequenceConfig.totalChannels;
        }
        
        
        uint32_t adc_FIFO_values[] = {0,0,0,0};
        uint16_t adc_channels_values[] = {0,0,0,0};
        
        void ADC_Get_Value_10ms(void)
        {
            uint32 reg_value = 0;
            for (uint8_t i = 0; i < set_adc_sequence_cnt; i++)
            {
                reg_value = ADC_DRV_ReadSeqtagAndData(ADC_INST);
                uint8_t channel_id = reg_value>>16;
                // uint8_t channel_id = (reg_value>>16)&0x1f;
                uint16_t chan_raw_data = (reg_value&0x0000ffff);
        
                adc_FIFO_values[i] = reg_value;
                adc_channels_values[i] = channel_id;
                if(channel_id == 0)//ADC0_SE0
                {
                    uint16 ADC_mV_IntPackVolt = 0;
                    ADC_mV_IntPackVolt = (reg_value&0x0000ffff)*3300/4096;
                    //test code to view the convert result of ADC
                    ADC_mV_IntPackVolt = 1100;
                }
            }
            ADC_DRV_Start(ADC_INST);
        }
        
        DigaD 番茄+两个蛋番 2 条回复 最后回复
        0
        • DigaD 离线
          DigaD 离线
          Diga
          在 回复了 FarleyHuang 最后由 编辑
          #6

          @FarlyHuang 看起来还是有个什么东西在读取 ADC->FIFO ,你读到的第三个值 0x9094C,应该就是 FIFO 空了之后的值。也就是你软件读了两个值之后,ADC->FIFO 已经空了。
          可以再 check 一下你的调试环境,如果可以的话,尽量换别的 IDE 再试试(KEIL,IAR,OZone)

          1 条回复 最后回复
          0
          • FarleyHuangF 离线
            FarleyHuangF 离线
            FarleyHuang
            写于 最后由 编辑
            #7

            Diga 好的, 我用OZone尝试一下

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

              Diga 感谢指导, 使用OZone 尝试后,读取的通道ID与配置项一致了;

              顺便请教一下,如果使用vs code debug情况下,怎么排查问题是哪里引起的乱序呢? 因为使用vs code是比较方便的

              image.png

              FrankieF 1 条回复 最后回复
              0
              • FrankieF 离线
                FrankieF 离线
                Frankie YunTu
                在 回复了 FarleyHuang 最后由 编辑
                #9

                @FarlyHuang 关于vscode debug,你可以在这个地方问题:https://github.com/Marus/cortex-debug

                1 条回复 最后回复
                0
                • FarleyHuangF 离线
                  FarleyHuangF 离线
                  FarleyHuang
                  写于 最后由 编辑
                  #10

                  Frankie 好的,感谢

                  1 条回复 最后回复
                  0
                  • DigaD Diga 在 中 引用了 这个主题
                  • 番茄+两个蛋番 离线
                    番茄+两个蛋番 离线
                    番茄+两个蛋
                    回复了FarleyHuang 最后由 编辑
                    #11

                    FarleyHuang 你好,初始化的时候已经开启了ADC_DRV_Start,后续获取后还需要再次调用吗?这是为什么啊?

                    YTCQ_shejiwangY 1 条回复 最后回复
                    0
                    • YTCQ_shejiwangY 在线
                      YTCQ_shejiwangY 在线
                      YTCQ_shejiwang YunTu
                      回复了番茄+两个蛋 最后由 编辑
                      #12

                      番茄+两个蛋
                      软件触发,触发模式不为Countinous,是需要再次触发的(Start)。

                      1 条回复 最后回复
                      0

                    • 云途开发生态介绍

                      快速上手云途开发生态

                    • 云途论坛规则/Yuntu Forum Rules

                      发帖前请查看

                    • YT CONFIG TOOL调查问卷

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

                    • can
                      23
                      demo
                      20
                      uds
                      13
                      lin stack
                      12
                      md14
                      6
                      fbl
                      5
                      yt-link
                      5
                      adc模块
                      4
                      Online Users
                      Tiger987T
                      Tiger987
                      FrankF
                      Frank
                      zhaodong1Z
                      zhaodong1
                      xianghanX
                      xianghan
                      luohaoL
                      luohao
                      ganyongchaoG
                      ganyongchao
                      YTCQ_shejiwangY
                      YTCQ_shejiwang
                      yt0069Y
                      yt0069
                      • 登录

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