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.

[参考译文] AFE7900:射频和放大器;微波论坛

Guru**** 2391145 points


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

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1269161/afe7900-rf-microwave-forum

器件型号:AFE7900

我正在尝试在 ADC 上发送斜坡测试图形。 为了实现这一点、我在 Latte 软件中编写了一小段代码。

AFE.JESD.ADCJESD[0].adcRampTestPattern (0、1、1)

调用此函数时、我会在 Latte 日志中打印以下内容。

输入:ADCJesdLib 类的 adcRampTestPattern
写入 0x0015值0x00  
写入 0x0016值0x01  
写入 0x0109值 0x02
写入 0x0109值0x0a  

当我进入 tiAfe79_jesd.c 文件、此文件包含  adcRampTestPattern  具体如下:

TI_AFE_API_COMP uint8_t AFE79FNP(adcRampTestPattern)(AFE79_INST_TYPE afeInst, uint8_t topno, uint8_t chNo, uint8_t enable, uint8_t rampIncr)
{
    uint8_t errorStatus = 0;
    AFE79_ID_VALIDITY();
    AFE79_PARAMS_VALID(topno < AFE79_NUM_JESD_INSTANCES);
    AFE79_PARAMS_VALID(chNo < 3);
    AFE79_SPI_EXEC(AFE79FNP(afeSpiWriteWrapper)(afeInst, 0x16, ((1 << (topno))) & 0xff, 0x0, 0x7)); /*adc_jesd*/
    if (chNo == 0)
    {
        if (enable == 1)
        {
            AFE79_SPI_EXEC(AFE79FNP(afeSpiWriteWrapper)(afeInst, 0x109, (((rampIncr) << 3) + 0x2) & 0xff, 0x0, 0x7)); /*rx1_jesd_test_sig_gen_mode, rx1_jesd_ramptest_incr*/
        }
        else
        {
            AFE79_SPI_EXEC(AFE79FNP(afeSpiWriteWrapper)(afeInst, 0x109, 0x0, 0x0, 0x2)); /*rx1_jesd_test_sig_gen_mode*/
        }
    }
    else if (chNo == 1)
    {
        if (enable == 1)
        {
            AFE79_SPI_EXEC(AFE79FNP(afeSpiWriteWrapper)(afeInst, 0x10a, (((rampIncr) << 3) + 0x2) & 0xff, 0x0, 0x7)); /*rx2_jesd_test_sig_gen_mode, rx2_jesd_ramptest_incr*/
        }
        else
        {
            AFE79_SPI_EXEC(AFE79FNP(afeSpiWriteWrapper)(afeInst, 0x10a, 0x0, 0x0, 0x2)); /*rx2_jesd_test_sig_gen_mode*/
        }
    }
    else if (chNo == 2)
    {
        if (enable == 1)
        {
            AFE79_SPI_EXEC(AFE79FNP(afeSpiWriteWrapper)(afeInst, 0x10b, (((rampIncr) << 3) + 0x2) & 0xff, 0x0, 0x7)); /*fb_jesd_test_sig_gen_mode, fb_jesd_ramptest_incr*/
        }
        else
        {
            AFE79_SPI_EXEC(AFE79FNP(afeSpiWriteWrapper)(afeInst, 0x10b, 0x0, 0x0, 0x2)); /*fb_jesd_test_sig_gen_mode*/
        }
    }
    AFE79_SPI_EXEC(AFE79FNP(afeSpiWriteWrapper)(afeInst, 0x16, 0x0, 0x0, 0x7));

    if (errorStatus)
        return TI_AFE_RET_EXEC_FAIL;
    else
        return TI_AFE_RET_EXEC_PASS;
}

有人能解释一下哪个函数写入0x0015寄存器、为什么0x109寄存器被写入两次?

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

    尊敬的 Mubashira:

    写入寄存器0x15只需关闭先前打开的页面、即可打开 ADC_JESD 页面。 C 函数中不显示该内容、因为它假定上一页已关闭。  

    在 Latte 软件中、对寄存器0x109进行两次写入、因为启用测试图形和设置斜坡步长是分两步完成的。 第一次写入0x2启用斜坡测试图形模式、第二次写入0xA 将斜坡步长改变为'2'。 C 函数在一个单步中设置使能和斜坡步长。  

    此致、

    大卫·查帕罗

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

    尊敬的 David:

    感谢您的答复。 感谢您的解释。

    我知道 Latte 软件在后端调用 C API。 这是否意味着 Latte 在后台调用一些其他函数? 如果需要、我可以在哪里找到这些函数?

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

    尊敬的 Mubashira:

    Latte 软件具有在后台使用的 python 库、但 C 函数也可以通过使用 cafe.FunctionName ()在 Latte 软件中使用。 这些可在以下文件夹中找到: C:\Users\ \Documents\Texas Instruments\Afe79xxLatte\lib\Afe79xxLibraryPG1p0  

    此致、

    大卫·查帕罗