DSP28335 ADC模块 采样频率、时钟频率、采样窗口、转换时间

最近在学习DSP28335 的ADC采样模块,针对其里面的各种名词概念,现整理一下。

  1. 采样频率,也被称为采样速率。大家想想ADC的采样是需要由软件or外部引脚or ePWMx SOCA or ePWMxSOCB 触发的。只有当触发信号产生时,SEQ排序器才开始工作。那么两个触发信号之间的间隔就是采样时间,也即采样频率的倒数。
  2. 时钟频率,也即为ADCCLK。这是ADC模块工作的时钟。由HSPCLK经过ADCCLKPS 内核时钟分频器和CPS 内核时钟预分频位得到ADCCLK。注意:ADCCLK的最高频率不能超过25MHZ
  3. 采样窗口,这个是当你对某个管脚采样时,采样电容的电压才能累积到采样电压。所以这里需要给一个足够大的时间窗口。一般不能小于7个ADCCLK
  4. 转换时间,一个序列转换完成的时间。这与转换原理:1.积分型A/D的转换 2.逐次比较型A/D转换 3.全并行/串并行A/D 有关。转换的时间不能大于采样时间,才能正确采样。
    在这里插入图片描述
  • 28
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是DSP28335ADC采样代码,使用的是软件触发方式: ```c #include "DSP2833x_Device.h" // 定义ADC采样结果缓存数组 Uint16 ADC_Result[16]; void main(void) { // 初始化系统时钟和GPIO InitSysCtrl(); InitGpio(); // 初始化ADC ADC_enableBandgap(ADC_ADCA); ADC_enableRefBuffers(ADC_ADCA); ADC_powerUp(ADC_ADCA); DELAY_US(1000); ADC_calibrate(ADC_ADCA); // 配置ADC采样参数 ADC_setIntMode(ADC_ADCA, ADC_INT_NUMBER1, ADC_INT_MODE_EOC); ADC_setIntSrc(ADC_ADCA, ADC_INT_NUMBER1, ADC_SOC_NUMBER0); ADC_setSocChanNumber(ADC_ADCA, ADC_SOC_NUMBER0, ADC_CH_ADCIN0); ADC_setSocTrigSrc(ADC_ADCA, ADC_SOC_NUMBER0, ADC_TRIG_SW); ADC_enableSocInt(ADC_ADCA, ADC_SOC_NUMBER0); // 启动ADC采样 ADC_startConversion(ADC_ADCA, ADC_SOC_NUMBER0); // 循环采样并打印结果 while (1) { Uint16 i; // 触发ADC采样 ADC_forceConversion(ADC_ADCA, ADC_SOC_NUMBER0); // 等待ADC采样完成 while (!ADC_getIntFlagStatus(ADC_ADCA, ADC_INT_NUMBER1)); // 清除ADC中断标志位 ADC_clearIntFlag(ADC_ADCA, ADC_INT_NUMBER1); // 读取ADC采样结果,并保存到缓存数组中 for (i = 0; i < 16; i++) { ADC_Result[i] = ADC_readResult(ADC_ADCA, i); } // TODO: 打印ADC采样结果 } } ``` 在上面的代码中,通过`ADC_setSocTrigSrc`函数将ADC的SOC0触发源设置为软件触发,然后在主程序中循环触发ADC采样,并等待ADC采样完成。在ADC的中断服务函数中,通过`ADC_readResult`函数读取ADC采样结果,并保存到`ADC_Result`数组中。在主程序中,可以通过`ADC_Result`数组获取采样结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值