今天分享一下,两个dsp单片机的pwm同步问题,以TMS320F280049为例。
·
一、设计思路
该方法的设计思路大致如下,将主芯片pwm的同步信号通过IO口接到另外一个DSP上,从而使两个DSP共用一个同步信号。从而达到同步的目的.由于本人很少在线,若需要完整参考代码或者详细问题加V wuhengdandan
二、软件配置
1.主单片机的同步信号引出到IO口,通过output_xbar。EXTSYNCOUT 为外部同步输出信号,如 下图,该信号可以通过 MUX 选择模块 1/4/7 的同步输出 信号作为触发源。一旦触发,将对外产生一个脉宽为 8 个 SYSCLK 的信号,并可以通过 Output X-BAR 映射到 PIN 脚上作为其它芯片的同步信号。
内部原理如下图所示:

部分参考代码如下,若需要完整代码+V wuhengdandan
//设置GPIO5为标准推挽输出
GPIO_setPadConfig(5, GPIO_PIN_TYPE_STD);
//设置GPIO5为XBAR_OUTPUT3
GPIO_setPinConfig(GPIO_5_OUTPUTXBAR3);
XBAR_enableOutputMux(XBAR_OUTPUT3, XBAR_MUX14);
// 设置PWM1生成同步输出信号
EPWM_setSyncOutPulseMode(EPWM1_BASE, EPWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO);
2.我们现在已经有了输出的同步信号,现在我们需要的是,另外一个单片机去接收这个同步信号。需要配置input_xbar。内部原理如下:

部分参考代码如下,若需要完整代码+V wuhengdandan
GPIO_setQualificationMode(5, GPIO_QUAL_ASYNC);
XBAR_setInputPin(XBAR_INPUT5, 5);
// 设置EXTSYNCIN1信号作为EPWM1的同步信号;
SysCtl_setSyncInputConfig(SYSCTL_SYNC_IN_EPWM1,SYSCTL_SYNC_IN_SRC_EXTSYNCIN1);
// 设置同步后Counter方向
EPWM_setCountModeAfterSync(EPWM1_BASE, EPWM_COUNT_MODE_UP_AFTER_SYNC);
// 设置SyncOut为SyncIn,即接受的外部同步信号bypass PWM1直接输出;
EPWM_setSyncOutPulseMode(EPWM1_BASE, EPWM_SYNC_OUT_PULSE_ON_EPWMxSYNCIN);
// 使能相位装载;
EPWM_enablePhaseShiftLoad(EPWM1_BASE);
二、硬件验证
当两个单片机分别烧录后,用一条线将两个io口接到一起。示波器验证如下:由于线路同步传输与检测问题,会存在80ns左右的延迟。但是整体不影响效果。

更多推荐
所有评论(0)