我正在尝试在 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寄存器被写入两次?