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