首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

A/D转换中的ATD0STAT1问题

对,CCFx是一个序列中一个通道完成转换的标志,而SCF是整个序列完成转换的标志。
海纳百川  有容乃大
FIFO=0并不是说转换结果都放在结果寄存器0中。如果FIFO=0,那么对于一个序列的转换来说,每个转换通道有一个固定对应的结果寄存器;如果FIFO=1,那么所有的转换结果都是用8个结果寄存器循环放置的,转换通道和结果寄存器不一定是一一对应的。
海纳百川  有容乃大
依次放入结果寄存器0~结果寄存器3。一个序列转换完成后,再从结果寄存器0开始存放。
海纳百川  有容乃大
这样应该是可以的,但是你一定要等到读完一个寄存器后在去读另一个,也许会引起FIFO溢出的错误。
海纳百川  有容乃大
1)对,你这个程序是只读了一个序列的第一次转换结果。
海纳百川  有容乃大
2)程序改成这样也许会好一些:
while(){
if(ATD0STAT1_CCF0) AD_wData[0] = ATD0DR0; //读第1次的转换结果;
if(ATD0STAT1_CCF1) AD_wData[1] = ATD0DR1; //读第2次的转换结果
if(ATD0STAT1_CCF2) AD_wData[2] = ATD0DR2; //读第3次的转换结果
if(ATD0STAT1_CCF3) AD_wData[3] = ATD0DR3; //读第4次的转换结果
}
海纳百川  有容乃大
你可以到飞思卡尔网站下载AN2428看看。
海纳百川  有容乃大
对,FIFO=1时,第一个转换的结果保存在结果寄存器0中,而第一个转换的通道由CC CB CA决定,之后就按结果寄存器顺序递增存放,一直存放到结果寄存器7,然后再从0开始。而当前是哪个通道完成了转换,可由CCFx标志来查询;结果存入哪个寄存器,可由CC2 CC1 CC0来查询。
海纳百川  有容乃大
返回列表