查看: 4337|回复: 2

[其他] MCF52233ADC

[复制链接]

该用户从未签到

4

主题

9

帖子

0

新手上路

Rank: 1

积分
32
最后登录
1970-1-1
发表于 2009-11-23 23:12:11 | 显示全部楼层 |阅读模式
MCF52233的ADC功能很是强大,有8个ADC通道,有两个ADC模块,这两个ADC模块可以设置为并行工作模式(但对每个模块还是顺序转换的)或者是顺序的模式。MCF52235 ADC模块的主要特性:12位的精度,频率最高为5MHz,采样率高达1.66MPS,单通道采样转换时间1.7微秒,额外转换时间1.2微秒,差分功能。 控制寄存器1:CTRL1为16位寄存器,主要位STOP0可以设置是否停止,START0使模块开始工作,SYNC0定义模块可以由外部信号触发工作,EOSIE0、ZCIE、LLMTIE、HLMTIE定义各种中断使能,CHNCFG定义是否使用差分,SMODE转换模式。控制寄存器2:CTRL2为16位寄存器,DIV设置时钟的分频。若工作在并行转换模式,则CTRL2和CTRL1含义基本相同,但是控制的是ADC B模块。 ADZCC寄存器:和ADOFSn配合使用,过零标志,可以设置符号由正变负或由负变正触发中断。ADLST1和ADLST2:可以设置队列转换的先后顺序,既先先采样哪个通道。采样禁止寄存ADSDIS:该寄存器与ADLST1,ADLST2配合使用,对应位为1允许采样。状态寄存器ADSTAT:CIP0和CIP1指A和B模块是正在转换还是处于空闲,EOSI1和EOSI0表示转换完成中断来临,ZCI过零中断,LLMTI最低限制中断,HLMTI最高限制中断,RDYn指示采样是否就绪。
 限制状态寄存器ADLSTAT:指示是否超越高低限制。过零状态寄存器ADZCSTAT:过零状态。结果寄存器ADRSLTn:16位寄存器RSLT存放12位结果,还提供一个SEXT符号位。低三位未用。高低限制寄存器ADHLMTn和ADLLMTn:设置高低限制,离开这个限制将产生中断(如果允许)。偏移量寄存器ADOFSn:是跟过零状态有关的值。参考电压寄存器CAL:选择参考电压源。ADC的详细说明和一些细节问题请阅读英文的PDF文档。下面贴出一个关于ADC的程序以供参考:

#include"ADC.h"
void ADCInit(void)
{
  
    //config CTRL1    
     MCF_ADC_CTRL1 =MCF_ADC_CTRL1_STOP0|MCF_ADC_CTRL1_SYNC0|MCF_ADC_CTRL1_EOSIE0
                    |MCF_ADC_CTRL1_CHNCFG(0)|MCF_ADC_CTRL1_SMODE(0);
     MCF_ADC_CTRL2= MCF_ADC_CTRL2_DIV(9);
     
      
   
   MCF_ADC_ADLST1=0x37; //Set the list register
   MCF_ADC_ADLST2=0x4567;
  
   
    //Set the sample Disable Register(ADSDIS)
    // MCF_ADC_ADSDIS=MCF_ADC_ADSDIS_DS1;
       MCF_ADC_ADSDIS=MCF_ADC_ADSDIS_DS2;
   
    //Set the lowest limit , highest limit
    MCF_ADC_ADLLMT0 = 0x2222;
    MCF_ADC_ADHLMT0 = MCF_ADC_ADHLMT_HLMT(0xffff);
   // MCF_ADC_ADLLMT1 = 0;
   // MCF_ADC_ADHLMT1 = MCF_ADC_ADHLMT_HLMT(0x4444);
   
   // MCF_ADC_ADLLMT2 = 0;
   // MCF_ADC_ADHLMT2 = MCF_ADC_ADHLMT_HLMT(0xffff);
   // MCF_ADC_ADLLMT3 = 0;
   // MCF_ADC_ADHLMT3 = MCF_ADC_ADHLMT_HLMT(0xffff);
   // MCF_ADC_ADLLMT4 = 0;
   // MCF_ADC_ADHLMT4 = MCF_ADC_ADHLMT_HLMT(0xffff);
   
    //set the offset regisers
   // MCF_ADC_ADOFS0 = 0x0fff;
   // MCF_ADC_ADOFS1 = 0;
  //  MCF_ADC_ADOFS2 = 0;
  //  MCF_ADC_ADOFS3 = 0;
  //  MCF_ADC_ADOFS4 = 0;
  //  MCF_ADC_ADOFS5 = 0;
  //  MCF_ADC_ADOFS6 = 0;
  //  MCF_ADC_ADOFS7 = 0;
   
 // Disables zero crossing flag
  // MCF_ADC_ADZCC |= MCF_ADC_ADZCC_ZCE0(0X2);
    
    
     MCF_ADC_POWER = 0xd4;//PUDELY=13,PD2=1
  
    ///// MCF_ADC_CTRL1 &=~MCF_ADC_CTRL1_STOP0;//CLEAR STOP0,PREPARE FOR  STARTING
    
    //wait A power_up finish
    while(MCF_ADC_POWER&MCF_ADC_POWER_PSTS0)
    {
     ;
    }
     //wait B power_up finish
    while(MCF_ADC_POWER&MCF_ADC_POWER_PSTS1)
    {
     ;
    }
   
   
 
}
 
void ADCStart(void)
{
   //MCF_ADC_CTRL1&=~MCF_ADC_CTRL1_STOP0;
 MCF_ADC_CTRL1|=MCF_ADC_CTRL1_START0;
 
 MCF_ADC_ADRSLT0=0X1111;
}
 
 
 
我知道答案 目前已有1人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2009-11-24 11:26:09 | 显示全部楼层

    RE:MCF52233ADC

    李老师,辛苦了
    该会员没有填写今日想说内容.

    该用户从未签到

    33

    主题

    441

    帖子

    0

    新手上路

    Rank: 1

    积分
    7703
    最后登录
    1970-1-1
    发表于 2009-11-24 12:11:54 | 显示全部楼层

    RE:MCF52233ADC

    呵呵,那不是我写的,是我们 这个组的另一个兄弟
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 05:01 , Processed in 0.087700 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表