智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 13685|回复: 36
打印 上一主题 下一主题

[基础知识] XS128 的 AD转换

  [复制链接]

8

主题

16

帖子

0

精华

高级会员

Rank: 4

积分
761
威望
276
贡献
437
兑换币
0
注册时间
2010-1-2
在线时间
24 小时
跳转到指定楼层
1#
发表于 2010-6-5 23:20:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

void setbusclock(void)
{   
    CLKSEL=0X00;    //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR=0xC5;                                                        
    REFDV=0x81;          //pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;   
    _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;
}
void vADInit(void)
{
    ATD0CTL1=0b00000000;//8位精度
    ATD0CTL2=0b01000000;//禁止外部触发,标志位快速清零,中断禁止
    ATD0CTL3=0b10001000;//右对齐无符号.转换序列长度为1,No FIFO模式,Freeze模式下继续转换?
    ATD0CTL4=0b00000111;//4AD采样周期,ATDClock=[BusClock*0.5]/[PRS+1]  ; PRS=15, divider=32 ?
    ATD0CTL5=0b00100000;//特殊通道禁止,单通道采样,扫描模式连续采样,ch AN0
    ATD0DIEN=0b00000000;//禁止数字输入
}
unsigned char ReadATD()
{
    byte ad=0;  
    while(!ATD0STAT0_SCF);
    ad= ATD0DR0L;
    return ad;
}
void main(void) {
  setbusclock();
  DDRB=0xFF;
  PORTB=0x00;   
  vADInit();      
  EnableInterrupts;  
  
  
  for(;;){
  
    PORTB=ReadATD(); //在B口显示转换值
         
  }
}
S12XS系列单片机是在S12XE系列的基础上去掉XGate协处理器的低成本系列单片机(让我说就是在蛋糕上留有牙齿印的阉割产品)。采用S12X V2 CPU内核,标称总线频率40MHz(可利用锁相环超频),载有ECC(片内纠错模块)功能,目前有64Pins,80Pins,112Pins三种封装,对应管脚与MC9S12XE系列相兼容,与MC9S12DG不完全兼容(变化不大,以前板子稍作修改就可使用)。片内(至少)自带一个CAN总线模块,两个SCI模块,支持LIN总线,一个SPI,八路定时器,八路16位计数器,四路外部中断,以及八路PWM输出,八路AD(可选精度为8位,10位或12位),转换时间标称3us(较MC9S12DG128超频到40MHz的转换时间7us有所提高)。
      关于V2内核,在技术上的创新主要在一下几方面:
1) 在16位条件码寄存器的高8位增加U位,控制运行状态为系统运行和用户运行。
2) 增加了ECC模块,及Error Code Correction 错误代码纠正模块。
3) 对Flash存储器做了重新规划和管理,方便了用户擦写。
4) 与V2配合使用的XGate为争强型协处理器,支持中断嵌套。
      关于S12XE系列单片机,则是基于S12XD系列的争强型,主要表现在V2内核和锁相环模块增加了内部滤波器和失效功能探测功能。
      综上所述,S12XS系列单片机就S12系列单片机的主要可见进步就是增大了总线频率,提高了AD精度和转换速度,增加了ECC模块,应用中去掉了外部锁相环电路,和模式选择部分,寻址方式和寻址范围有所变化。就我认为,大家能用S12的还是不必非要升级到S12XS,技术有进步,但是成本也有提高,而且其技术进步的部分,相对于成本提高,基本没什么意义。
转自http://phenix-9899.blogbus.com/logs/38979492.html

8

主题

22

帖子

0

精华

高级会员

Rank: 4

积分
963

优秀会员奖章

威望
476
贡献
283
兑换币
294
注册时间
2013-10-30
在线时间
102 小时
毕业学校
广东海洋大学寸金学院
37#
发表于 2013-10-30 12:22:25 | 只看该作者
有个问题想问一下,上面这个程序的AD转换转的是什么,我在数码管显示了10001001
回复 支持 反对

使用道具 举报

8

主题

105

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1972
威望
906
贡献
586
兑换币
594
注册时间
2013-4-7
在线时间
240 小时
36#
发表于 2013-8-8 09:30:53 | 只看该作者
不明觉厉

回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
35#
发表于 2013-3-27 19:01:02 | 只看该作者
条件代码寄存器是什么?CCR?在CODE5.1里面没有啊
回复 支持 反对

使用道具 举报

20

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1440
QQ
威望
738
贡献
82
兑换币
325
注册时间
2012-12-20
在线时间
310 小时
34#
发表于 2013-1-24 15:56:34 | 只看该作者
谢了
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
威望
106
贡献
49
兑换币
54
注册时间
2012-11-24
在线时间
23 小时
毕业学校
北京工业大学
33#
发表于 2013-1-22 20:12:46 | 只看该作者
谢谢~~
回复 支持 反对

使用道具 举报

5

主题

50

帖子

0

精华

高级会员

Rank: 4

积分
624
威望
345
贡献
159
兑换币
163
注册时间
2012-3-17
在线时间
60 小时
32#
发表于 2013-1-1 21:09:14 | 只看该作者
ATDCTL0为一个8位寄存器,为何在赋值时用0b00000000。
回复 支持 反对

使用道具 举报

4

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
465
威望
255
贡献
132
兑换币
0
注册时间
2012-5-19
在线时间
39 小时
毕业学校
山师
31#
发表于 2012-6-7 09:07:08 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
QQ
威望
213
贡献
62
兑换币
0
注册时间
2012-2-4
在线时间
16 小时
30#
发表于 2012-6-6 21:58:07 | 只看该作者
thanks!!!
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

注册会员

Rank: 2

积分
190
威望
135
贡献
41
兑换币
0
注册时间
2012-5-22
在线时间
7 小时
毕业学校
安徽理工大学
29#
发表于 2012-6-6 19:25:07 | 只看该作者
顶!
再配合一点定时中断就更好啦!
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-1 16:05 , Processed in 0.109577 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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