【DSP原理及应用】实验-A/D与D/A实验
实验 A/D与D/A试验
一、实验目的
1.通过实验熟悉 VC5509A A/D转换模块
2.掌握 VC5509A 扩展D/A转换模块并编程控制实现D/A转换;
3.掌握 VC5509A 的A/D模块初始化过程及数据采集过程,并对采集的数据进行分析
二、实验内容
1.编写C5509A时钟发生器初始化代码,外接晶振为20M,配置CPU工作频率为200M
- 编写C5509A片内AD转换器的初始化代码,是AD转换器正常工作
3.编写主程序,分别采集通道0和通道1 256个数据
4.理解和掌握CMD文件
5.阅读TLC7528手册,编写主程序,从D/A口输出正弦波
三、实验代码
//AD实验代码如下:
main()
{
int i;
unsigned int uWork;
EnableAPLL();
SDRAM_init();
InitADC();
PLL_Init(132);
while ( 1 )
{
for ( i=0;i<256;i++ )
{
ADCCTL=0x8000; // 启动AD转换,通道0 请补充初值
do
{
uWork = ADCDATA;
}while( uWork & 0x8000 );
nADC0[i] = uWork & 0x0fff;
}
for ( i=0;i<256;i++ )
{
ADCCTL=0x9000; // 启动AD转换,通道1,请补充初值
do
{
uWork = ADCDATA;
}while( uWork & 0x8000 );
nADC1[i] = uWork & 0x0fff;
}
asm( " nop"); // break point
}
}
void InitADC()
{
//请补充寄存器初始化值
ADCCLKCTL=0x31;
ADCCLKDIV=4f00;
}
void PLL_Init(int freq)
{
int i;
DSPCLK dspclk;
ioport unsigned int *clkmd;
ioport unsigned int *sysr;
clkmd=(unsigned int *)0x1c00;
sysr=(unsigned int *)0x07fd;
//请补充代码
*clkmd = 0x2502;
*clkmd = 0x2512;
*sysr=2;
}
//DA实验代码如下:
main()
{
// unsigned char dbScanCode;
// short int i,j,chn_num;
int k,k1,k2;
float fWork,fStep;
fWork=0.0;
fStep=PI2/256;
k=k1=k2=0;
PLL_Init(72);
SDRAM_init();
(*sysR)=1;
for(;;)
{
k1=k;
k2 = (int)(128*sin(fWork)) + 128;
fWork += fStep;
if (fWork > PI2)
{
fWork -= PI2;
}
DA_DATA_1 = k1;
DA_DATA_2 = k2;
k++;
k %= 256;
}
}
这段代码是针对 C5509A DSP 开发板进行 A/D 与 D/A 实验的代码。
AD 实验部分:
-
main()
函数是 AD 实验的主程序,初始化了 APLL、SDRAM,调用了InitADC()
进行 AD 转换器的初始化,通过PLL_Init()
初始化 DSP 的时钟。 -
InitADC()
函数用于设置 ADC 相关的寄存器的初始化值,包括ADCCLKCTL
和ADCCLKDIV
寄存器。 -
PLL_Init()
函数用于设置 DSP 的时钟频率,通过操作clkmd
和sysr
寄存器来设置。 -
在
main()
中,通过两个循环分别采集通道0和通道1的 256 个数据,每次循环使用ADCCTL
寄存器启动 AD 转换,等待转换完成后将数据存入数组nADC0
和nADC1
中。
DA 实验部分:
-
main()
函数是 DA 实验的主程序,初始化了 PLL 和 SDRAM,通过一个无限循环,利用正弦函数生成一个 256 个数据的正弦波,并输出到 DA 数据口。 -
使用了正弦函数
sin()
生成正弦波的数值,其中使用了DA_DATA_1
和DA_DATA_2
分别输出两个不同的数值,构成正弦波。同时,使用了fWork
和fStep
控制正弦波的生成。
总体来说,这段代码是针对 C5509A DSP 进行 A/D 与 D/A 实验的代码,通过配置相应的寄存器和循环采样/输出的方式,实现了 A/D 数据的采集和 D/A 正弦波的输出。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!