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/RF430FRL152H:RF430FRL152HEVM

Guru**** 2478765 points
Other Parts Discussed in Thread: RF430FRL152H

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/844039/ccs-rf430frl152h-rf430frl152hevm

器件型号:RF430FRL152H

工具/软件:Code Composer Studio

您好!

我使用下面的示例代码来获取 ADC0的值。

并发现 ADC0值是32的倍数。  

但 ADC0是一个14位值(0~16383)。

是否有任何 SD14参数设置错误?

谢谢。

===========================================================================================================================================

void main()

WDTCTL = WDTPW + WDTHOLD;//停止看门狗

// ROM RF13M 模块设置**正确的 RF 堆栈操作需要以下三行
DS = 1;//需要在此处初始化 ROM 变量
ASM ("调用#0x5CDA ");//调用 ROM 函数(初始化函数指针)
ASM ("调用#0x5CAC ");//调用 ROM 函数(检查器件配置)


initISO15693 (clear_block_locks);
DeviceInit();

SD14CTL0 = SD14EN + VIRTGND;
SD14CTL1 = SD14UNI + SD14INTDLY0 + ADC0_CHANNEL;


while (1)

SD14CTL0 |= SD14SC;

_DELAY_CYCLES (1000000);

ADC_Value= SD14MEM0;


ADC_Volts =((ADC_Value >> 8)*900)/(16383 >> 8);

//进入低功耗模式
//_bis_SR_register (LPM3_bits + GIE);

