笔记:freescale-S9S12G系列单片机开发指南

本文围绕S9S12G系列单片机展开,先介绍其概况,包括S12内核、多种存储器、振荡器等特点。接着阐述搭建最小系统,涵盖晶振、复位、BDM调试和供电电路。最后详细说明配置片上资源,如时钟、定时器、GPIO等多项配置,还给出CAN过滤扩展帧的示例。
目标:搭建S9S12G单片机最小系统,配置常用片上资源
备注:软硬件设计参考官方开发板-DEVKIT-S12G128开发板
片上资源:时钟、定时器GPIO、外部中断、PWM、ADC、EE、IIC、SCI、SPI、CAN、看门狗

0. S9S12G系列单片机概况

MC9S12G系列概述

在这个系列里面可应用的模块包括以下特点:

  S12内核

  高达240KB的片内在线可编程FLASH存储器防纠错闪存

  高达4KB防纠错EEPROM

  高达11KB片内SRAM

  拥有内部滤波器的锁相环回路(IPLL)频率乘法器

  4-16MHz振幅控制穿透振荡器

  1MHz内部RC振荡器

  定时单元(TIM)支持达到8通道(提供16位输入俘获,输出比较,计数,脉冲存储器功能)

  多达8*8通道脉宽调节(PWM)模块

  多达16通道,10位或12位分辨率逐次近似计算法模数转换器(ADC)

  多达两个8位数模转换器(DAC)

  多达一个5V模拟比较器(ACMP)

  多达3个串行外围接口模块(SPI)

  多达3个串行通信接口(SCI)模块(支持LIN通信)

  多达一个多级控制局域网(MSCAN)模块(支持CAN2.0 A/B 协议)

  在线片内稳压器(VREG)用于控制内部供给和内部电压

  自动周期性中断(API)

  固定电压基准精度参考ADC转换器

1. 搭建最小系统

晶振电路、复位电路、BDM调试电路、供电电路

1.1 晶振电路

1.2 复位电路

RESET引脚是一个低电平有效的双向控制信号, RESET引脚内部上拉

1.3 BDM调试电路

1.4 供电电路

2. 配置片上资源

时钟、定时器、GPIO、外部中断、PWM、EE、IIC、SCI、SPI、CAN、看门狗

片上驱动采用内置PE配置方式开发

2.1 时钟配置

/*******************************************************************************
Function Name : PLL_Init
Parameters    : unsigned char pll_synr
                unsigned char pll_refdv
                unsigned char pll_postdivNONE
Modifies      : NONE
Returns       : NONE
Notes         : Sets BUSCLK = 40MHz from OSCCLK = 4MHz
Issues        : NONE
*******************************************************************************/
static void PLL_Init(unsigned char pll_synr, unsigned char pll_refdv, unsigned char pll_postdiv)
{
  CPMUPROT = 0x26U;                    /* Disable protection of clock configuration registers */  
  CLKSEL = 0X00;   //disengage PLL to system
  PLLCTL_PLLON = 1;  //turn on PLL
  //CPMUREFDIV_REFFRQ = 2; 
    
  /* CPMUSYNR: VCOFRQ1=0,VCOFRQ0=0,SYNDIV5=0,SYNDIV4=0,SYNDIV3=0,SYNDIV2=1,SYNDIV1=0,SYNDIV0=1 */  
  CPMUSYNR = pll_synr;        // Set the multiplier register [3]
  /* CPMUREFDIV: REFFRQ1=0,REFFRQ0=1,REFDIV3=0,REFDIV2=0,REFDIV1=0,REFDIV0=1 */  
  CPMUREFDIV = pll_refdv;     // Set the divider register [1]
  /* CPMUPOSTDIV: POSTDIV4=0,POSTDIV3=0,POSTDIV2=0,POSTDIV1=0,POSTDIV0=0 */
  CPMUPOSTDIV = pll_postdiv;  // Set the post divider register [1]
    
  CPMUOSC_OSCE = 1;			  // External oscillator enable. 8MHZ.        FREF=FOSC/(REFDIV+1)	
  _asm(nop);
  _asm(nop);
  while(!CPMUFLG_LOCK);       // Wait till the PLL VCO is within tolerance
    
  CPMUCLKS_PLLSEL = 1;        // Select clock source from PLLCLK,bus=
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值