Part Number:TMS320F28388D
以ADCA A0 A1为例:配置如下
ADC_setMode(ADCA_BASE, ADC_RESOLUTION_16BIT, ADC_MODE_DIFFERENTIAL);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN0, SAMPLEWINDOWS);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER1, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN1, SAMPLEWINDOWS);
读取时可以读出两个值
AdResult_Ch[0] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0); //通道1采样
AdResult_Ch[1] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER1); //通道2采样
请问读取时这两个值怎么处理,差分采样情况下ADC_SOC_NUMBER0、ADC_SOC_NUMBER1以那个为准
Susan Yang:
您可以看一下
https://www.ti.com.cn/cn/lit/ug/spruii0c/spruii0c.pdf
的 20.2.4 Signal Mode
,
DSP应用:
例程里的只有把12bit改成16bit然后是差分的模式
但是结果怎么读,单端A0、A1两个输入对应2个输出如下,但是差分怎么读数?也像单端这么写吗?差分输入也读出俩个结果
现在问题不是怎么算,是怎么读,你给出的图只是结果显示原理,我想知道ADCARESULTx是什么,怎么读!图中
ADCIPy和ADCINy指的是模拟电压不是AD值,实际测试时AdResult_Ch[0]和AdResult_Ch[1]是一个相差不多的数(加1.5V输入电压)
AdResult_Ch[0] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0); //通道1采样AdResult_Ch[1] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER1); //通道2采样
,
Susan Yang:
您的问题是类似下面这样?
''如果使用 ADCIN0 作为正输入,ADCIN1 作为负输入,它们的转换结果是存储在 ADCRESULT0 还是 ADCRESULT1 中?"
当开始 AD 转换时,结果存储在与 SoC 编号相对应的寄存器中,与输入编号无关。
ADCRESULTn 寄存器对应于启动 ADC 转换的 SOCn
,
Susan Yang:
对于 ADC-A,如果您将通道选择设置为 0(或 1),则 ADC 将使用 A0&A1 作为输入通道。这将产生一个结果。
例如,ADCB.SOC4.CHSEL = 2 将采样 B2&B3 并将结果存储在 ADCB.RESULT4
例如 ADCC.SOC2.CHSEL = 0 将采样 C0&C1 并将结果存储在 ADCC.RESULT2
例如 ADCC.SOC2.CHSEL = 1 也会采样 C0&C1 并将结果存储在 ADCC.RESULT2
,
DSP应用:
单端我理解与输入编号无关,要看配置的SOC对应的寄存器。我想问差分,差分两个输入但不是一个结果吗,怎么对应的
,
DSP应用:
你这意思是差分C0&C1只要配置一个SOC?ADCC.SOC2.CHSEL = 0对应的 ADCC.RESULT2是差分C0&C1转换结果(ADCC.SOC2.CHSEL = 0这个0对应的是C0的意思吧)?
,
DSP应用:
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN0, SAMPLEWINDOWS); ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER1, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN1, SAMPLEWINDOWS);
AdResult_Ch[0] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0); //通道1采样AdResult_Ch[1] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER1); //通道2采样
先配置输入,ADC_CH_ADCIN0对应的SOC,在读对应的SOC的值
差分这么配置可以读出两个值,实际测试两个值不完全相同,所以我就想知道差分到底怎么配置怎么读数
,
Susan Yang:
DSP应用 说:你这意思是差分C0&C1只要配置一个SOC
是的,如用户指南所说
Each SOC can be configured to start on one of many input triggers.
您可以看一下 ADCSOC1CTL 这个寄存器