打印
[DSP编程]

28335ADC模块adc_cal函数的问题

[复制链接]
7042|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
28335ADC实验需要矫正,看手册说有自带的矫正函数ADC_CAL,其代码如下:
.def _ADC_cal
.asg "0x711C", ADCREFSEL_LOC
.sect ".adc_cal"
_ADC_cal
MOVW DP, #ADCREFSEL_LOC >> 6
MOV @28, #0xAAAA
MOV @29, #0xBBBB
LRET
现在存在几个问题,想请教一下大家:
1、根据的的学习理解,对ADC矫正应该是根据下面的图进行,通过精准电源求得偏移然后对采样修正。而adc_cal函数的矫正原理是什么呢?
2、手册说adc_cal函数是对ADCFEFSEL和ADCOFFTRIM寄存器初始化,但是ADCFEFSEL寄存器是参考电压选择,怎么是矫正呢?
3、另外,该代码的最后两句的意思是什么呢,是向ADCREFSEL 写0xAAAA ,向ADCOFFTRIM 写 0xBBBB吗?
4、如果ADC_cal函数可以起到矫正作用,请问在实际操作中是不是应该自己再对其代码进行一些修改,还是直接调用呢?

相关帖子

沙发
zhangmangui| | 2015-1-25 22:11 | 只看该作者
0xAAAA和0xBBBB是一个例子,可以根据板上的干扰情况,自行修改校正。

具体说明在F2833x的ADC章节有详细描述。

使用特权

评论回复
板凳
zhangmangui| | 2015-1-25 22:17 | 只看该作者
.def _ADC_cal                                          /* 定义代码段名称 */

.asg "0x711C",   ADCREFSEL_LOC          /* ADCREFSEL_LOC 是 ADC Reference Select Register, 地址0x711C */

/* C28 core 中, DP是 数据段 的 地址,每段大小64, 32bitDataAddr(21:6) = DP(15:0) */

MOVW  DP,   #ADCREFSEL_LOC >> 6  /* 右移动6bit 获得 数据段首地址 */

/* 此时, DP = 0x7100 */

MOV   @28,  #0xAAAA   /* 地址 : 0x7100 + 28 */

MOV   @29,  #0xBBBB   /* 地址 : 0x7100 + 29 */

使用特权

评论回复
地板
zhangmangui| | 2015-1-25 22:27 | 只看该作者
5
sjpjyf| | 2015-1-26 15:57 | 只看该作者
:)

使用特权

评论回复
6
sjpjyf| | 2015-1-26 15:58 | 只看该作者
zhangmangui 发表于 2015-1-25 22:27
https://bbs.21ic.com/icview-226409-1-1.html

:)

使用特权

评论回复
7
blues_more|  楼主 | 2015-1-28 12:32 | 只看该作者
zhangmangui 发表于 2015-1-25 22:11
0xAAAA和0xBBBB是一个例子,可以根据板上的干扰情况,自行修改校正。

具体说明在F2833x的ADC章节有详细描 ...

手册说adc_cal函数是对ADCFEFSEL和ADCOFFTRIM寄存器初始化,但是ADCFEFSEL寄存器是参考电压选择,怎么是矫正呢?  我看了手册上关于这个函数的介绍,还是不太明白它的原理,请问这个函数的矫正原理是和我在第一条中所说的原理一样 的吗?

使用特权

评论回复
8
海中水| | 2015-1-28 19:08 | 只看该作者
blues_more 发表于 2015-1-28 12:32
手册说adc_cal函数是对ADCFEFSEL和ADCOFFTRIM寄存器初始化,但是ADCFEFSEL寄存器是参考电压选择,怎么是 ...

具体的矫正应该是根据你的参考电压,来自动计算出斜率和固定的补偿。

使用特权

评论回复
9
blessdxp| | 2016-1-15 15:50 | 只看该作者
如果是使用内部基准呢?应该怎样调整

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

39

帖子

1

粉丝