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.

[参考译文] MSP430AFE253:MSP430AFE253 SD24 ADC 错误

Guru**** 2390755 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/595051/msp430afe253-msp430afe253-sd24-adc-error

器件型号:MSP430AFE253

我的要求:收集交流50Hz 信号、每周64点波、采样率 FS=50*32=1600;MCLK=SCLK=12MHz
计时器时钟频率=MCLK;采样计时器计时长度=12000000/1600=7500;
在计时器中断程序中、启动 ADC 转换、并反转 P1.3引脚状态以监控计时器长度、使频率输出= 800Hz、从而指示计时器设置正确

void timer_a_init (void)
{
U16 t;
//CCR0 = 7500;
t=12000000/(50*32);
CCR0 = t;
TACTL = tassel_2 + TACL+ MC_1;
CCTL0 = CCIE;
}

#pragma vector=TIMERRA0_vector
__interrupt Timer_A (void
)
SD24CCTL0 |= SD24SC;
P1OUT ^= BIT3;









单次转换模式 void sd24_A_init (void){U16 I;SD24CTL = SD24SSEL_1+SD24DIV_2+SD24XDIV_1+SD24REFON;// 1.2V ref、SMCLK Fadc=12000000/(4+3=100SD24DIV_1SD24REF_0双极性模式补码输出、SD24INTRL = SD24INSD24INTS+SD24INTS+SD24TRD;// SD24INSD24INSD24INSD24INSD24INTS+SD24INTS+SD240_INTS_INTRD = SD24INSD240_SD24INSD24INTS_INSD24INTS_INSD24INTRD 过采样256中断使能= SD24INSD240_SD24INSD24INTS

对于(I = 0;I < 0x4000;I++); // 1.2V 参考启动
索引延迟=0;
}

#pragma vector=SD24_vector
__interrupt void SD24AISR (void)
{
U8 I;
IF (SD24IV=SD24IV_SD24MEM0)
{
ad_buf[索引]= SD24MEM0;
如果(++index =samplebuftime)
{
for (i=0;<samplebuftime;i++) ad[i]=ad_buf[i];           )
索引=0;
}
P1OUT ^= BIT4;
}

如上所述、使 P1.4引脚输出频率=800正确。 采样率为1600
但我读取 AD 采样是错误的
帮助我分析问题所在、非常感谢

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

    您好、Alvin、

    [引用 user="Alvin Chen "]我的要求:收集交流50Hz 信号、每周波形64点、采样率 fs=50*32=1600;MCLK=SCLK=12MHz

    首先、我不确定您是如何计算采样频率(fs)的、但我将假设您希望 fs 为1600Hz。 请记住、这是您的 FS (计算值)、而不是 FS (实际值)。

    对于 SD24_A、您可以使用调制器频率(FM)除以过采样率(OSR)来设置实际采样频率 fs (实际)。 因此、您已将 FM 配置为1MHz 并将 OSR 设置为256、这使 FS (实际)等于3906.25Hz (1MHz/256)。

    [引用 USER="Alvin Chen ]如上所述、P1.4引脚输出频率=800是正确的。 采样率为1600
    但我看到 AD 采样错误

    我不确定我是否完全理解了这一点。 您是否说您的计时器已正确配置、但您从 SD24获得的样片与您预期的不同? 我看到您正在设置 SD24CCTL0寄存器中的"SD24DF"位。 查看用户指南中的表27-3、可以发现数据格式"双极点补码"。 也许结果是正确的、但格式与预期不同。

    此致、

    James

    MSP 客户应用

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我设置双极性补码输出、但我读取的所有值为负、我提供的信号为交流。
    ADC 的最大频率限制是多少?
    Fadc=FS (实际采样率)*过采样率* SD24INTDLY_x (延迟数)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Alvin Chen "] ADC 的最大频率限制是多少?

    根据数据表的第28页、SD24_A 模块的最大输入(调制器)频率为1.1MHz、而典型值为1MHz。 让我们将此输入频率称为 F (m)。

    [引用 user="Alvin Chen ]Fadc=FS (实际采样率)*过采样率* SD24INTDLY_x (延迟数)

    f (s)= F (m)/OSR

    在时域中、

    t (转换)= OSR/F (m)

    t (转换)+t (延迟)=(OSR / F (m))+(SD24PREx / F (m)=(OSR + SD24PREx)/ F (m)

    您可以在 用户指南的第27.2.10节中了解有关此方面的更多信息。 此外、 SD24INTDLY 位不会延迟转换本身。 这些位决定在稳定时间内丢弃多少个初始转换(样本)以防止错误转换。 这些位与 SD24PREx 位有很大不同。

    此致、

    James

    MSP 客户应用

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

     请帮助我 查看我的原理图。

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

    您好、Alvin、

    根据原理图中 A0.0的 AFE 配置、您似乎是使用单个 SD 通道测量电流。 如果确实如此、我强烈建议参考具有 隔离式电能测量功能的单相电表(修订版 A)用户指南中的图4 (以及第2.1.2.2节)所示的原理图部分。 在原理图中、您可能需要使用电感器替换 R3和 R4。 此外、C1和 C2可能只需要不填充(DNP)。 更重要的是、如果您使用的是电流互感器(CT)、则需要添加负载电阻器、如图4所示。 此外、我建议更改 C3、C4和 C5的值、以匹配图4中所示的值。

    如果您希望使用此通道测量电压、我建议您参阅《 具有隔离式电能测量功能的单相电表(修订版 A)用户指南》中的图3 (以及第2.1.2.1节)。

    以下是一些其他反馈(基于 此处找到的 TIDM-MSP430AFE253SUBMETEREVM 板的原理图):

    1. 在 AVCC 处添加一个10uF 电容器和0.1uF 电容器。
    2. 在2.2nF 时、C6处于建议电容的上限。 根据电路板的寄生电容、您可能需要将该值降低至1nF 或降低 SBWTCK 速度。
    3. 我假设您使用原理图中其他位置的网绑将 DGND 连接到 AGND。

    此致、

    James

    MSP 客户应用

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