找回密码
 立即注册
查看: 125|回复: 6

AI8051U硬件移相,一个脚输出SPWM正弦波,另一个脚输出移相90度方波,可以实现吗?

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:362
  • 最近打卡:2026-03-21 00:04:24
已绑定手机

5

主题

26

回帖

1702

积分

金牌会员

积分
1702
发表于 2026-2-14 09:56:49 | 显示全部楼层 |阅读模式
想用AI8051U通过DMA输出
一路100K的SPWM正弦波,但同时
还需要一路可移相0度或者90度的同步鉴相方波,
这个方波可以通过硬件移相实现吗?


回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:362
  • 最近打卡:2026-03-21 00:04:24
已绑定手机

5

主题

26

回帖

1702

积分

金牌会员

积分
1702
发表于 2026-2-14 10:19:04 | 显示全部楼层
是不是硬件移相功能只能移一模一样的波形,比如一路是SPWM正弦波,那移相出来的另一路也只能是一模一样的SPWM正弦波,只是相位不同而已

点评

是的,这个方波没法通过硬件移相得到。 因为SPWM本质也是一个占空比连续变化的方波,移相只能在单个周期内移动,移动完了还是一个SPWM方波 想要你说的这种移相,建议直接在DMA中断里操作IO口,因为频率不会很高,这  详情 回复 发表于 2026-2-14 10:38
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:693
  • 最近打卡:2026-03-21 14:40:05
已绑定手机
已实名认证

130

主题

3383

回帖

8815

积分

版主

积分
8815
发表于 2026-2-14 10:38:01 | 显示全部楼层
叽里*** 发表于 2026-2-14 10:19
是不是硬件移相功能只能移一模一样的波形,比如一路是SPWM正弦波,那移相出来的另一路也只能是一模一样的SP ...

是的,这个方波没法通过硬件移相得到。
因为SPWM本质也是一个占空比连续变化的方波,移相只能在单个周期内移动,移动完了还是一个SPWM方波
想要你说的这种移相,建议直接在DMA中断里操作IO口,因为频率不会很高,这么操作是可行的
简单的思路就是:将SPWM的一整个表,分为四段执行,分别是0~波峰,波峰~0,0~波谷,波谷~0。然后根据实际需要,可以选择在分段1、分段3结束取反io(0°方波),分段2,分段4结束取反io(90°方波),即可达到你的需求
具体可以参考梁工的示例程序:
Ai8051U- DMA支持高速高级PWM-HSPWMA例程:输出SPWM经过滤波可以得到正弦波 - 144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯人工智能技术交流网站 - AI32位8051交流社区
只需要传入DMA地址的时候,分为&(T_SINE_1000Hz[0]),&(T_SINE_1000Hz[14]),&(T_SINE_1000Hz[29]),&(T_SINE_1000Hz[44])即可(点数为60,每个起始地址为(点数/4*第几段)-1)四段依次传入即可
处理内容都写在void PWMAT_DMA_ISR (void) interrupt DMA_PWMAT_VECTOR中即可


当然,你这个100K的SPWM,频率比较高,使用io操作虽然可行,但是中断内占用时间就稍微多一些了
想要实现硬件的移相是不行,硬件的产生方波是可以的,不过要额外占用PWMB,通过调整PWMB为100K的方波,然后给CNTR中填入0或者一半的初始值,再跟PWMA保持一起开启定时器运行,也可以做到同步的输出
就是每次PWMA重载的时候,中间会稍微断一下(因为重新载入DMA需要时间),这时需要停下PWMB重启给初值然后再同步启动,不然两个就对不齐了
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:362
  • 最近打卡:2026-03-21 00:04:24
已绑定手机

5

主题

26

回帖

1702

积分

金牌会员

积分
1702
发表于 2026-2-14 10:51:56 | 显示全部楼层
王*** 发表于 2026-2-14 10:38
是的,这个方波没法通过硬件移相得到。
因为SPWM本质也是一个占空比连续变化的方波,移相只能在单个周期内 ...

谢谢版主,将波表分段DMA,这个思路妙啊
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:362
  • 最近打卡:2026-03-21 00:04:24
已绑定手机

5

主题

26

回帖

1702

积分

金牌会员

积分
1702
发表于 2026-2-14 11:02:21 | 显示全部楼层
王*** 发表于 2026-2-14 10:38
是的,这个方波没法通过硬件移相得到。
因为SPWM本质也是一个占空比连续变化的方波,移相只能在单个周期内 ...

那还想请教一下,是不是这种DMA的方式产生SPWM会导致波形不连续呢?因为重载需要时间,导致波形会断开一段时间,这样就不连续了

点评

是的,低频率下不明显,高频率下就比较影响了 你这个100K如果是PWM的基准频率,SPWM如果是1K这种,基本就看不出来,如果SPWM本身频率也高,那么可能就比较明显了 DMA装载中断的时候,占空比是不变的,从SPWM的波形来  详情 回复 发表于 2026-2-14 11:05
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:693
  • 最近打卡:2026-03-21 14:40:05
已绑定手机
已实名认证

130

主题

3383

回帖

8815

积分

版主

积分
8815
发表于 2026-2-14 11:05:24 | 显示全部楼层
叽里*** 发表于 2026-2-14 11:02
那还想请教一下,是不是这种DMA的方式产生SPWM会导致波形不连续呢?因为重载需要时间,导致波形会断开一 ...

是的,低频率下不明显,高频率下就比较影响了
你这个100K如果是PWM的基准频率,SPWM如果是1K这种,基本就看不出来,如果SPWM本身频率也高,那么可能就比较明显了
DMA装载中断的时候,占空比是不变的,从SPWM的波形来看,就像是有一小段横线的样子,主要看你能不能接受这种情况了,暂时没有太好的解决办法
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:362
  • 最近打卡:2026-03-21 00:04:24
已绑定手机

5

主题

26

回帖

1702

积分

金牌会员

积分
1702
发表于 2026-2-14 11:12:38 | 显示全部楼层
王*** 发表于 2026-2-14 11:05
是的,低频率下不明显,高频率下就比较影响了
你这个100K如果是PWM的基准频率,SPWM如果是1K这种,基本就 ...

好的,谢谢版主
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-22 03:28 , Processed in 0.123752 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表