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 }
原文地址:https://www.cnblogs.com/429512065qhq/p/8245549.html