zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    解决通用串行总线(USB)控制器有感叹号
    开发者需要了解的WebKit
    Win7系统搭建WiFi热点详细攻略
    给Qt生成的exe执行程序添加版本信息
    IIS(IISReset.exe)命令行
    .net开发微信公众平台
    使用ExitProcess()结束本进程、TerminateProcess 结束进程
    Hosts文件路径及修改方法
    本地动态SQL
    Oracle Package
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/8245549.html
Copyright © 2011-2022 走看看