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.

[参考译文] TM4C1294NCPDT:TM4C1294

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/976719/tm4c1294ncpdt-tm4c1294

器件型号:TM4C1294NCPDT

下午好、我尝试每2ms 同时读取8个 ADC 通道(HW 缓冲器-过采样8)、我注意到我有2个通道、在我的软件中这些通道是 AIN8 (PE5)和 AIN9 (PE4)、 在 Launchpad EK-TM4C129XL 的仿真中、"ui32ADCValues[4]和 ui32ADCValues[5]中这些通道的读数会对另一个信号产生干扰、这在我在下面开发的代码中是否可行? 我是否在该微控制器 TM4C1294NCPDT 的 ADC 外设的配置(setupADC)或读取(读取 ADC)方面遇到了问题?

设置 ADC:

"。。

无效

setupADCs()

SysCtlPeripheralReset (SYSCTL_Periph_GPIOE);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);

SysCtlPeripheralReset (SYSCTL_Periph_GPIOB);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);

SysCtlPeripheralReset (SYSCTL_Periph_ADC0);
SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);


GPIOPinTypeADC(.
GPIO_Porte _BASE、
GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1
| GPIO_PIN_0);

GPIOPinTypeADC (GPIO_PORTB_BASE、GPIO_PIN_4);

// ADCSequenceDisable (ADC0_BASE、0);
// ADCSequenceDisable (ADC0_BASE、1);
// ADCSequenceDisable (ADC0_BASE、2);
// ADCSequenceDisable (ADC0_BASE、3);
// ADCSequenceDisable (ADC0_BASE、4);
// ADCSequenceDisable (ADC0_BASE、5);
// ADCSequenceDisable (ADC0_BASE、6);


//SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);

ADCHardwareOversampleConfigure (ADC0_BASE、ADC_SAMPLE_BUF_SIZE);

SysCtlDelay (10);

ADCSequenceConfigure (ADC0_BASE、0、ADC_TRIGGER_PROCESSOR、0);
// ADCSequenceConfigure (ADC0_BASE、0、ADC_TRIGGER_AUSE_0);

// ADCSequenceConfigure (ADC0_BASE、1、ADC_TRIGGER_PROCESSOR、1);
// ADCSequenceConfigure (ADC0_BASE、2、ADC_TRIGGER_PROCESSOR、2);
// ADCSequenceConfigure (ADC0_BASE、3、ADC_TRIGGER_PROCESSOR、3);
// ADCSequenceConfigure (ADC0_BASE、4、ADC_TRIGGER_PROCESSOR、4);
// ADCSequenceConfigure (ADC0_BASE、5、ADC_TRIGGER_PROCESSOR、5);
// ADCSequenceConfigure (ADC0_BASE、6、ADC_TRIGGER_PROCESSOR、6);

ADCSequenceStepConfigure (ADC0_BASE、0、0、ADC_CTL_CH0);// P. Entr。 应
ADCSequenceStepConfigure (ADC0_BASE、0、1、ADC_CTL_CH1);// P. Entr。 O2
ADCSequenceStepConfigure (ADC0_BASE、0、2、ADC_CTL_CH2);// Fluxo AR
ADCSequenceStepConfigure (ADC0_BASE、0、3、ADC_CTL_CH3);// Fluxo O2
ADCSequenceStepConfigure (ADC0_BASE、0、4、ADC_CTL_CH8);// P.Insp
ADCSequenceStepConfigure (ADC0_BASE、0、5、ADC_CTL_CH9);// Cell O2
ADCSequenceStepConfigure (ADC0_BASE、0、6、(ADC_CTL_CH10 | ADC_CTL_IE | ADC_CTL_END));// P. Piloto Exalação

ADCSequenceEnable (ADC0_BASE、0);
// ADCSequenceEnable (ADC0_BASE、1);
// ADCSequenceEnable (ADC0_BASE、2);
// ADCSequenceEnable (ADC0_BASE、3);
// ADCSequenceEnable (ADC0_BASE、4);
// ADCSequenceEnable (ADC0_BASE、5);
// ADCSequenceEnable (ADC0_BASE、6);

ADCIntClear (ADC0_BASE、0);
// ADCIntEnable (ADC0_BASE、0);// Entender melhor este status?


IntEnable (INT_ADC0SS0);
// ADCIntEnable (ADC0_BASE、0);// Entender melhor este status?

"

读数 ADC (8个通道)

"。。

无效

读取 ADC (CMD_INPUT *输入信号)

uint32_t ui32ADCValues[10];// Lendo OS 7 canais ADC
float readadc;
//uint8_t number_sample_;
//number_sample = WaitAndReadADC (ui32ADCValues);

//从 ADC 读取值。
ADCIntClear (ADC0_BASE、0);
// ADCIntClear (ADC0_BASE、1);
// ADCIntClear (ADC0_BASE、2);
// ADCIntClear (ADC0_BASE、3);
// ADCIntClear (ADC0_BASE、4);
// ADCIntClear (ADC0_BASE、5);
// ADCIntClear (ADC0_BASE、6);

