飞思卡尔XS128的基本模板程序

发布者:HarmonyJoy最新更新时间:2021-10-19 来源: eefocus关键字:飞思卡尔  XS128  模板程序 手机看文章 扫描二维码
随时随地手机看文章

/********************************************** 

***********************************************/ 

#include       /* common defines and macros */

#include "derivative.h"      /* derivative-specific definitions */

#include      /* derivative information */

 

//1M=1006080

 

//40MHz BUS_CLOCK

/*

#define SynrDefine 0x53

#define RefdvDefine 0x07         //时钟频率等于2*晶振频率*(SYNR0+1)/(REFDV0+1)

#define SciDefine 0x106          //串行总线频率=时钟频率/(16*SCI0BDL)

*/

//----------------------------------------------------- 

 

//80MHz BUS_CLOCK

#define SynrDefine 0xD3

#define RefdvDefine 0x03         //时钟频率等于2*晶振频率*(SYNR0+1)/(REFDV0+1)

#define SciDefine 0x20c          //串行总线频率=时钟频率/(16*SCI0BDL)

#define WAITTIME 100000           //启动延时时间

#define SpeedInterrupt 1000         //速度周期采样时间,定时1000 * 0.01ms = 10ms  

#define AdInterrupt 100             //Ad周期采样时间,定时100 * 0.01ms = 1ms 

int SpeedNow=0;                  //速度采样初始化

int sensor_ad[5]=0;                //i=0~4,AD数据采样结果

//----------------------------------------------------- 

 

//92MHz BUS_CLOCK

/*

#define SynrDefine 0xD6

#define RefdvDefine 0x03         //时钟频率等于2*晶振频率*(SYNR0+1)/(REFDV0+1)

#define SciDefine 0x25a          //串行总线频率=时钟频率/(16*SCI0BDL)

*/

//----------------------------------------------------- 

 

/******************************************************************

*函数名:Wait_Time

*入口参数无

*出口参数: 无

*功能描述: 简单延迟程序

*******************************************************************/

void Wait_Time(ulong cnt) {

    unsigned char a,b;

    while(--cnt) {

    for(b=4;b>0;b--)

        for(a=248;a>0;a--);

    }

}

//----------------------------------------------------- 

 

/******************************************************************

*函数名:PLL_Init

*入口参数SNNR寄存器值,REFDV0寄存器值

*出口参数: 无

*功能描述:使用PLLCLK,时钟频率=2*晶振频率*(SYNR0+1)/(REFDV0+1)

*******************************************************************/

void PLL_Init(byte SYNR0,byte REFDV0)

{

    CLKSEL=0x00; //disable pll; 

    CLKSEL_PLLSEL = 0; 

    PLLCTL_PLLON = 0;

    SYNR = SYNR0; //

    REFDV = REFDV0; 

    PLLCTL = 0xc0; //0xC0 CME=1,PLLON=1

    PLLCTL_PLLON = 1; 

    while(!CRGFLG_LOCK); 

    CLKSEL_PLLSEL = 1;

    return; 

}

//----------------------------------------------------- 

 

/******************************************************************

*函数名:SCI_Init

*入口参数SCI0BD寄存器值

*出口参数: 无

*功能描述:使用SCI_Init,串行总线频率=时钟频率/(16*SCI0BDL)

*******************************************************************/

static void SCI_Init(int SCI0) 

{

    SCI0CR1 =0x00;

    SCI0CR2 =0x2c; //enable Receive Full Interrupt,RX enable,Tx enable      

    SCI0BD  =SCI0; //SCI0BDL=busclk/(16*SCI0BDL)

                  //busclk  8MHz, 9600bps,SCI0BD=0x34

                  //busclk 16MHz, 9600bps,SCI0BD=0x68

                  //busclk 24MHz, 9600bps,SCI0BD=0x9C

                  //busclk 32MHz, 9600bps,SCI0BD=0xD0  

                  //busclk 40MHz, 9600bps,SCI0BD=0x106

}

//----------------------------------------------------- 

 

