浙江工业大学ADC与DACWord文档下载推荐.doc
《浙江工业大学ADC与DACWord文档下载推荐.doc》由会员分享,可在线阅读,更多相关《浙江工业大学ADC与DACWord文档下载推荐.doc(6页珍藏版)》请在冰豆网上搜索。
21.5kHz
(5)2个模拟输入通道(AIN0、AIN1)
(6)采样和保持获取时间窗口有单独的预定标控制
2.ADC工作过程
(1)ADC模块接到启动转换信号后,开始转换第一个通道的数据。
(2)经过一个采样时间的延迟后,将采样结果放入转换结果寄存器保存。
(3)转换结束,设置标志。
(4)等待下一个启动信号。
3.ADC的程序控制
ADC时钟远低于CPU时钟,一般采用中断方式启动转换或保存结果,可以减少对CPU的占用。
程序设计应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。
由于TMS320VC5509ADSP芯片内的ADC精度为10位,转换结果的16位中低10位为有效数值,所以在处理数据时只需处理低10位。
4.DAC操作
5509A片上没有DAC模块,故只能利用专用的DAC芯片来将数字信号转换成模拟信号。
实验板上选用的是德州仪器公司的双路DAC芯片TLC7528C,它采用8位并行输入,可以同时转换输出2路模拟信号,转换时间0.1μs。
其控制方式较为简单:
首先将需要转换的数值通过数据总线传送到TLC7528C上相应寄存器,再发送转换信号,经过一个时间延迟,转换后的模拟量就从TLC7528C的输出引脚输出。
5.实验连线.实验利用到实验箱上的数字信号源,将两个端口A,B分别连接到ADCIN2和ADCIN3,都设置为正弦波,A输出频率为100-1khz,B输出频率为1-10khz。
实验ADC和DAC流程图
下载进行调试。
实验结论
实验1ADC的参考程序
#include"
C5509.h"
peripherals.h"
func.h"
ICETEK-VC5509-EDU.h"
scancode.h"
voidInitADC();
voidwait(unsignedintcycles);
voidEnableAPLL();
unsignedintnADC0[256],nADC1[256];
main()
{
inti;
unsignedintuWork;
EnableAPLL();
SDRAM_init();
InitADC();
// PLL_Init(132);
while
(1)
{
for(i=0;
i<
256;
i++)
{
ADCCTL=0x8000;
//启动AD转换,通道0,15位为1,ADCstart字段转换开始,14~12为000选择AIN0通道
do
{
uWork=ADCDATA;
}while(uWork&
0x8000);
nADC0[i]=uWork&
0x0fff;
}
ADCCTL=0x9000;
//启动AD转换,通道1
nADC1[i]=uWork&
asm("
nop"
);
//breakpoint
}
}
voidInitADC()
ADCCLKCTL=0x23;
//时钟控制寄存器高7位保留,第八位为1(在运行休眠指令时时钟停止)4MHzADCLK模数转换时钟
ADCCLKDIV=0x4f00;
//据这这可以得到采样时钟SampTimeDiv=79,根据公式换算可以得到模数转换时钟为4Mhz
voidwait(unsignedintcycles)
inti;
for(i=0;
i<
cycles;
i++){}
voidEnableAPLL()
/*EnusreDPLLisrunning*/
*(ioportvolatileunsignedshort*)0x1f00=4;
wait(25);
*(ioportvolatileunsignedshort*)0x1f00=0;
//MULITPLY
*(ioportvolatileunsignedshort*)0x1f00=0x3000;
//COUNT
*(ioportvolatileunsignedshort*)0x1f00|=0x4F8;
//*(ioportvolatileunsignedshort*)0x1f00|=0x800
//MODE
*(ioportvolatileunsignedshort*)0x1f00|=2;
wait(30000);
//APLLSelect
*(ioportvolatileunsignedshort*)0x1e80=1;
//DELAY
wait(60000);
通过模数转换器(ADC)的实验能够更好地了解其结构,时序,寄存器和使用方法及配置方式。
由于数字控制系统由于模拟控制系统,对信号的数字化处理就显得重要,同时数字信号的各方面性能也由于模拟信号。
但是在实际应用中还需要模拟的信号对电路进行控制,如压控振荡电路等,所以我们还需要了解DAC的转换过程和原理。
实验2DAC的参考程序
math.h"
ioportunsignedint*sysR=(unsignedint*)0x7fd;
// unsignedchardbScanCode;
//shortinti,j,chn_num;
intk,k1,k2;
floatfWork,fStep;
fWork=0.0;
fStep=PI2/256;
k=k1=k2=0;
// PLL_Init(72);
//初始化
(*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;
}
通过该主程序和头文件定义的函数,算法和试验箱的设定可以DAC的转换实验。
问题与思考
1.试将ADC实验程序改为由中断控制进行采集。
ADC的转换,处理器采样数据可以通过两种方式①中断方式和②DMA方式,中断方式需要通过外部引脚INT3引发硬件中断。
有书本上的程序摘录如下:
BEST0,ST2_55;
设置ar0处于循环状态
MOV#0x6000,mmap(@BSA01);
设置循环首地址
MOV#0x400,mmap(@BK03)
MOV#0x6000,AC0
MOVAC0,XAR0;
设置XAR0存入循环首地址
中断程序
Int3Ir:
Mov@0x600000,AC0
MOVAC0,*AR0+
RETI
根据实验要求可重新修改其地址和循环块的长度。
(245)
2.DAC程序采用计算法输出波形,这样做的优点是占用存储空间很少,缺点是速度慢,波形的形状有运算失真。
请使用查表法产生同样波形输出。
查表法降低了输出的精度但是提高了运行速度。
查表法求值所需的计算就是根据输入值确定表的地址,根据地址就可得到相应的值,因而运算量较小。
查表法比较适合于非线性函数是周期函数或已知非线性函数输入值范围这两种情况。
对一个正弦信号进行等间隔时间的不同幅度和不同相位采样,由于其精度和输入范围的要求,所以制作表格有不同大小。
3.DAC实验中,如果要改变输出信号的频率和相位,可以通过什么方式实现?
通过查表法实现的可以改变其查表寻址的时钟周期或者增大(或减小)表格寻址的初始地址大小。