////[TODO ] investigar o temp de 50us para conversão muito temp na visão do Feed (04-12-20)
ADCSequenceDataGet (ADC0_BASE、0、ui32ADCValues);

// WaitAndReadADC (ui32ADCValues);
///---------------------------------------------- Leitura PRESSAO de entrada de AR
//读取 ADC0 (进气压力传感器- NXP5700)和数字转换
readadc =(3.0 *(float) ui32ADCValues[0])/4096.0;
inputRad->inletPressAir =(readADC - CAL_OFFSET_INPUT_PRESS_AIR)
/增益_进口_压力_空气;

//------------------------------

//limites min e max
if (inputRad->inletPressAir < 0)

inputRad->inletPressAir = 0;

否则(inputRad->inletPressAir >700)

inputRad->inletPressAir = 700;

//-------------------------------- Leitura PRESSAO de entrada de O2
//读取 ADC1 (O2入口压力传感器- NXP5700)和数字转换
readadc =(3.0 *(float) ui32ADCValues[1])/4096.0;
inputRad->inletPressO2 =(readADC - CAL_OFFSET_INPUT_PRESS_O2)
/ GAIN_INGIN_PRESS _O2;


//limites min e max
if (inputRad->inletPressO2 < 0)

inputRad->inletPressO2 = 0;

否则(inputRad->inletPressO2 >700)

inputRad->inletPressO2 = 700;


///---------------------------------------------- 利图拉 F未爆弹 药
//公式 DO 传感器 Fluxo PMF4102V -流速=[(Vout - 1V)/4V] x 满量程流速
// inputRead->flowAir =(3.3 *(float) ui32ADCValues[2])/4096.0;

readadc =(3.0 *(float) ui32ADCValues[2])/4096.0;
inputRad->flowAir =(readADC - CAL_OFFSET_FLOAD_AIR)/ GAIN_FLOAD_AIR;

//limites min e max
if (inputRad->flowAir <0)

inputRad->flowAir = 0;

否则(inputRad->flowAir >150)

inputRad->flowAir = 150;

///---------------------------------------------- Leitura F未爆弹 药接口 O2
//读取 ADC3 (O2流量传感器)和数字转换
// inputRead->flowO2 =(3.3 *(float) ui32ADCValues[3])/4096.0;

readadc =(3.0 *(float) ui32ADCValues[3])/4096.0;
inputRad->flowO2 =(readADC - CAL_OFFSET_FLOG_O2)/ GAIN_FLOG_O2;

//limites min e max
if (inputRad->flowO2 <0)

inputRad->flowO2 = 0;

否则(inputRad->flowO2 >150)

inputRad->flowO2 = 150;

///---------------------------------------------- Leitura PRESSÃO INSPIRATÓRIA í a
//读取 ADC8 (吸气压力)和数字转换
//inputRead->inspuPress =(3.3 *(float) ui32ADCValues[4])/4096.0;

readadc =(3.0 *(float) ui32ADCValues[4])/4096.0;
inputRead->insppress =(readADC - CAL_OFFSET_PRESS)/ gain_press_inSP;

//limites min e max
if (inputRad->inspoPress < 0)(如果(inputRead->inspoPress < 0))

inputRad->inspinPress = 0;

否则(inputRad->inspinPress >140)

inputRad->inspinPress = 140;

///---------------------------------------------- Leitura CÉLULA de O2
//读取 ADC9 (氧传感器)和数字转换
//inputRead->cellO2 =(3.3 *(float) ui32ADCValues[5])/4096.0;

readadc =(3.0 *(float) ui32ADCValues[5])/4096.0;
inputRad->cellO2 = 21.0 +((readADC - CAL_OFFSET_CELL_O2)/ GAIN_CELL_O2);

//limites min e max
if (inputRad->cellO2 <0)

inputRad->cellO2 = 0;

否则(inputRad->cellO2 >105)

inputRad->cellO2 = 105;

///---------------------------------------------- Leitura PRESSÃO piloto EXALAÇÃO
//读取 ADC10 (先导呼气压力)和数字转换
//inputRead->inspuPress =(3.3 *(float) ui32ADCValues[6])/4096.0;

readadc =(3.0 *(float) ui32ADCValues[6])/4096.0;
inputRead->expPilotPress =(readADC - CAL_OFFSET_press_pilot_EXP)
/ gain_press_pilot_EXP;

ADCProcessorTrigger (ADC0_BASE、0);
// ADCProcessorTrigger (ADC0_BASE、1);
// ADCProcessorTrigger (ADC0_BASE、2);
// ADCProcessorTrigger (ADC0_BASE、3);
// ADCProcessorTrigger (ADC0_BASE、4);
// ADCProcessorTrigger (ADC0_BASE、5);
// ADCProcessorTrigger (ADC0_BASE、6);

"

谢谢!

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

    很抱歉、TI 支持、我发现了问题、这是我的测试目标!

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

    您好 Adriano、

    感谢您回复您的问题已解决、很高兴代码正常工作、因为我没有看到任何错误、但我没有机会自行测试。 )