/******************************************************************

*函数名:Sci0Tx

*入口参数SCI0DRL寄存器值

*出口参数: 无

*功能描述: 发送串口数据

*******************************************************************/

void Sci0Tx(unsigned char text)

{

    unsigned char temp;

    temp=SCI0SR1; /*clear flag*/

    //发送前判断SC0DR是否处于忙状态。SC0DR.7=0:处于忙状态

    while (!SCI0SR1_TDRE); /* wait for output buffer empty */

    while(!SCI0SR1_TC); //等待数据发送结束

    SCI0DRH=0;

    SCI0DRL=text;

}

//----------------------------------------------------- 

 

/******************************************************************

*函数名:Sci0Rx

*入口参数无

*出口参数: 串口数据

*功能描述: 接收串口数据

*******************************************************************/

byte Sci0Rx(void)

{

    byte result,temp;

    temp=SCI0SR1; /*clear flag*/

    if((temp&0x20)>0)

    result=SCI0DRL;

    return result;

}

//----------------------------------------------------- 

 

/******************************************************************

*函数名:PWM_Init

*入口参数无

*出口参数: 无

*功能描述: 脉宽调制初始化( BUS_CLOCK=80M ),1口马达,6口舵机

*******************************************************************/

void PWM_Init(void) {

 

    PWME=0x00;       //禁止PWM模块

    PWMCAE=0x00;     //全部左对齐输出

    PWMPOL=0xFF;     //全部为先输出高电平再输出低电平

    PWMCLK=0xFF;     //01级联-马达,6-舵机预分频

                     //其中CLOCK A或CLOCK SA控制0,1,4,5通道的PWM,CLOCK B或CLOCK SB控制2,3,6,7通道的PWM

    PWMPRCLK=0x22;   //CLOCK SA与CLOCK SB都进行4分频

                     //设置频率A=bus clock/4=20MHz,B=bus clock/4=20MHz

 

    PWMSCLA=0x01;    //CLOCK SA进行10分频,即20MHZ/2/1=10MHZ

    PWMSCLB=0x05;    //CLOCK SB进行10分频,即20MHZ/2/5=2MHZ

 

    PWMCTL_CON01=1;  //01级联

    PWMPER01=2500;   //输出频率的算法:SA clock/2500=4KHz;

      

    PWMDTY01=1250;   //通道01初始化占空比50%

 

    PWMPER6=2000;    //输出频率的算法:SB clock/2000=100Hz;

 

    PWMDTY6=1000;    //通道6初始化占空比50%

 

    PWME=0x22;       //打开01,6通道(只需开通高位即可)

 

}

//----------------------------------------------------- 

 

/******************************************************************

*函数名:PIT_Init

*入口参数无

*出口参数: 无

*功能描述: 时钟周期中断初始化程序

*******************************************************************/

void PIT_Init(void)   

{  

    PITCFLMT_PITE=0; //关闭PIT  

 

    //微定时器的装载寄存器  

    PITMTLD0= 80-1;//8位定时器初值设定。80分频,在80MHzBusClock下,为0.1MHz,即10us=0.01ms  

    //PITMTLD1= 80-1;//8位定时器初值设定。80分频,在80MHzBusClock下,为0.1MHz,即10us=0.01ms  

    //PITMTLD1= 160-1;//8位定时器初值设定,160分频,在16MHz的总线时钟频率下,为0.1MHz,即1us=0.01ms  

      

    //定时器的装载寄存器 

    //中断定时基准时间设定 

    PITLD0  = SpeedInterrupt - 1 ;//16位定时器初值设定。PITTIME*0.01MS,定时1000 * 0.01ms = 10ms  

    PITLD1  = AdInterrupt - 1 ;//定时100*0.01ms = 1ms

 

    PITCE_PCE0=1;//使能通道0  

    PITCE_PCE1=1;//使能通道0

      

    PITMUX_PMUX0=0;//0:相应16位定时器与微时基0连接  

    PITMUX_PMUX1=0;//0:相应16位定时器与微时基0连接

    //PITMUX_PMUX1=1;//1:相应16位定时器与微时基1连接  

      

    PITINTE_PINTE0=1;//开通PIT0定时器的溢出中断      

    PITINTE_PINTE1=1;//开通PIT1定时器的溢出中断   

 

    PITCFLMT_PITE=1; //使能PIT   

}  

