• DSP5509的ADC实验


    1. 本次使用esay5509开发板,具体做这个板子叫做大道科技。

    2. 5509有2个ADC的输入引脚,就是2个采集通道

    3. 看下ADC的寄存器

    4. 看下代码中怎么引用ADC的寄存器的,这种写法很少用,但是在DSP中很常见的。

    1 ioport unsigned int *ADCCTL1=(unsigned int *)0x6800;
    2 ioport unsigned int *ADCDATA1=(unsigned int *)0x6801;
    3 ioport unsigned int *ADCCLKDIV1=(unsigned int *)0x6802;
    4 ioport unsigned int *ADCCLKCTL1=(unsigned int *)0x6803;
    5 #define ADCCTL (*ADCCTL1)
    6 #define ADCDATA (*ADCDATA1)
    7 #define ADCCLKDIV (*ADCCLKDIV1)
    8 #define ADCCLKCTL (*ADCCLKCTL1) 

    5. 主程序比较简单

     1 main()
     2 {
     3     int i;
     4     unsigned int uWork;
     5     
     6     EnableAPLL();
     7 
     8     InitADC();
     9     PLL_Init(132);
    10     while ( 1 )
    11     {
    12         for ( i=0;i<256;i++ )
    13         {
    14             ADCCTL=0x8000;    // 启动AD转换,通道0
    15             do
    16             {
    17                 uWork=ADCDATA;
    18             } while ( uWork&0x8000 );
    19             nADC0[i]=uWork&0x0fff;
    20         }
    21         for ( i=0;i<256;i++ )
    22         {
    23             ADCCTL=0x9000;    // 启动AD转换,通道1
    24             do
    25             {
    26                 uWork=ADCDATA;
    27             } while ( uWork&0x8000 );
    28             nADC1[i]=uWork&0x0fff;
    29         }
    30         asm( " nop");        // break point 在这里设断点
    31     }
    32 }
    33 
    34 void InitADC()
    35 {
    36     ADCCLKCTL=0x23; // 4MHz ADCLK
    37     ADCCLKDIV=0x4f00;
    38 }

    6. 在程序中注意到一个细节,怎么直接给寄存器赋值的,看下面*( ioport volatile unsigned short* )0x1f00 = 4;这种写法很重要,一定要掌握。

     1 void EnableAPLL( )
     2 {
     3     /* Enusre DPLL is running */
     4     *( ioport volatile unsigned short* )0x1f00 = 4;
     5     wait( 25 );
     6     *( ioport volatile unsigned short* )0x1f00 = 0;
     7     // MULITPLY
     8     *( ioport volatile unsigned short* )0x1f00 = 0x3000;
     9     // COUNT
    10     *( ioport volatile unsigned short* )0x1f00 |= 0x4F8;
    11     wait( 25 );
    12     //*( ioport volatile unsigned short* )0x1f00 |= 0x800
    13     // MODE
    14     *( ioport volatile unsigned short* )0x1f00 |= 2;
    15     wait( 30000 );
    16     // APLL Select
    17     *( ioport volatile unsigned short* )0x1e80 = 1;
    18     // DELAY
    19     wait( 60000 );
    20 }
  • 相关阅读:
    点击子窗体给父窗体上的对象赋值
    框架使用及规范参考
    像Google日历一样的日程管理
    TreeView 和 Menu 的用法
    甘特图-svg版 支持客户端事件
    js获取DropDownList的选择项
    GridView,Repeater分页控件:WebPager(开源)
    TextBox 禁止客户端输入 前台通过JS赋值 并在后台获取
    对象实体 参考标准
    以编程方式控制ScriptManager
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/8245549.html
Copyright © 2020-2023  润新知