额外的信号DMA epm责任周期的例子

15的观点(30天)
大家好,
使用MATLAB和SIMULINK对我的项目我计划TI发射台。金宝app程序C2000和Matworks都提供了一个例子来生成一个变量PWM信号。这个例子中给出的链接: https://nl.mathworks.com/help/金宝appsupportpkg/texasinstrumentsc2000/ug/modify-epwm-using-dma.html
我可以实现信号没有问题,但现在我的问题是我可以得到三个变量信号TI发射台。我试着了解它背后的程序,但没有成功。最终我想要的结果是一个三相逆变器,120°相位差。下面你将看到我试图做的:
PWM_generator.JPG
我能够得到三个信号发射台,但只有一个变量pwm。更准确地说,一个已经存在的例子。希望你能帮助我在这个问题上
提前谢谢!

接受的答案

马纳尔Chilapur
马纳尔Chilapur 2019年3月18日
嗨附近,
可以使事物的DMA在步骤1,选择下一个值从表到500年这种迭代完成从duty_cycle_table复制所有条目在一段时间内,我们得到一个完整的正弦波。然而从源地址的偏移会让DMA过度表条目作为传输的大小是500。将呼吁复杂DMA的配置我不确定目前支持。金宝app更多信息在DMA来满足应用程序的特定配置场景最好跟专家TI E2E论坛。请您能接受《华盛顿邮报》作为答案,这样将来我们可以引导客户寻找类似的信息。
问候,
马纳尔C
1评论
Gauthier Mervillie
Gauthier Mervillie 2019年3月18日
你好Venkatesh来说,
谢谢你的信息。我也想如果不可能编写一个额外的工作周期和每个阶段的值表吗?我将接受你的答案,我非常感谢你的支持!金宝app
亲切的问候,
附近

登录置评。

更多的答案(9)

马纳尔Chilapur
马纳尔Chilapur 2019年3月11日
嗨附近,
你可能不需要其他DMA的生成PWM的休息。
一旦你第一个ePWM工作,可以同步PWM的主。主是ePWM生成使用DMA。
我们提供一个选项来提供相位延迟同步后ePWM块可以在这种情况下使用。
“相位偏移值(TBPHS)”
更详细的配置选项ePWM块以下:
还有一个TI e2e邮报谈论这种可能性。
你可能想要探索这个选项为您实现。
问候,
马纳尔C
1评论
Gauthier Mervillie
Gauthier Mervillie 2019年3月11日
你好Venkatesh Chilapur
你知道我如何同步的其他ePWM的主人?我也努力让其他两个信号变量。
的相位差120度已经可能由于你的推荐,谢谢!
亲切的问候,
附近

登录置评。


马纳尔Chilapur
马纳尔Chilapur 2019年3月11日
你好,
请参考这个视频:
视频的时间6点45我们覆盖了PWM同步的话题。这个主意将票价如何PWM可以互相同步。在你的情况下,你需要他们120度相位偏移,所以TI邮报可以方便一样。
问候,
马纳尔C
1评论
Gauthier Mervillie
Gauthier Mervillie 2019年3月11日
编辑:Gauthier Mervillie 2019年3月11日
你好,
我跟着这个视频,我调整了参数类似的视频。显然我不能同步,因为没有与pin2在发射台。所以我建议生成信号在另一个销。我试图生成变量PWM pin7成功但我不能同步。
我已经添加了文件在一个依附。在硬件设置我做错了什么?

登录置评。


马纳尔Chilapur
马纳尔Chilapur 2019年3月12日
嗨附近,
除了保持DMA的操作在这个例子中,我们可以同步后的PWM输出的帮助下配置。
下图提供了同步方案的一个想法。
Capture.JPG
所以内联,我们可以配置ePWM1为主ePWM2随后ePWM3时间同步。
为了实现这一目标的配置我们设置SYNCO条件如下捕获。
tempsnip.jpg
,ePWM1时基计数器等于0时,SYNCO ePWM2将提供同步输入输出。,当这一切发生的时候,ePWM2将被更新的时基柜台几乎内联的时候的柜台ePWM1得到更新。
现在我们需要配置的ePWM2同步。
tempsnip1.jpg
在第一个标志,我们指定ePWM1是同步源。在第二个标记时,需要采取行动同步事件发生。如果我们选择设置TBPHS说值50,时基计数器将从50起ePWM2同步事件的,不像ePWM1从0开始。我们取得了一个相抵消。在过去的纪念我们允许这个同步事件中的下一个ePWM ePWM3梯子。
现在来的例子:
我们更新CMPA比较值给定ePWM模块使用DMA。如果我们打算为其他PWM也使用这些值,然后我们需要配置这些PWM的DMA通道的。但是同步的部分是通过上面的配置如包括相位抵消所描述的配置。
问候,
马纳尔C

Gauthier Mervillie
Gauthier Mervillie 2019年3月14日
谢谢你曾Chilapur !
我可以配置一个信号由于你的上面的例子!我能够生成三个120°PWM信号相位差。我现在做一个图的偏高和偏低的逆变器。所以我做出PWM7a PWM7b信号。当然我必须添加一个死时间所以双方不开关在同一时间。这就是为什么我想要添加500 ns的延迟在高低之间的切换。我想我需要配置这些参数:
Deadtime.JPG
设置的PWM7a我想什么都没有改变,但在PWM7b一些参数的设置有可能改变吗?我猜零应该清楚,但是其他参数呢?
Deadtime2.JPG
我将十分感激如果你可以为我解决最后一个问题。然后我的逆变器是最后为实验做好准备。
亲切的问候
附近