//----------------------------------------------------- 

 

/******************************************************************

*函数名:ECT_Init

*入口参数无

*出口参数: 无

*功能描述: 脉冲累加计数,PTT7口,电路接法:需要上拉电阻5.1千欧姆

*******************************************************************/

void ECT_Init(void)

{

    TSCR1 = 0x00;           //禁止时钟  

    TIOS = 0x7f;      //设置通道7为输入捕捉功能

    PACTL=0x50;

 

    PACNT=0x00;

    TSCR2 = 0x00;

    TCTL3 = 0x40;   //设置通道7上升沿捕捉

    TSCR1=0x80;   //允许时钟计数

}  

//----------------------------------------------------- 

 

/******************************************************************

*函数名:AD_Init

*入口参数无

*出口参数: 无

*功能描述: AD模块转换程序

*******************************************************************/

void AD_init() 

 

  ATD0CTL1=0b00000000; // 8位转换

                       //ATD0CTL1=0b00100000; // 10位转换

                       //ATD0CTL1=0b01000000; // 12位转换

                       

  ATD0CTL2=0x40;       //上电,标志位快速清零,忽略外部触发,中断禁止。

  

  ATD0CTL3 = 0b10101000; //转换序列长度为7,结果寄存器数据右对齐

                         //S8C  S4C  S2C  S1C  转换序列长度

                         // 0    0    0    0        8        ATD0CTL3 = ob10000000

                         // 0    0    0    1        1        ATD0CTL3 = ob10001000

                         // 0    0    1    0        2        ATD0CTL3 = ob10010000

                         // 0    0    1    1        3        ATD0CTL3 = ob10011000

[1] [2]
关键字:飞思卡尔  XS128  模板程序 引用地址:飞思卡尔XS128的基本模板程序

上一篇:飞思卡尔单片机PWM模块分析(3)
下一篇:飞思卡尔单片机PWM模块分析(2)

推荐阅读最新更新时间:2024-11-22 12:49

