4024|1

667

帖子

3

TA的资源

版主

楼主
 

【TI C2000的使用经验】使用EOCx INT判断AD采样完成的问题 [复制链接]

本帖最后由 nemo1991 于 2015-3-31 18:13 编辑

学习笔记使用F28069为例,但是其具有通用意义,学习C2000系列均可参考该例子。
大家好,最近学习28069,进行adc内部温度传感器采集的实验。
在例程中,使用EOCx INT判断AD采样完成,代码如下:
  1. //Wait for end of conversion.
  2. while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){} //Wait for ADCINT1
  3. AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //Clear ADCINT1
复制代码
最初我理解的采样完成时:ADC采样结果已经被锁存到结果寄存器。
随后我查看了ADC的时序图,发现了一个问题:ADC中断产生并非在结果被锁存之后,甚至超前很多
具体来看:
其中ADCCTL1.INTPULSEPOS位控制中断发生的时间,寄存器说明如下:
可见,INT 脉冲发生的时间在结果被锁存之前!在early模式下,甚至提前了15个ADCCLK!
那么,为什么说此时的采样结果能正确读取呢?
真正的原因是,这里涉及到了流水线的知识。简单来说,我们执行的每一条指令,都包含了多个过程,例如取指令、译指令、读取地址、执行操作等多个步骤
对于ADC中断的两种模式,其中最需要关注的是early模式下能否被正确读取,这里,我们可以参照一下F28069中CLA章节的指令说明。
说明如下:
1.首先看一下CLA的流水线构成。
再看一下,针对ADC early模式的读取过程:
可以看到,因为流水线的作用,最终的读取指令操作已经在ADC转化完成之后!在R2指令的I8时刻进行了结果的读取,而在I7阶段完成了结果的锁存,只能说非常契合
当然,这是CLA的流水线,对于C28的流水线呢?
基本是一致的~
用到FPU是略有差异的,但是此处并没有用到。
以上是我个人的总结,我认为已经基本解决了问题。
我没有找到ti文档中直接描述这个问题的资料,如果大家有找到可以继续交流下!



最新回复

选择early模式,在ADC中断里面读取ADCResult寄存器的值的时候,读到的值就是这次转换的结果,不用等到转换完成再进中断,这样理解对吗  详情 回复 发表于 2019-3-30 20:41
 
点赞 关注(2)

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
选择early模式,在ADC中断里面读取ADCResult寄存器的值的时候,读到的值就是这次转换的结果,不用等到转换完成再进中断,这样理解对吗
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表