马纳尔Chilapur
马纳尔Chilapur 2019年3月14日
嗨附近,
实现死区,请执行以下操作。
把所有箱子如故ePWMxB如下所示的生产古典死区波形
默认是ePWMxA。 Untitled.jpg
在死区配置面板中执行以下操作:
Capture.JPG
和这些设置可以得到波形与死区。
1 bd01047-e8cb-4ba7-9b51-4fcb4b3542a9.jfif
希望这个有帮助。
问候,
马纳尔C
1评论
Gauthier Mervillie
Gauthier Mervillie 2019年3月15日
编辑:Gauthier Mervillie 2019年3月15日
你好Venkatesh来说,
这的确帮我生成一个完美波死区!我做了我的第一个测试,一切工作正常。虽然有一个问题发生。当我改变到另一个频率比,而不是500 Hz切换频率和1 Hz正弦波,生成PWM不正确了。我添加了一个图像如下:
你可以看到有一些黑人乐队在PWM信号不发生交换。我想这与回调脚本如下:
%脚本读取配置参数的处理器和时钟信息
%创建一个正弦表加载DMA的例子
% 2018年版权MathWorks公司。
如果codertarget.target.isCoderTarget (bdroot)
c = getActiveConfigSet (bdroot);
clk = codertarget.data.getSystemClock (cs);
sysclkout = str2double(时钟)* 1 e6;
% ePWM时钟
ePWM = codertarget.data.getParameterValue (cs,“ePWM”);
如果isfield (ePWM“ClockDiv”)
clockDiv = str2double (strrep (ePWM.ClockDiv“SYSCLKOUT /”,));
其他的
clockDiv = 1;
结束
ePWMClkFrequency = sysclkout / clockDiv;
其他的
%设置默认值为90 MHz
ePWMClkFrequency = 90 e6;
结束
%需要ePWM频率= 500赫兹和正弦波频率= 1 Hz
epwmFrequency = 2000;
sinewaveFrequency = 15;
%可逆计数器模式,TBCKL prescalar设置为128,HSPCLKDIV设置为1
epwmPeriod =地板(ePWMClkFrequency / (128 * 2 * epwmFrequency));
% dutycycle数组大小的计算
arraySize =地板(epwmFrequency / (sinewaveFrequency));
%正弦值缩放和抵消ePWM时期
sineTableInput = 0:(2 *π/ arraySize):((2 *π)-(2 *π/ arraySize));
sineTable =地板(罪(sineTableInput) * (epwmPeriod) + (epwmPeriod));
%为工作周期创建变量
duty_cycle_table = 金宝appSimulink.Signal;
duty_cycle_table.CoderInfo。StorageClass =“ExportedGlobal”;
duty_cycle_table。数据类型=“uint16”;
duty_cycle_table。尺寸= arraySize;
duty_cycle_table。InitialValue = [“(”num2str (sineTable)“]”];
正如你所看到的我选择了频率2000赫兹和15赫兹的切换和正弦波。比例不是500,而是200这可能会引起的问题。发送到表的数组也只有200的值。我解决这个问题通过调整数组大小的公式吗?或者我需要调整参数?
提前谢谢!
亲切的问候,
Gauthier Mervillie

登录置评。


马纳尔Chilapur
马纳尔Chilapur 2019年3月15日
嗨附近,
如果在工作周期中得到200值表,那么你可能需要更新DMA配置w.r。t。我们设置传输大小根据duty_cycle_table中的条目的数量。
Capture.JPG
突出显示的字段作为现在需要更新200以上。请试试这个,如果有帮助,请让我知道。
问候,
马纳尔C
1评论
Gauthier Mervillie
Gauthier Mervillie 2019年3月15日
编辑:Gauthier Mervillie 2019年3月15日
你好Venkatesh来说,
我调整了价值确实起了作用。尽管第一阶段工作100%,其他阶段不同步了。这是因为频率变高或者我应该调整一些其他参数吗?在示例频率500赫兹切换频率和1 Hz的正弦波,一切工作正常,但是当500年失去同步的比率没有了。我应该改变一些上面提到的回调脚本?还是,相移不了吗?
亲切的问候
附近

登录置评。


马纳尔Chilapur
马纳尔Chilapur 2019年3月15日
嗨附近,
我可能需要你的模型。你能把最新的模型。
问候,
马纳尔C

Gauthier Mervillie
Gauthier Mervillie 2019年3月15日
你好Venkatesh来说,
我添加了附件中的模型。提前感谢你的支持。金宝app
亲切的问候
Gauthier Mervilie

马纳尔Chilapur
马纳尔Chilapur 2019年3月18日
嗨附近,
正如我所提到的,因为主人ePWM配置反应CMPA计数和我们更新使用DMA ch 1相同,我们需要做相同的其他ePWM不能同步CMPA值只有TBPRD价值。所以,从您的模型我可以看到DMA ch要求更新ePMW8A CMPA值和ePMW9A不配置。您可以配置DMA ch 2等ePWM9A ePWM8A和DMA ch 3, CMPA值也有复制,可以同步所有3 ePWM输出方式。当配置DMA ch,确保更新的目的寄存器值ePMW8A ePMW9A和保持源相同的我。e“duty_cycle_table”。请让我知道如果这有帮助。
例如:
支持DMA通道ePWM8A如下所示图和配置。同样支持DMA channel3 ePWM9A。
Capture.JPG
2的评论
Osvaldo Gonza
Osvaldo Gonza 2022年7月10日
编辑:Osvaldo Gonza 2022年7月14日
我一直关注你的问题。我也试图实现一个三相逆变器以120°相位差使用DMA和MATLAB仿真软件和我有同样的问题。金宝app我怎样才能获得另一个正弦波120°的区别?
亲切的问候
Oswal

登录置评。

下载188bet金宝搏


释放

R2018b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!