概述
一. DSP5509A片内ADC简介
DSP内部的ADC转换速率比较低, 采样频率21.5kHz,所以只能采样一些频率较低的信号。DSP5509A内部集成10位连续逼近模式模/数转换器.
//文档: 5509 DSP Analog-to-Digital Converter (ADC) Reference Guide.pdf
根据ADC的结构图,可以看见,ADC由时钟电路, 通道选择电路,采样保持电路还有电子电容电路组成。
ADC 时钟 = (CPU Clock) / (CPUCLKDIV + 1)
ADC 转换时钟 = (ADC Clock) / (2 * (CONVRATEDIV + 1)) [must be less than or equal to 2 MHz]
ADC 采样保持时间 = (1 / (ADC Clock)) / (2 * (CONVRATEDIV + 1 + SAMPTIMEDIV)) [must be greater than or equal to 40 µs]
ADC 总转换时间 = (ADC 采样保持时间 ) + (13 * (ADC 转换时钟 ))
二. 相关寄存器
- 控制寄存器(ADCCTL)
15位是ADC转换开始位:0,无效; 1,开始
14~12位是模拟通道选择:000~011分别选择AIN0~AIN3,100~111表示所有通道关闭。
- 数据寄存器(ADCDATA)
15位是ADC转换标志位:0,采样数据已存在;1,正在转换中
14~12位是ADC数据选择通道:同上寄存器
11~10是保留未:0
9~0位:存放10位ADC转换结果
- 时钟分频寄存器(ADCCLKDIV)
15~8位:0~255,采样和保持时间 分频字段
7~4位:保留
3~0位:0000~1111转换时钟分频字段
- 时钟控制寄存器(ADCCLKCTL)
15~9位保留
8位是ADC的Idle(低功耗)使能位:0,ADC不能进入Idle状态;1,ADC进入Idle状态,时钟停止
7~0位是CPUCLKDIV:0~255,系统时钟分频字段
三. 使用例子
使用ADC需要进行两步配置:设置ADC采样时钟,读数据
- 设置ADC采样时钟
ADC 时钟 = (CPU Clock) / (CPUCLKDIV + 1)
ADC 转换时钟 = (ADC Clock) / (2 * (CONVRATEDIV + 1)) [must be less than or equal to 2 MHz]
ADC 采样保持时间 = (1 / (ADC Clock)) / (2 * (CONVRATEDIV + 1 + SAMPTIMEDIV)) [must be greater than or equal to 40 µs]
ADC 总转换时间 = (ADC 采样保持时间 ) + (13 * (ADC 转换时钟 ))
- 读数据操作
使用CSL函数ADC_setFreq()和ADC_read()
ADC_setFreq(sysclkdiv,convratediv,sampletimediv);设置系统时钟,转换时钟,采样保持时钟
ADC_read(channel,samplestoraage,samplenumber);设置ADC转换通道,转存地址(可以用数组),转换后数据长度
#include<csl.h>
#include<csl_adc.h>
#include<stdio.h>
Uint16 samplestoraage[2]={0,0};
int sysclkdiv=2,convratediv=0,sampletimediv=79;
int counter=0,index=0;
int channel=1,samplenumber=2;
main()
{
printf("samplestoraage[0]:%dn",samplestoraage[0]);
printf("samplestoraage[1]:%dn",samplestoraage[1]);
CSL_init();
ADC_setFreq(sysclkdiv,convratediv,sampletimediv);
ADC_read(channel,samplestoraage,samplenumber);
printf("ADCDATA:%dn",ADCDATA);
printf("samplestoraage[0]:%dn",samplestoraage[0]);
printf("samplestoraage[1]:%dn",samplestoraage[1]);
printf("n====================n");
}
====================
samplestoraage[0]:0
samplestoraage[1]:0
ADCDATA:4608
samplestoraage[0]:512
samplestoraage[1]:512
====================
PS:通道对应芯片的引脚,我的芯片只有AIN0,和AIN1. 为什么没AIN2,AIN3?
最后
以上就是俊秀期待为你收集整理的DSP学习笔记----片内ADC一. DSP5509A片内ADC简介二. 相关寄存器三. 使用例子的全部内容,希望文章能够帮你解决DSP学习笔记----片内ADC一. DSP5509A片内ADC简介二. 相关寄存器三. 使用例子所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复