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.

[参考译文] CCS/MSP430F67791A:SD24 ADC 读取负值

Guru**** 2534260 points
Other Parts Discussed in Thread: MSP430F67791A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/966324/ccs-msp430f67791a-sd24-adc-read-negative-values

器件型号:MSP430F67791A

工具/软件:Code Composer Studio

尊敬的先生:

我正在从事计量应用。 我正在努力进行 SD24 ADC 连接。   
输入电压:230V
输出电压:542mV (连接到 MSP430F67791A 中的 SD0P0和 SD0N0引脚)
内部 REF:1.2V
输入数据通过 SD24 ADC 采样、也通过 UART 通信发送数据。
采样数据最大值为32600、最小值为1000、同时读取负值。
我的怀疑是、
1.分辨率是否正确?
2.为什么读取负值?
3.为什么收到的样本达到峰值分辨率?
ADC 初始化和转换代码、
void ADC_Init()

    SD24BCTL0 = SD24REFS | SD24SSEL_1;   //选择内部 REF
                        //选择 SMCLK 作为 SD24_B 时钟源   

    SD24BCCTL0 = SD24ALGN | SD24SCS_4;   //左对齐,组0   
    _DELAY_CYCLES (0x3600);         1.5V REF 启动的//延迟
void ADC_Conv ()

   SD24BCTL1 |= SD24GRP0SC;         //将位设置为开始转换

   while (!(SD24IFG0));   
   Ch0Results[索引]= SD24BMEMH0;//保存 CH0结果(清除 IFG)  
   索引++;    
此处 还附上了收到的数据。 请解决我的 probleme2e.ti.com/.../SD24-Samples.xls 问题

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

    >  while (!(SD24IFG0));   

    由于 SD24IFG0=1、这个条件一直为 false。 因此、您无需等待 ADC 完成。 尝试:

    > while (!(SD24BIFG & SD24IFG0));   

    --------

    从差分输入获得负值结果本身并不常见。 您对输入信号有多少了解?

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

    它似乎是一个正弦波。 在测试交流信号时、具有负输出是正确的。 实际上、我只能在您的 Excel 中看到正值。

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

    大家好、Bruce McKenney

    感谢您的宝贵答复。  

    我在循环条件之后更改了我的 sd24 ADC 代码

    while (!(SD24BIFG & SD24IFG0));   

    输入: 542mV (连接 到 MSP430F67791A 中的 SD0P0和 SD0N0引脚)

    参考电压:1.2伏

    电源电压:3.3V

    结果峰值为32680、最小值为1000。  是否正确?

    我知道的详细信息、工作的位分辨率是多少?

    读取的负值不是问题、这意味着如何计算 RMS 电压?

    如何在50Hz 下读取一个完整的样本周期?  

    ADC 初始化和转换代码、
    void ADC_Init()

        SD24BCTL0 = SD24REFS | SD24SSEL_1;   //选择内部 REF
                            //选择 SMCLK 作为 SD24_B 时钟源   

        SD24BCCTL0 = SD24ALGN | SD24SCS_4;   //左对齐,组0   
        _DELAY_CYCLES (0x3600);         1.5V REF 启动的//延迟
    void ADC_Conv ()

       SD24BCTL1 |= SD24GRP0SC;         //将位设置为开始转换

       while (!(SD24BIFG & SD24IFG0));  
       Ch0Results[索引]= SD24BMEMH0;//保存 CH0结果(清除 IFG)  
       索引++;    

     

     

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

    我认为 RMS 在负测量方面没有问题(这就是"S"的作用)。 它将受到任何直流偏置(不以0为中心)的影响、这可能是您想要的、也可能不是您想要的。

    (TRUE)位的数量由过采样率决定、因为您尚未更改过采样率(SD24BOSR0=256)、如用户指南(SLAU208Q)表29-1/2中所述。

    为了计算 RMS、我建议您使用连续模式(SD24SNGL=0)、因为此时您具有(已知)固定输出速率(SMCLK/256)。 然后、您无需(或想要)设置 SC 位、只需在每次 IFG0触发时捕获 MEM 值即可。 (中断 ISR 通常对此很有用。)