===========================================================================================================================================

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

    您好、Allen、

    我不关注您从哪里获得32位的想法。

    ADC 结果存储在16位寄存器的前14位中。 您可以在 TRM 中看到这一点、搜索 SD14RES、您将看到四个结果寄存器和结果占用的位: http://www.ti.com/lit/ug/slau506/slau506.pdf

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

    您好、Jacobi、

    很抱歉、它导致了您的误解。

    我得到 ADC0值、如下所示。

    最小的差异似乎是32、而不是1。

    我认为 ADC0是一个14位值(0~16383)、所以最小 刻度应该为1。

    ADC0
    (十进制)
    差值
    1 5760.
    2. 5824 64
    3. 5760. -64
    4. 5728. -32.
    5. 5856. 128
    6. 5792 -64
    7. 5396 -96.
    8. 5824 128
    9. 5792 -32.
    10. 5396 -96.

    谢谢。

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

    您好、Allen、

    好的、现在我明白了。 采样时间与结果精度之间存在关系。 我想您在这里得到的结果是9位的精确结果、因此如果5位不用于精度、您会看到每个结果32位的移位。

    要获得更高的精度、需要较长的采样时间。

    您可以在 TRM 的表10-2中看到精度与转换时间之比 :http://www.ti.com/lit/ug/slau506/slau506.pdf

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

    您好、Jacobi、

    根据您的建议、我可以获得14位 ADC 的精确值。

    并使用 SD14IFG 来检查 ADC 值是否就绪。

    但有时 ADC 值看起来很奇怪。

    因此、我在启用 SD14模块和读取 ADC 值之间添加了3秒延迟。

    是否需要此延迟?  正确的时间是多少?

    谢谢。

    ===================================================================================================

    //设置 ADC 14位 精度

    SD14CTL1 |= SD14RATE1 + SD14RATE2;

    ===================================================================================================

    //获取 ADC0值

    while (!(SD14CTL0 & SD14IFG){
    };
    delay_cycles_ms (3000);
    ADC0_Buffer[0]= SD14MEM0;

    ===================================================================================================

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

    您好、Allen、

    因此不需要延迟。 您要测量的信号的输入频率是多少?

    此外、我还看到过您之前尝试执行的操作的变体、如果您执行单次转换、您可以尝试:

    while (!(SD14CTL0_H & ADC_SD14IFG_8bit));//等待转换完成(对于单次转换),ADC_SD14IFG_8bit = 0x02 

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

    您好、Jacobi、

    我使用电源为 ADC 提供稳定的电压。

    我在 rf430frl152h.h 中找不到 ADC_SD14IFG_8bit

    ADC_SD14IFG_8位是否与 SD14IFG_H 相同?

    顺便说一下、 我是否可以提高采样频率并缩短转换时间?

    谢谢。

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

    您好、Allen、

    更深入地研究一下、这似乎是其他人的自定义。 我想它可以是 SD14IFG_H 但现在知道了这一点、我不建议改为尝试。

    您不会增加频率、而是减少采样时间、从而降低精度。 频率将保持不变、但精度来自随时间推移进行的采样。

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

    您好 Jacobi,

    因此、您意味着它应在以下代码中正常工作(无任何延迟)

    while (!(SD14CTL0 & SD14IFG){
    };
    ADC0_Buffer[0]= SD14MEM0;

    因此、您建议不要更改 FM (2kHz)设置、

    因为增加 FM 和缩短转换时间会导致 ADC 精度降低?

    顺便说一下、我是否知道 ADC 的最大 FM?

    谢谢。

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

    您好、Allen、

    我将请另一位同事研究采样代码的问题。

    FM 2kHz 设置的速度与它的运行速度一样快、如果改变速度、您只会降低速度。

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

    您好、Allen、

    我读了胎面、但对我来说、不清楚您的代码是什么样的。 您能不能发布代码中对您有问题的部分。 我将尝试重现 您的问题。

    此致、

    Helfried    

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

    您好、Helfried、

    这是我的代码、如下所示。 读取 SD14MEM0时、它可以获得 ADC0值、并且没有任何延迟。

    但我无法理解 ADC 的值是否正确。

    我对 ADC 位映射表的理解如下所示。

    ADC0 最小 最大 到电压(V)的映射
    7位   0 127. 0 ~ 0.9V
    9位 0 511. 0 ~ 0.9V
    10位 0 1023. 0 ~ 0.9V
    12位 0 4095 0 ~ 0.9V
    13位 0 8191 0 ~ 0.9V
    14位 0 16383. 0 ~ 0.9V

    如何移动 SD14MEM0 值以获得正确的值?

    /*我的代码 */

    void SetupSD14 (u08_t 通道)

    SD14CTL1 = SD14UNI + SD14INTDLY0 +通道;
    SD14CTL1 |=(通道=Thermister_ADC2_CHANNEL)? SD14RBEN1:SD14RBEN0;
    //SD14CTL1 |=(通道=ADC0_CHANNEL)? (SD14RATE1 + SD14RATE0):SD14RATE1;// 12位
    //SD14CTL1 |=(通道=ADC0_CHANNEL)? (SD14RATE0):SD14RATE1;// 9位
    //SD14CTL1 |=(通道=ADC0_CHANNEL)? (SD14RATE0 + SD14RATE2):SD14RATE1;// 15位
    SD14CTL1 |=(通道=ADC0_CHANNEL)? (SD14RATE1):SD14RATE1;// 10位

    SD14CTL0 = SD14EN + VIRTGND;// SD14模块被启用、
    SD14CTL0 |= SD14SC;//开始转换

    (笑声)

    //设置和读取 ADC0
    SetupSD14 (ADC0_CHANNEL);
    while (!(SD14CTL0 & SD14IFG){
    };
    NFC_sys_data.ADC0_Buffer[0]= SD14MEM0;

    (笑声)

    附件是我捕获的 ADC0数据。

    e2e.ti.com/.../ADC0_5F00_Value_5F00_20191101.xlsx

    谢谢。

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

    您好、Allen、

    我检查 了您的 Excel 工作表中的值、对我来说似乎是可以的。 您询问了如何正确地移动值、但您已经完成了。

    只需计算最小步长:0.9V/2^14并将其与测量值相乘即可。 就这些。 这对于所有滤波器设置都是相同的。 只有测量值的精度会随滤波器设置和测量时间的变化而变化。

    由于 CIC 滤波器的结构、这并不意味着抽取率仅为32个128个不同的值。 但精度等于 7 位。

    此致、

    Helfried

     

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

    您好、 Helfried、

    因此、32的抽取率不仅仅是128个不同的值。 精度等于 7 位。

    精度表示"SNQR" 等于"6.02 * 7 + 1.76 = 43.9"、对吧?

    谢谢。

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

    您好、Allen、

    您使用的公式适用于理想的 N 位 ADC。 正确的公式应该是 TRM 中的公式5。 我将使用图10-3中显示 SNQR 和相应精度的图。

    此致、

    Helfried

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

    您好、 Helfried、

    这对我很有帮助。

    感谢你的帮助。