抢攻物联网/穿戴式 飞思卡尔新款SCM亮相
因应物联网(IoT)与穿戴式装置对体积、功耗与上市时程的设计要求,飞思卡尔(Freescale)推出新款单晶片系统模组(Single Chip System Module, SCM)--i.MX 6D/6Q,藉以在物联网市场抢占一席之地。该产品预计12月量产,而搭载此晶片的终端产品则可望于明年初上市。 飞思卡尔系统设计、研发暨业务开发经理Navjot Chhabra表示,新款SCM锁定物联网、手持行动装置、穿戴式装置、工业感测应用和汽车等为市场目标。 飞思卡尔系统设计、研发暨业务开发经理Navjot Chhabra表示,物联网将驱使联网装置与穿戴式装置快速成长,但上述装置都会遇到空间/体积缩小的限制和须要更多的处理电源、
[物联网]
飞思卡尔失去汽车芯片市场领先地位
Strategy Analytics汽车电子服务发布最新研究报告“汽车芯片厂商2008年市场份额更新”。报告指出,在规模为184亿美元的汽车芯片市场中,飞思卡尔失去其先前绝对领先地位,其目前9.5%的市场份额,与竞争对手英飞凌不相上下。 作为汽车芯片市场的早期进入者和创新者,飞思卡尔先前一直遥遥领先于其主要竞争对手。飞思卡尔目前遭遇重大挫折,究其原因,是因为相对于英飞凌和其他竞争对手,飞思卡尔的更多收入来自于美国汽车电子市场,而美国是最先受到全球经济危机冲击的国家。 华尔街金融危机引发信贷紧缩,造成消费者信心指数下滑,首先受到冲击的是美国市场的新车销售和产能,导致2008年第四季度汽车需求量显著下降。Stra
[汽车电子]
飞思卡尔MCU创意大奖赛完美收官
(中国,深圳) 8 月 2 日下午,中电器材“ MCU 创意设计分享大会暨飞思卡尔 MCU 创意大奖赛”在深圳会展中心 2 号馆隆重举行,来自嵌入式领域的上百位工程师就嵌入式领域的应用创新进行了交流, MCU 创意设计分享大会特设的创新方案展示专区成为众多设计工程师交流创新心得的好去处。 中国电子器材深圳有限公司总经理刘迅, 飞思卡尔半导体亚太区 FAE 总监申宇 及部分选手代表 出席了大会。 会上,来自飞思卡尔、 ARM 中国及中电器材的专家发表了主题演讲,阐述了各家的市场策略;三位大赛选手分享了他们设计的技术解决方案。 演讲结束后,举行了隆重的颁奖典礼,为在“飞思卡尔 MCU 创意大奖赛”中获奖的选手进行了颁奖
[单片机]
飞思卡尔MC56F827xx系列数字信号控制器 提供最佳性能和功效
飞思卡尔半导体推出MC56F827xx系列数字信号控制器,它具有同类最佳的性能和功效。这一全新系列旨在应对从模拟到数字技术日益增长的过渡,以适应功率转换和先进的电机控制应用。 与同类竞争解决方案相比,MC56F827xx系列数字信号控制器消耗的电量降低了48%。因为全新的飞思卡尔数字信号控制器能够以极高的效率运行系统,而不会由于过量功耗浪费能源,它们非常适合电信/服务器电源、太阳能逆变器、无线充电、感应烹饪和照明等绿色应用。 这些通常以极高开关频率运行的处理密集型应用,需要快速模数转换器、高分辨率脉冲宽度调制以及低功耗来实现最佳性能水平的操作。 许多大小可与MC56F827xx DSC系列相媲美的解决方案通常以50MHz频
[单片机]
Tundra推出Tsi109主桥可与飞思卡尔处理器配套
系统互连领域领导厂商Tundra Semiconductor Corporation日前宣布其性能优异的PowerPC主桥即Tundra Tsi109主桥,现已全面投产。Tsi109可以帮助设计人员提高总体系统性能、降低系统设计复杂性、更好地实现集成。 Tsi109主桥可在167MHz下支持双处理器,有助于提高系统计算性能。Tsi109的内存管道可提供优秀的内存带宽,而经过优化的PCI-X接口可提供更好的I/O用于内存吞吐。除了2.5W的典型功耗外,Tsi109还支持DDR2内存。 Tundra的PowerPC主桥产品阵容可为无线和有线网络、存储以及嵌入式计算市场领域的客户提供优秀的系统性能、功效和低成本。Tundra主桥是F
[新品]
全球20大半导体厂商 飞思卡尔被MOTO害苦
7月31日消息,据国外媒体报道,IC Insights日前评出了2007年上半年全球20大半导体厂商。受摩托罗拉低迷影响,飞思卡尔排名居然下滑了7位,现排名第16位。 摩托罗拉是飞思卡尔的最大客户,由于摩托罗拉近况不佳,使得飞思卡尔的排名从2006年的第9位将至第16位,成为名次下滑最大的半导体厂商。 而名次上升最开的是高通,从去年的第17位升至第13位。此外,AMD的名次也从去年的第13位降至第15位。而前三名的位置没有变化,分别是英特尔、三星和德州仪器。 以下为IC Insights评出的2007年上半年全球20大半导体厂商排名: 1 英特尔(06年排名:1) 2 三星(2) 3 德州仪器(3) 4 东芝(5)
[焦点新闻]
飞思卡尔推出新款加速度传感器
飞思卡尔半导体日前宣布推出两款双轴加速度传感器和一款三轴加速度传感器,用户可根据检测下降、倾斜、运动、定位、震动和振动等不同需要而选择其g灵敏度。 新推出的MMA7261Q、MMA6270Q和MMA6280Q能分别在XYZ、XY和XZ轴上提供从1.5g到6g或2.5g到10g间的不同灵敏度, 以满足不同用户的需求。 飞思卡尔的加速度传感器其他特点包括:500微安低工作电流、3微安休眠模式、2.2V–3.6低压操作、6×6×1.45 mm QFN小型低剖面封装、1.5g工作时达800 mV/g高灵敏度和快速启动时间。
[新品]
OK6410裸机程序之开始模板(Linux环境)
一、 裸机程序的构成 1. 基本的裸机程序由启动代码和C函数文件构成。而启动代码包括:硬件设备初始化、调用C函数。 本次分析中代码文件有: start.S 启动代码,都是汇编写的 commom.h 一些通用的函数,比如设置某寄存器的某位为1或0 irq.c 中断初始化,中断处理等 regs.h 6410的寄存器地址,需要哪些寄存器可以在本文件中声明和定义 sdram.c 有关sdram的一些操作,如sdram初始化等 time.c 系统时钟的有关设置,如PLLclock等 led.c 这个就是主函数了,主程序就在这里编写,本次只是演示,控制开发板的led
[单片机]
OK6410裸机<font color='red'>程序</font>之开始<font color='red'>模板</font>(Linux环境)

