2228|0

1140

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

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=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=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 }

点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表