打印

求助:A/D转换模拟信号输入通道电压问题

[复制链接]
2740|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
selenazhang|  楼主 | 2013-3-25 20:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TMS320C5509A中,内嵌A/D转换模块,为什么A/D转换输入端口AIN0通道的电压一直保持3.3V左右,在该通道外加一恒定高电平(由稳压源提供),比如说1V,但接入稳压源后,稳压源屏幕上指针自动指向3.3V左右,而且稳压源调节电压旋钮失效,也就是说外加信号加不进去,为什么?AIN0不是模拟信号输入通道吗?
是不是外加信号与开发板中不共地?

相关帖子

沙发
zhangmangui| | 2013-3-26 09:40 | 只看该作者
首先你检查一下电路中的AIN0口外面是不是有相应的电压信号连接  如果没有   我觉的最大的原因应该是你没有设置好寄存器  AIN0口被设置为I/O口啦  不是特殊口使用  还有  AIN0当做AD口使用的话  输入电压应该是0-3V啊   是不是口被烧了啊

使用特权

评论回复
板凳
selenazhang|  楼主 | 2013-3-28 21:56 | 只看该作者
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[512];

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[i]=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 );
}

使用特权

评论回复
地板
selenazhang|  楼主 | 2013-3-28 21:58 | 只看该作者
这是我的程序,应该没问题的,编译没有错误,我实在不知道该在怎么办了。。。

使用特权

评论回复
5
selenazhang|  楼主 | 2013-4-12 15:12 | 只看该作者
zhangmangui 发表于 2013-3-26 09:40
首先你检查一下电路中的AIN0口外面是不是有相应的电压信号连接  如果没有   我觉的最大的原因应该是你没有 ...

不好意思,第一次结贴,出现错误,这个帖子给分失败,不过另一个和这个一样的帖子给你满分了,谢谢

使用特权

评论回复
6
zhangmangui| | 2013-4-12 23:54 | 只看该作者
selenazhang 发表于 2013-4-12 15:12
不好意思,第一次结贴,出现错误,这个帖子给分失败,不过另一个和这个一样的帖子给你满分了,谢谢 ...

没事啦   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

21

帖子

0

粉丝