一、设计思路

     该方法的设计思路大致如下,将主芯片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左右的延迟。但是整体不影响效果。

更多推荐