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

YunTu Forum

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

MC0-Demo_PWM+ADC+DMA

已定时 已固定 已锁定 已移动 YTM32B1M系列
10 帖子 3 发布者 310 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • ytm0267Y 离线
    ytm0267Y 离线
    ytm0267
    写于 最后由 ytm0267 编辑
    #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
    • samliuS 离线
      samliuS 离线
      samliu
      写于 最后由 编辑
      #2

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

      ytm0267Y 1 条回复 最后回复
      0
      • ytm0267Y 离线
        ytm0267Y 离线
        ytm0267
        在 回复了 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
          • ytm0267Y 离线
            ytm0267Y 离线
            ytm0267
            写于 最后由 编辑
            #5

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

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

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

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

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

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

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

                  1 条回复 最后回复
                  0
                  • ytm0267Y 离线
                    ytm0267Y 离线
                    ytm0267
                    在 回复了 justin 最后由 编辑
                    #9

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

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

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

                      1 条回复 最后回复
                      0

                    • 云途论坛规则/Yuntu Forum Rules

                      发帖前请查看

                    • YCT离线License申请流程

                      帮助没办法联网的电脑使用YCT

                    • YT CONFIG TOOL调查问卷

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

                    • demo
                      12
                      can
                      9
                      lin stack
                      6
                      yt-link
                      5
                      vscode
                      3
                      adc模块
                      2
                      i2c
                      2
                      uuid
                      2
                      Online Users
                      • 登录

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