主题中讨论的其他器件:AMC1035、
工具/软件:Code Composer Studio
我将 TMS320F280049中的 SDFM 模块与 AMC1035搭配使用。
我希望与以50kHz 频率生成信号的 PWM1模块进行同步测量。
我的问题是、当我从 PWM1启用同步并且 SDFM 发生特定中断时、我得到的结果不正确。 按预期的20us 周期调用中断。 当我禁用 PWM 同步时、我可以在 ISR 中获得正确的结果。 PWM1配置为在时基计数器等于周期时生成 SOC_A。 应该是这样
我的配置如下:
SDFM1滤波器设置:仅启用 FILTER4、SINC3、OSR 128、SD_CLK = 10MHz、 @μ s 数据速率频率= 78kHz、延迟38.4us
初始化代码:它基于来自 C2000 ware 的示例代码。
void init_SDFM (void) { //引脚配置 GPIO_setDirectionMode (58、GPIO_DIR_MODE_IN); GPIO_setMasterCore (58、GPIO_CORE_CPU1); GPIO_setPadConfig (58、GPIO_PIN_TYPE_STD); GPIO_setQualificationMode (58、GPIO_QUAL_异 步); GPIO_setPinConfig (GPIO_58_SD_D4); GPIO_setDirectionMode (59、GPIO_DIR_MODE_IN); GPIO_setMasterCore (59、GPIO_CORE_CPU1); GPIO_setPadConfig (59、GPIO_PIN_TYPE_STD); GPIO_setQualificationMode (59、GPIO_QUAL_ASYNCx); GPIO_setPinConfig (GPIO_59_SD_C4); // //配置输入控制单元:调制器时钟速率=调制器数据速率 // SDFM_setupModulatorClock (SDFM1_base、SDFM_FILTER_4、SDFM_MODEG_CLK_OFF); SDFM_configDataFilter (SDFM1_base、(SDFM_FILTER_4 | SDFM_FILTER_SINC_3 | SDFM_SET_OSR (128))、(SDFM_DATA_FORMAT_16_BIT | SDFM_FILTER_ENABLE | SDFM_SHIFT_VALUE (0x0006)))); // //启用主过滤器位:除非该位被置位,否则所有过滤器都没有 //模块可以启用。 当时、所有滤波器模块均同步 在启用各个滤波器模块后、//主滤波器位被启用。 // SDFM_enableMasterFilter (SDFM1_base); // //设置输出数据格式 // SDFM_setOutputDataFormat (SDFM1_base、SDFM_FILTER_4、SDFM_DATA_FORMAT_16_BIT); // //禁用 PWM 同步 // //SDFM_disableExternalReset (SDFM1_base、SDFM_filter_4); // // PWM 信号可以同步 SDFM1滤波器。 为 SDFM 启用 PWM 同步 //过滤器。 // SDFM_enableExternalReset (SDFM1_base、SDFM_FILTER_4); SDFM_setPWMSyncSource (SDFM1_base、SDFM_FILTER_4、SDFM_SYNC_PWM1_SOCA); // //启用中断 // //可以使用此函数启用/禁用以下 SDFM 中断。 //启用调制器时钟故障 //启用数据过滤器确认 // SDFM_enableInterrupt (SDFM1_base、SDFM_FILTER_4、(SDFM_MODICER_FAIL_INTERRUPT | SDFM_DATA_FILTER_ACYING_INTERRUPT)); /* SDFM_DisableInterrupt (SDFM1_base、SDFM_FILTER_4、 (SDFM_HIGH_LEVEL_THRESHOLD_INTERRUPT | SDFM_LOW_LEVEL_THRESHOLD_INTERRUPT); * // //启用主中断,以便可以触发任何过滤器中断 //通过 SDFM 中断到 CPU // SDFM_enableMasterInterrupt (SDFM1_base); }
谢谢你。