求助:A/D转换模拟信号输入通道电压问题
TMS320C5509A中,内嵌A/D转换模块,为什么A/D转换输入端口AIN0通道的电压一直保持3.3V左右,在该通道外加一恒定高电平(由稳压源提供),比如说1V,但接入稳压源后,稳压源屏幕上指针自动指向3.3V左右,而且稳压源调节电压旋钮失效,也就是说外加信号加不进去,为什么?AIN0不是模拟信号输入通道吗?是不是外加信号与开发板中不共地? 首先你检查一下电路中的AIN0口外面是不是有相应的电压信号连接如果没有 我觉的最大的原因应该是你没有设置好寄存器AIN0口被设置为I/O口啦不是特殊口使用还有AIN0当做AD口使用的话输入电压应该是0-3V啊 是不是口被烧了啊 ioport unsigned int *ADCCTL1=(unsigned int *)0x6800;
ioport unsigned int *ADCDATA1=(unsigned int *)0x6801;
ioport unsigned int *ADCCLKDIV1=(unsigned int *)0x6802;
ioport unsigned int *ADCCLKCTL1=(unsigned int *)0x6803;
#define ADCCTL (*ADCCTL1)
#define ADCDATA (*ADCDATA1)
#define ADCCLKDIV (*ADCCLKDIV1)
#define ADCCLKCTL (*ADCCLKCTL1)
void InitADC();
void wait( unsigned int cycles );
void EnableAPLL( );
unsigned int nADC0;
main()
{
int i;
unsigned int uWork;
EnableAPLL();
//InitADC();
PLL_Init(132);
while ( 1 )
{
for ( i=0;i<512;i++ )
{
ADCCTL=0x8000; // 启动AD转换,通道0
do
{
uWork=ADCDATA;
} while (uWork&0x8000);
nADC0=uWork&0x0fff;
}
asm( " nop"); // break point 在这里设断点
}
}
void InitADC()
{
ADCCLKCTL=0x23; // 4MHz ADCLK,SystemClkDiv=35
ADCCLKDIV=0xf600;//SampTimeDiv=246,ConvRateDiv=0
}
void wait( unsigned int cycles )
{
int i;
for ( i = 0 ; i < cycles ; i++ ){ }
}
void EnableAPLL( )
{
/* Enusre DPLL is running */
*( ioport volatile unsigned short* )0x1f00 = 4;
wait( 25 );
*( ioport volatile unsigned short* )0x1f00 = 0;
// MULITPLY
*( ioport volatile unsigned short* )0x1f00 = 0x3000;
// COUNT
*( ioport volatile unsigned short* )0x1f00 |= 0x4F8;
wait( 25 );
//*( ioport volatile unsigned short* )0x1f00 |= 0x800
// MODE
*( ioport volatile unsigned short* )0x1f00 |= 2;
wait( 30000 );
// APLL Select
*( ioport volatile unsigned short* )0x1e80 = 1;
// DELAY
wait( 60000 );
}
这是我的程序,应该没问题的,编译没有错误,我实在不知道该在怎么办了。。。 zhangmangui 发表于 2013-3-26 09:40 static/image/common/back.gif
首先你检查一下电路中的AIN0口外面是不是有相应的电压信号连接如果没有 我觉的最大的原因应该是你没有 ...
不好意思,第一次结贴,出现错误,这个帖子给分失败,不过另一个和这个一样的帖子给你满分了,谢谢 selenazhang 发表于 2013-4-12 15:12 static/image/common/back.gif
不好意思,第一次结贴,出现错误,这个帖子给分失败,不过另一个和这个一样的帖子给你满分了,谢谢 ...
没事啦
页:
[1]