This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280041:TMS320F280041两个(3、4) SDFM 通道中的一个不接收数据

Guru**** 2380860 points
Other Parts Discussed in Thread: TMS320F280041, AMC1035, AMC1106E05
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/858703/tms320f280041-tms320f280041-one-of-two-3-4-sdfm-channels-does-not-receive-data

器件型号:TMS320F280041
主题中讨论的其他器件: AMC1035AMC1106E05

大家好、我有一个使用 TMS320F280041和两个 Σ-Δ 调制器(AMC1035和 AMC1106E05)的项目。
AMC1035配置为曼彻斯特模式。 这两个时钟均由 PWM 生成的10MHz 时钟计时(通过示波器验证):

// PWM_PERIOD = 10在这里、CPU 以100MHz 运行

ePWM_setPeriodLoadMode (ePWM_base、ePWM_PERIOD_RELOAD);
ePWM_setTimeBasePeriod (ePWM_base、PWM_PERIOD - 1);//将其设置为 SDFM_CLOCK_OUT_Hz 频率
ePWM_setTimeBaseCounter (ePWM_base、0); //从0开始
ePWM_setPhaseShift (ePWM_base、0); //无相移
ePWM_setTimeBaseCounterMode (ePWM_base、ePWM_COUNTER_MODE_UP);//向上向下 PWM
ePWM_setClockPrescaler (ePWM_base、ePWM_CLOCK 分频器_1、ePWM_HSCLOCK_divider 1);

ePWM_setCounterCompareValue (ePWM_base、ePWM_COUNTER_COMPARE_A、PWM_PERIOD / 2);
ePWM_setActionQualifierAction (ePWM_base、ePWM_AQ_output_A、ePWM_AQ_output_high、
ePWM_AQ_output_on_timebase_zero);
ePWM_setActionQualifierAction (ePWM_base、ePWM_AQ_output_A、ePWM_AQ_output_low、
ePWM_AQ_output_on_timebase_up_CMPA); 

D3输入连接到 AMC1106E05数据输出、配置如下:

#define GPIO_SDFM_IOUT_DATA (28)
#define GPIO_SDFM_IOUT_DATA_PIN_CONFIG GPIO_28_SD_D3

//Σ-Δ 输入(和时钟)
//数据输出电流
GPIO_setDirectionMode (GPIO_SDFM_IOUT_DATA、GPIO_DIR_MODE_IN);
GPIO_setPadConfig (GPIO_SDFM_IOUT_DATA、GPIO_PIN_TYPE_INvert);
GPIO_setQualificationMode (GPIO_SDFM_IOUT_DATA、GPIO_QUAL_异 步);
GPIO_setPinConfig (GPIO_SDFM_IOUT_DATA_PIN_CONFIG);

D4输入连接到 AMC1035数据输出、配置如下:

#define GPIO_SDFM_VSEC_DATA (22)
#define GPIO_SDFM_VSEC_DATA_PIN_CONFIG GPIO_22_SD_D4

//数据输出电压
GPIO_setDirectionMode (GPIO_SDFM_VSEC_DATA、GPIO_DIR_MODE_IN);
GPIO_setPadConfig (GPIO_SDFM_VSEC_DATA、GPIO_PIN_TYPE_INPin);
GPIO_setQualificationMode (GPIO_SDFM_VSEC_DATA、GPIO_QUAL_异 步);
GPIO_setPinConfig (GPIO_SDFM_VSEC_DATA_PIN_CONFIG); 

SDFM 通道的配置相同:

#define SDFM_IOUT_FILTER SDFM_FILTER_3
#define SDFM_VSEC_FILTER SDFM_FILTER_4

SYSCTL_enablePeripheral (SYSCTL_Periph_CLK_SD1);
//配置输入控制单元:调制器时钟速率=调制器数据速率
//我们有 D3 (IOUT)和 D4 (VSEC) Machester 编码(由 SDFM_MODIVIDER_CLK_OFF 完成)
SDFM_setupModulatorClock (SDFM1_base、SDFM_IOUT_filter、SDFM_MODIANG_CLK_OFF);
SDFM_setupModulatorClock (SDFM1_base、SDFM_VSEC_FILTER、SDFM_MODEG_CLK_OFF);

//配置数据过滤器单元-过滤器类型、OSR 值和启用/禁用数据过滤器
// SINC3 + OSR=32提供精确为16位有符号整数的分辨率
SDFM_configDataFilter (SDFM1_base、(SDFM_IOUT_FILTER | SDFM_FILTER_SINC_3 | SDFM_SET_OSR (32))、
(SDFM_DATA_FORMAT_16_BIT | SDFM_FILTER_ENABLE | SDFM_SHIFT_VALUE (1)));
SDFM_configDataFilter (SDFM1_base、(SDFM_VSEC_FILTER | SDFM_FILTER_SINC_3 | SDFM_SET_OSR (32))、
(SDFM_DATA_FORMAT_16_BIT | SDFM_FILTER_ENABLE | SDFM_SHIFT_VALUE (1)));

//启用主过滤器位:除非该位被置位,否则所有过滤器模块都没有
//可以启用。 当主滤波器时、所有滤波器模块都同步
在启用各个滤波器模块后、//位被启用。
SDFM_enableMasterFilter (SDFM1_base);

SDFM_disableExternalReset (SDFM1_base、SDFM_IOUT_filter);
SDFM_disableExternalReset (SDFM1_base、SDFM_VSEC_FILTER);

SDFM_enableInterrupt (
SDFM1_BASE、SDFM_IOUT_FILTER、
(SDFM_ENMODE_FAIL_INTERRUPT | SDFM_DATA_FILTER_ACKNOWE_INTERRUPT);
SDFM_enableInterrupt (
SDFM1_base、SDFM_VSEC_FILTER、
(SDFM_ENMODE_FAIL_INTERRUPT | SDFM_DATA_FILTER_ACKNOWE_INTERRUPT);
SDFM_enableMasterInterrupt (SDFM1_base);


问题是我从通道3获取正确的数据、但通道4上没有任何数据。
由于我已经启用了 MF 中断、所以我在两个通道上都获得了 MF 位1。
如果我将其清除、则它会在通道3上保持清除状态、并且我也会得到 AF 位设置(以及预期的数据电流读数)。
在通道4上、MF 保持为1。 我知道它缺少时钟。 但是、由于两个通道都是大砍刀组织编码、因此不应该期待时钟。

有趣的部分是、如果我交换数据线... 即、我将 D3上的信号放置到 D4上、将 D4到 D3上的信号放置到 D3上、我仍然只能在 D3上获取数据、还可以获得预期读数(在本例中为电压)。
因此、简而言之、同一数据流在一个通道上工作、但在另一个通道上工作(反之亦然)。

还值得注意的是、我将时钟保留给 GPIO_29 (即 SC3)、但 GPIO 引脚配置为 GPIO。 并且两个滤波器都配置为模式2。

//确保 SC3设置为 GPIO
GPIO_setPinConfig (GPIO_29_GPIO29);

此外、如果我在代码运行时检查调试器中 SD3和 SD4的配置、它们是相同的、也是各自数据输入的 GPIO 配置。
因此、我对其中一个器件的工作原因感到困惑、而另一个器件的工作原因...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您使用哪种板? 您可能需要重新检查为 SDFM 配置的任何引脚是否具有任何替代功能或路由正确。

    谢谢

    Vasudha

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否能够解决此问题? 我现在要关闭这个线程。 请随意打开主题以获得进一步帮助。

    谢谢

    Vasudha