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.
工具/软件:Code Composer Studio
大家好、
我将 TMS320F28377S 用于我的应用、因为我需要使用 ADC。
我在 C2000 ware 中尝试过示例。 代码构建没有任何错误、它将加载到 My launchpad 中、程序运行无任何问题。
只有一件事是、当施加2V 到 ADCchannel 0和1 (J3中的 Launch Pad 引脚28、30)时、ADC 结果保持为零。
帮助我解决此问题。
Yuvaraj。
我的代码
#include "driverlib.h"
#include "device.h"
//
//定义
//
#define EX_ADC_Resolution ADC_Resolution ADC_Resolution_12位//或 ADC_Resolution_16BIT
#define EX_ADC_SIGNAL 模式 ADC_MODE_SINGLE_END_/或 ADC_MODE_DIFFERTICAL
//全局
uint16_t adcAResult0;
uint16_t adcAResult1;
uint16_t adcBResult0;
uint16_t adcBResult1;
uint16_t sDataA[10];
uint16_t rDataA[10];
uint16_t rDataPointA;
uint16_t a、j;
uint16_t AdcaResults[10];
uint16_t 结果索引;
//函数原型
void initadc (void);
void initADCSOC (void);
void main (void)
{
device_init();
DEVICE_initGPIO();
interrupt_initModule();
interrupt_initVectorTable();
initads();
initADCSOC();
EINT;
ERTM;
while (1)
{
对于(j = 0;j < 10000;j++)
{
对于(A = 0;A < 100;A++)
{
}
}
//转换,等待完成并存储结果
ADC_forceSOC (ADCA_BASE、ADC_SOC_NUMBER0);
ADC_forceSOC (ADCA_BASE、ADC_SOC_number1);
while (ADC_getInterruptStatus (ADCA_BASE、ADC_INT_NUMBER1)= false)
{
}
ADC_clearInterruptStatus (ADCA_BASE、ADC_INT_NUMBER1);
//存储结果
adcResult0 = ADC_readResult (ADCARESULT_base、ADC_SOC_NUMBER0);
adcResult1 = ADC_readResult (ADCARESULT_base、ADC_SOC_number1);
对于(j = 0;j < 10000;j++)
{
对于(A = 0;A < 100;A++)
{
}
}
}
}
//用于配置 ADC A 和 B 并为其加电的函数
void initadc (void)
{
//将 ADCCLK 分频器设置为/4
ADC_setPrescaler (ADCA_BASE、ADC_CLK_DIV_4_0);
//设置分辨率和信号模式(请参阅上面的#defines)并加载相应的修整。
ADC_setMode (ADCA_BASE、EX_ADC_Resolution、EX_ADC_SIGNAL 模式);
//将脉冲位置设置为晚期
ADC_setInterruptPulseMode (ADCA_BASE、ADC_PULSE_END_of _CONV);
//为 ADC 加电、然后延迟1ms
ADC_enableConverter (ADCA_BASE);
//DEVICE_DELAY_US (1000);
对于(j = 0;j < 1000;j++)
{
对于(A = 0;A < 100;A++)
{
}
}
}
//功能、用于配置 ADC A 和 B 的 SOC 0和1
空 initADCSOOC (空)
{
//配置 ADCA 的 SOC
//- SOC0将转换引脚 A0。
//- SOC1将转换引脚 A1。
//-这两个都将只由软件触发。
//-对于12位分辨率、采样窗口为15 (200MHz 时为75ns
// SYSCLK 速率)。 对于16位分辨率、将显示一个采样窗口
将使用64的//(200MHz SYSCLK 速率下为320ns)。
#if (EX_ADC_Resolution = ADC_Resolution_12位)
ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER0、ADC_TRIGGER_SW_ONLY、
ADC_CH_ADCIN0、15);
ADC_setupSOC (ADCA_BASE、ADC_SOC_number1、ADC_TRIGGER_SW_ONLY、
ADC_CH_ADCIN1、15);
/*#Elif (EX_ADC_Resolution == ADC_Resolution_16BIT)
ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER0、ADC_TRIGGER_SW_ONLY、
ADC_CH_ADCIN0、64);
ADC_setupSOC (ADCA_BASE、ADC_SOC_number1、ADC_TRIGGER_SW_ONLY、
ADC_CH_ADCIN1、64);*
#endif
//设置 SOC1以设置中断1标志。 启用中断并确保其标志被清除。
ADC_setInterruptSource (ADCA_BASE、ADC_INT_NUMBER1、ADC_SOC_NUMBER1);
ADC_enableInterrupt (ADCA_BASE、ADC_INT_NUMBER1);
ADC_clearInterruptStatus (ADCA_BASE、ADC_INT_NUMBER1);
}