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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. MC0-Demo_PWM+ADC+DMA

MC0-Demo_PWM+ADC+DMA

已定时 已固定 已锁定 已移动 已解决 YTM32B1M系列
10 帖子 3 发布者 3.5k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • HAIYANGH 离线
    HAIYANGH 离线
    HAIYANG YunTu
    写于 最后由 HAIYANG 编辑
    #1
    1. 需求
      芯片系列:MC0
      功能需求描述
      3路pwm输出,20KHz频率,相位差90°和180°,占空比调节范围1%~99%
      6通道adc采集
      通过3路pwm高电平输出触发acd采集,每次触发采集adc的一个通道,采集完成用dma搬运,cpu不参与
      基于mc0 evb
      代码包:SDK 1.3.1
      编译器:Gcc/IAR
    2. 解决方案描述
      MC0可以产生PWM输出的有MPWM和eTMR两个模块,因为M系列都有eTMR,有通用性,这里选用eTMR生成PWM输出;
      a4a78684-f7dd-4c2d-92e1-5f4278a31e8e-image.png
      选用ADC0产生6路ADC,采用PWM_ch1,ch2,ch3的上升沿触发硬件采样,逐次采集6个通道;
      79ef6af1-dd2c-4bf2-bc40-d7e18cc08712-image.png
      ADC不使用中断,选用DMA的方式进行数据搬运;
    3. 示例说明
      MC0选用eTMR0的ch0、ch1、ch2生成3路PWM输出;
      产生90°和180°相位差,需要在配置PWM对齐模式时选用非对称模式,为了能在val0处触发trigger,ch0配置offset为10(给个较小的初始值即可),ch1配置offset为0x2000,ch2配置offset为0x4000,占空比调节直接调用eTMR_DRV_UpdatePwmChannel()函数即可;
      6d2faf7e-8c55-49ee-a2da-3c3375d165b9-image.png
      ADC配置ch0-ch5共六个通道,配置为硬件触发,TMU模块的触发源选择eTMR0_EXT_TRIG;因为要通过pwm高电平输出触发acd采集,所以PWM配置为val0值触发trigger信号;
      81fc3f41-7053-4c2f-84b6-a6f723fb0899-image.png
      777fc437-fd26-4cb0-8442-454322709cd2-image.png
      ADC的查询时钟要选择bus clock,其中MC0默认是bus clock,MD1和ME0是需要手动配置,否则可能出现ADC查询不到PWM的trigger信号的问题;
      a07035b3-363d-4f60-8a3a-cad9c072c464-image.png
      64fb1e87-3762-43aa-84a3-3ebd7908182b-image.png
      使用DMA的通道0来搬运ADC的6路采样数据,将数据从ADC的fifo里直接取到buffer里;
      src一直是ADC->FIFO,dest每次后移2byte,顺序存储6路采样值;
      dcf0bd88-3863-4efc-b41c-5549cb397177-image.png
    4. 工程代码
      基于MC0_EVB板,eTMR0_CH1,eTMR0_CH2,eTMR0_CH3通过测量PTC1,PTC2,PTC3可以看到波形;
      可以通过更改ADC_CH0 - ADC_CH5这六个ADC通道的采样值,观察adc_Result[0]-adc_Result[5]这六个buffer中对应的值是否改变;
      Pwm_Adc_Dma_Demo.zip
    1 条回复 最后回复
    2
    • HAIYANGH 离线
      HAIYANGH 离线
      HAIYANG YunTu
      在 回复了 samliu 最后由 编辑
      #3

      samliu 看一下你的pin脚,时钟和etmr配置

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

        我用MD测试了一下,只有一路输出,是什么原因

        HAIYANGH 1 条回复 最后回复
        0
        • HAIYANGH 离线
          HAIYANGH 离线
          HAIYANG YunTu
          在 回复了 samliu 最后由 编辑
          #3

          samliu 看一下你的pin脚,时钟和etmr配置

          1 条回复 最后回复
          0
          • samliuS 离线
            samliuS 离线
            samliu
            写于 最后由 编辑
            #4

            用的MD的SDK里面etmr的PWM demo,
            YCT生成的,不是Etmr_Pwm_Complementary_Demo,只根据帖子里面的附件修改了PWM的输出模式,,,,微信图片_20240826065339.png 地址)只修改了这个界面,微信图片_20240826065629.png 微信图片_20240826065635.png

            其它配置均demo默认配置。

            1 条回复 最后回复
            0
            • HAIYANGH 离线
              HAIYANGH 离线
              HAIYANG YunTu
              写于 最后由 编辑
              #5

              我用MD1的demo试了一下,波形是能正常出来两条的;
              image.png
              我看你改了demo工程的PWM通道,引脚配置是否也跟着做了更改呢

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

                噢,忽略掉了,可以了,谢谢!

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

                  image.png
                  你好,麻烦问一下如果需要在中心点触发,这个要怎么实现呢?

                  HAIYANGH 1 条回复 最后回复
                  0
                  • justinJ 离线
                    justinJ 离线
                    justin
                    写于 最后由 编辑
                    #8

                    image.png
                    目前测试下来好像只有这3个可以触发TMU

                    1 条回复 最后回复
                    0
                    • HAIYANGH 离线
                      HAIYANGH 离线
                      HAIYANG YunTu
                      在 回复了 justin 最后由 编辑
                      #9

                      justin 可以试试用一个相同etmr的空闲通道,配置为左对齐,占空比50%,val1触发;

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

                        好的,明白,谢了,我这边试试

                        1 条回复 最后回复
                        0
                        • FrankieF Frankie 将这个主题转为问答主题,在
                        • FrankieF Frankie 将这个主题标记为已解决,在

                      • 云途开发生态介绍

                        快速上手云途开发生态

                      • 云途论坛规则/Yuntu Forum Rules

                        发帖前请查看

                      • YT CONFIG TOOL调查问卷

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

                      • can
                        28
                        demo
                        23
                        uds
                        14
                        lin stack
                        13
                        md14
                        6
                        yt-link
                        6
                        fbl
                        5
                        adc模块
                        4
                        Online Users
                        胡鹏胡
                        胡鹏
                        lvbingruiL
                        lvbingrui
                        kid_liK
                        kid_li
                        JETTJ
                        JETT
                        waimanW
                        waiman
                        番茄+两个蛋番
                        番茄+两个蛋
                        • 登录

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