推荐帖子

基于AD9854的信号发生器设计
本帖最后由paulhyde于2014-9-1503:07编辑基于AD9854的信号发生器设计基于AD9854的信号发生器设计本帖最后由paulhyde于2014-9-1503:07编辑不介绍了,,自己下载来看吧,,,,,,,本帖最后由paulhyde于2014-9-1503:07编辑先下来看看本帖最后由paulhyde于2014-9-1503:07编辑基于AD9854的信号发生器设计基于AD9854
gerdy 电子竞赛
STM32定时器中断为什么不能直接在while中判断中断标志位
为什么这个不行while(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET){MCU_1_LED=!MCU_1_LED;}而这么设置就行?while(1){if(Flag==1){MCU_1_LED=!MCU_1_LED;Flag=0;}}STM32定时器中断为什么不能直接在while中判断中断标志位要想进入定时器中
shijizai stm32/stm8
求教在WinCE中ini文件的写法
各位高手,我想在*.ini文件里面把画面上的按钮大小,字体等属性写出来。请问该怎么写?格式是什么?求教在WinCE中ini文件的写法这个代码可以参考一下:#defineMAX_LEN1000///用于CString,使用CString类前最好估算整个操作过程中可能出现的最大///字符长度,用GetBuffer(MAX_LEN)来创建缓冲区。这将避免频繁创建、删除///缓冲区,提高了效率,也避免了内存碎片。CStr
ardentyears WindowsCE
自己整理的1602显示子函数
#include1602.h#includedelay.h/**********************************************函数名:write_dat(uchardat,ucharorder)函数参数:uchardat,ucharorder函数功能:写数据(1)、指令(0)**********************************************/voidwrite_dat(uchar
狼牙小帅 51单片机
MSP430学习资料
MSP430学习资料很好顶顶,各种顶,超级顶,真是太好了!!!研究中呵呵,很不错。学习者谢谢楼主啊灰常灰常的感谢。谢谢楼主的无私奉献内牛满面。。。。。感谢楼主
hxqhit 微控制器 MCU
多核DSP C6678 SRIO借口调试记录
设计的板子到了SRIO调试阶段了,在板子上,一片V6和两片6678通过4XSRIO互联,中间没有Switch,总算搞定了相互之间的通信。首先,感谢Ti论坛提供的SRIO程序范例,但是其硬件平台是EVM板,更多的只能用于loopback测试,但是可以在其基础上修改。1.初始化DSP的SRIO,主要是对SerDes进行配置,然后是Lane和Speed的配置,最后需要等待FPGA的LinK建立,我们在建立时候碰到一点困难,每次建立并不都是4X,一直没有找到问题,我
Aguilera DSP 与 ARM 处理器
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved