飞思卡尔单片机AD模块简述(2)

(5)ATD控制寄存器4

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
读/写SMP2SMP1SMP0PRS4PRS3PRS2PRS1PRS0
复位值00000101

SMP [ 2 : 0 ]:采样时间选择位。

SMP2SMP1SMP0采样时间(ATD时钟周期的个数)
0004
0016
0108
01110
10012
10116
11020
11124

PRS [ 4 : 0 ]:ATD时钟预分频因子。假设MCU内部总线时钟频率为BUSCLK,那么可以通过那下面公式计算出ATD时钟频率ATDCLK,默认预分频因子为5.

ATDCLK = BUSCLK / ( 2 * ( PRS + 1 ) )

注:设置预分频因子时,应使ATDCLK不小于0.25MHz,同时不大于8.3MHz。

(6)ATD控制寄存器5

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
0SCSCANMULTCDCCCBCA
复位值00000000

ATD控制寄存器5的地址为¥02C5,如果写该处理器时,会停止当前的ATD转换序列,并开始一次新的ATD转换序列。

SC:特殊通道转换使能位。1表示对特殊通道进行转换,0表示关闭特殊通道转换。

SCAN:连续转换序列模式位,用于决定ATD转换序列是执行一次还是连续执行。1表示连续执行ATD转换序列,0表示只进行一次ATD转换序列。

MULT:多通道采样模式选择位。1表示多通道采样,0表示单通道采样。

CC [ 3 : 0 ]:转换计数。表示当前转换的结果将要写入的结果寄存器编号。

CCCBCA模拟量输入通道
000AN0
001AN1
010AN2
011AN3
100AN4
101AN5
110AN6
111AN7

(7)ATD状态寄存器0

BIt7BIt6BIt5BIt4BIt3BIt2BIt1BIt0
SCF0ETORFFIFORCC3CC2CC1CC0
复位值00000000

SCF:转换序列完成标志位。当一次转换序列完成后,置该标志位。如果转换序列连续进行(SCAN=1),在每一次完成后都会置位该标志位。

ETORF:外部触发溢出标志位。当处于边沿触发模式(ETRIGLE=0),如果当序列转换正在进行时又检测到一个有效边沿信号时,此标志位置位。

FIFOR:先入先出溢出标志位此标志位表示在A/D转换完成标志(CCF)还没有被清零时,结果寄存器又被写入了数据。在先进先出模式下,此标志位表示结果寄存器中的数据和输入通道是否处于同步状态,在非先入先出模式下,此标志位结果寄存器中的数据在读出之前已经被新数据覆盖。

CC [ 3 : 0 ]:转换计数器,表示当前转换的结果将要写入的结果寄存器编号。如果在先进先出模式下(FIFO=0),转换计数器在转换队列的开始和结束时被初始化为000;如果在先进先出模式下(FIFO=1),转换计数器不被初始化,当达到最大值时,转换计数器又被重新置为最小值。

CC3CC2CC1CC0结果寄存器序号
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
101010
101111
110012
110113
111014
111115

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AD模块飞思卡尔调试程序全部文件: #include <hidef.h> /* common defines and macros */ #include "derivative.h" /* derivative-specific definitions */ int i; unsigned char RX_ID[4],RX_DS[8]; unsigned int r[8]; unsigned int temp[2],s; void setbusclock(void) { CLKSEL=0X00; // disengage PLL to system PLLCTL_PLLON=1; // turn on PLL SYNR=0x01; // VCOFRQ[7:6];SYNDIV[5:0] // fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1) // fPLL= fVCO/(2 × POSTDIV) // fBUS= fPLL/2 // VCOCLK Frequency Ranges VCOFRQ[7:6] // 32MHz <= fVCO <= 48MHz 00 // 48MHz < fVCO <= 80MHz 01 // Reserved 10 // 80MHz < fVCO <= 120MHz 11 REFDV=0x01; // REFFRQ[7:6];REFDIV[5:0] // fREF=fOSC/(REFDIV + 1) // REFCLK Frequency Ranges REFFRQ[7:6] // 1MHz <= fREF <= 2MHz 00 // 2MHz < fREF <= 6MHz 01 // 6MHz < fREF <= 12MHz 10 // fREF > 12MHz 11 // pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz; POSTDIV=0x00; // 4:0, fPLL= fVCO/(2xPOSTDIV) // If POSTDIV = $00 then fPLL is identical to fVCO (divide by one). _asm(nop); // BUS CLOCK=16M _asm(nop); while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system 分频; } //[设置总线时钟频率为16MHZ] ; // void ATDInit(void) { ATD0CTL2=0x42; // ATD启动,禁止外部触发,允许ATD中断; ATD0CTL3=0x88; // 背景调试模式下继续转换,每1次转换一个转换序列,继续转换; ATD0CTL4=0x01; // 采样时间为 2个时钟周期,转化按10位进行,总分频系数为8; ATD0CTL5=0x20; // 数据右对齐,无符号,单通道采集, } //[AD进行初始化];

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值