1. 新手,想参加飞思卡尔智能车大赛,不知道怎么准备要看哪方面的书望详细推荐
硬件方面,也就是电路设计,关于比赛用到的电路不是特别复杂,需要具备一定的电路基础,模拟电路,数字电路和一些EDA设计的能力,主要还是多看前人的东西,看懂了再发展自己的,想创新的空间存在但是不是很大。
软件方面,首先要确定你希望做什么方面的小车,根据传感器不同,所需要运用的算法也有所差异,不过基本的单片机知识,数字电路的知识是需要具备的,再者就是控制算法了,关于自控和计算机控制也要有一定的了解。
小车制作需要精力和时间,起步是比较困惑的,要多看资料,不能嫌繁琐,同时也希望你能够大胆设计自己的新东西,为智能车的制作增添乐趣。
我经常在线,有不明白的可以具体问我。
2. 请问高手们:s12XS飞思卡尔单片机相对51有哪些区别可以用Keil编程吗谢谢!
s12xs是十六位单片机,内部集成了PPL,CAN,输入捕获,总线是我觉得最大的特点,把主线超超频,就很强大了。其它的什么16位PWM,UART等都很长见。至于51,8位的单片机,呵呵,很低端了,AVR随意的都超越了。给s12飞思卡尔单片机编程使用codewarrior编程。最近在用Keil UV4给STM编程,呵呵
3. 飞思卡尔的主要产品
产品范围
8位微控制器(单片机)、16位微控制器(单片机)、32位ARM Cortex-M架构微控制器(单片机)-Kinetis系列、与ARM Cortex-A架构i.MX系列处理器、Power Architecture™/PowerQUICC™、高性能网络处理器、高性能多媒体处理器、高性能工业控制处理器、模拟和混合信号、ASIC、CodeWarrior™开发工具、数字信号处理器与控制器、电源管理、RF射频功率放大器、高性能线性功率放大器GPA、音视频家电射频多媒体处理器、传感器。具体如下:
Kinetis ARM Cortex-M微控制器
Kinetis [kə'netis]是飞思卡尔32位微控制器/单片机,基于ARM®Cortex®-M0+和M4内核。Kinetis包含多个系列的MCU,它们软硬件互相兼容,集成了丰富的功能和特性,具有出类拔萃的低功耗性能和功能扩展性。
Kinetis K系列/MK(Cortex-M4)
Kinetis L系列/MKL(低功耗Cortex-M0+)
Kinetis E系列/MKE(5V Cortex-M0+)
Kinetis EA系列/MKEA(汽车级产品)
Kinetis W系列/MKW(无线互联,Cortex-M4/M0+产品)
Kinetis M系列/MKM(能源计量,Cortex-M0+产品)
Kinetis V系列/MKV(电机控制产品)
Kinetis Mini/Mini Package(微小封装)
i.MX ARM Cortex-A/ARM9/ARM11 微处理器
i.MX应用处理器是基于ARM®的单核/多核解决方案,适用于汽车电子、工业控制、中高端消费电子、电子书、ePOS、医疗设备、多媒体和显示、以及网络通信等应用,具有可扩展性、高性能和低功耗的特点。
i.MX6: Cortex-A9内核,i.MX 6 Quad, i.MX 6 Dual, i.MX 6 DualLite, i.MX 6Solo, i.MX 6 SoloLite
i.MX53x: Cortex-A8内核
i.MX28x: ARM9™内核,双CAN,以太网L2交换,IEEE 1588。
i.MX25x: ARM9™内核
Qorivva 32位微控制器
基于Power Architecture®技术的Qorivva MCU采用功能强大的高性能车用器件内核架构,构建丰富的系列产品,满足各种汽车应用的需求。
Qorivva MPC57xx
Qorivva MPC56xx
Qorivva MPC55xx
MobileGT(51xx/52xx)
5xx控制器
传感器
飞思卡尔半导体在传感领域具有30多年的发展历史,它的Xtrinsic产品开创了传感技术的新纪元。这个最新品牌的传感器在设计上将智能集成、逻辑和定制化软件完美结合在平台之中,可提供更智能、更独特的应用。
飞思卡尔Xtrinsic品牌的传感器展示了集成的算法,或是集成了多个传感器和处理器的平台,具有高度环境感知和决策功能。Xtrinsic传感解决方案的产品涵盖汽车、消费电子、医疗和工业市场。
模拟电子与电源管理
飞思卡尔提供模拟混合信号和电源管理解决方案,其中包含采用成熟的大规模量产型SMARTMOS™混合信号技术的单片集成电路,以及利用电源、SMARTMOS™和MCU芯片的系统级封装器件。飞思卡尔产品有助于延长电池使用寿命、减小体积、减少组件数量、简化设计、降低系统成本并为先进的系统提供动力。我们拥有丰富的电源管理、高度集成I/O、模拟连接、背光、网络、分布式控制和电源产品,可用于当今各种汽车、消费电子和工业产品。
射频
飞思卡尔的射频产品组合非常丰富,主要应用于无线基础设施、无线个人局域网、通用放大器、广播、消费电子、医疗、智能能源、军事和工业市场等。我们引领射频技术的发展,并将继续成为利用最新技术开发具有极高性能的高质量、高可靠性产品的领导者。
4. 3.3v单片机(飞思卡尔K60)如何跟5v外围芯片连接
3.3V-5V系统之间的信号连接需要解决电平匹配的问题(具体需要你查一下两个系统涉及到元器件的输入输出高低电平的阀值),简单的接法如下:
1.信号由3.3V侧输出:需要提高高电平电压,通常用HCT型的门电路即可,单路的可TI单个门电路产品;
2.信号由5V侧输出:需要明确3.3V侧器件的耐压是否能承受5V,一般用一个20-30欧姆的电阻串入,降压限流。
飞思卡尔半导体(Freescale Semiconctor)是全球领先的半导体公司,全球总部位于美国德州的奥斯汀市。专注于嵌入式处理解决方案。飞思卡尔面向汽车、网络、工业和消费电子市场,提供的技术包括微处理器、微控制器、传感器、模拟集成电路和连接。飞思卡尔的一些主要应用和终端市场包括汽车安全、混合动力和全电动汽车、下一代无线基础设施、智能能源管理、便携式医疗器件、消费电器以及智能移动器件等。在全世界拥有多家设计、研发、制造和销售机构。Gregg Lowe是总裁兼CEO,该公司在纽约证券交易所股票代码(NYSE):FSL,在2013年投入了7.55亿美元的研发经费,占全年净销售额的18%。
5. 飞思卡尔16位单片机SCI串行通信里, While(!(SCI0SR1&0X80));这行什么作用啊下面是写输出寄存器的一个子
SCI0SR1的最高位为TDRE,为发送数据寄存器空标志位。当发送数据寄存器中的数据转移到了移位寄存器中时,该标志位置1,此时发送数据寄存器为空,可以接收新的数据。
While(!(SCI0SR1&0X80))即为判断SCI0SR1的最高位即TDRE位是否为1,如果为1则退出循环往数据寄存器写要发送的数据(后两行的意思)
希望对你有帮助。
6. 求飞思卡尔单片机mc9s12xs128 超频CW5.0例程
void MCUInit()
{
DisableInterrupts; //禁止总中断
CLKSEL &= 0x7f; //CLKSEL的第7位置0,选择系统时钟源为OSCCLK
PLLCTL &= 0xbf; //禁止PLL , PLLCTL.6(pllon)设为0;先关闭PLL
SYNR = 0x01; //根据需要的时钟频率设置SYNR和REFDV寄存器
REFDV = 0x00;
//PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
PLLCTL |= (1<<6); //打开PLL , PLLCTL.6(pllon)设为1;开PLL
while (( CRGFLG&0x08) == 0x00);//通过判断LOCK位,
//确定PLL是否稳定
CLKSEL |= (1<<7); //时钟频率稳定后,允许锁相环时钟源作为系统时钟源;
//本句 执行后:BusClock=PLLCLK/2 BusClock = 32MHz
}
自己写的,调试过没问题,具体主线你想用多少根据注释自己改
7. 飞思卡尔的单片机编程和普通51的编程有很大区别么
区别不大,都是对寄存器操作的,熟悉了寄存器规则以及编程方法就行
飞思卡尔单片机系列
32位Kinetis系列;32位ColdFire系列;32位MPC56xx系列;8位微控制器系列(可使用2片);16位DSC系列;16位微控制器9S12XS系列;16位微控制器9S12G系列
51单片机
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
8. 刚开始学飞思卡尔单片机MC9S08DZ60谁有好的资料介绍给我啊!
Dz60有中文和英文的手册!你看它们就够了,然后还有例程。
给你介绍一个非常好的论坛,这里有非常好的资料http://www.freescaleic.org/
9. 飞思卡尔单片机SCI编程求救!!!
void SendMsg(unsigned char msg[])
函数定义的这一行,msg[]的“[]”去掉
这个错误我相信是你的笔误
函数的参数不能是数组的,只能是数组的首地址
而且,你这个明显只是想传递数组中的一个元素过去,也就是说,传递到SendMsg函数中的,只是一个unsigned char型变量而已,写个中括号做什么
10. 飞思卡尔 mc9s12xs128 单片机 怎样才可以 在EPROM 或者在 FASH 中 保存运行的参数
有相关资料可以参考的,你搜一下flash to epprom相关资料:
用Flash模拟EEPROM
本程序利用S08系列单片机的片内Flash模拟EEPROM。解决部分8位机没有EEPROM导致在运用上的局限。本程序提供一个初始化函数和三个功能函数。用户必须在调用功能函数前调用调用初始化函数。三个功能函数分别是字节写入、字节读取、EEPROM全擦除。用户必须保证调用功能函数前有至少30Bate的栈空间。
本程序参考飞思卡尔公司提供的《在 HCS08 微控制器上使用 FLASH 存储器模拟 EEPROM》。并在源程序的基础上精简了部分功能,减少了RAM使用量。并尝试使用分页机制确定EEPROM地址。
接口函数的EEPROM地址寻址由页地址和页内偏移量组成。即把用户定义的EEPROM分为若干个大小为256字节的页。其地址与FLASH地址的换算关系为:
FLASH真实地址=EEPROM空间起始地址+页地址×256+页内偏移地址
用户在使用EEPROM是只用确定数据保存在EEPROM的相对地址即可。接口函数原型为:
EEPROM_WRITE_DATA(数据,页地址, 页内偏移地址);
Char EEPROM_READ_DATA(页地址, 页内偏移地址);
1. 程序流程分析与设计。
由于S08系列单片机在Flash写入时序中不能进行任何的Flash读操作,Flash写入指令必须放到RAM中执行并关闭所有可屏蔽中断。程序流程如图13-1-?。
字节写入/.全擦除程序流程 字节读取程序流程
图13-1-?
2.程序源代码。此程序在CodeWarrior 6.0继承编译环境中编译通过
/*****************************************************/
//河南工业大学Freescale MCU&DSP联合实验室
// 文件名:flash_program.h
// CPU :MC9S08AW60
// 版 本:v1.0
// 日 期:2008年8月12日
// 调试环境:CodeWarrior 6.0
// 作 者:曾 滔
// 描 述: 头文件,用于保存初始化EEPROM设定、用户定制参数、编译器参数等信息。
/*****************************************************/
#include <hidef.h>
#include "derivative.h"
#include <stdio.h>
/*************flash编程指令(请勿改动)*****************/
#define BLACK_CHECK 0x05 //查空指令
#define BITE_PROGRAM 0x20 //字节编程指令
#define BURST_PROGRAM 0x25 //快速编程指令
#define PAGE_ERASE 0x40 //页擦除指令(1页=512字节)
#define MASS_ERASE 0x41 //全擦除指令
/******用户定制参数(根据单片机型号和用户flash使用情况定制)**********/
#define EEPROM_START_ADDRESS 0xE000 //EEPROM区起始地址。512B的倍数
#define EEPROM_PAGE_NUM 8 //EEPROM页数。1page=256B
#define BUS_FREQUENCY 2000 //总线频率。单位(KHz)
/********************编译器相关参数**************************/
#define INT8U unsigned char //无符号字节变量。根据编译器更改。默认CodeWarrior 6.0
#define INT16U unsigned short int //无符号字变量。根据编译器更改。默认CodeWarrior 6.0
/***********EEPROM API函数原型***********/
//初始化程序。此函数必须在使用EEPROM前调用。建议用户在系统初始化是调用。
void INIT_EEPROM(void);
//EEPROM擦除函数。擦除所有EEPROM数据。
void EEPROM_ERASE(void);
//EEPROM字节写入函数。写入一个字节到EEPROM指定区域。
void EEPROM_WRITE_DATA(INT8U data,INT8U EEPROM_page,INT8U offset_address)
//EEPROM读出函数。读出一个指定的区域所保存的字节的到函数返回值。
char EEPROM_READ_DATA(INT8U EEPROM_page,INT8U offset_address);
/****************************END************************************/
/*****************************************************/
//河南工业大学Freescale MCU&DSP联合实验室
// 文件名:flash_program.c
// C P U :MC9S08AW60
// 版 本:v1.0
// 日 期:2008年8月12日
// 调试环境:CodeWarrior 6.0
// 作 者:曾 滔
// 描 述:提供了一个初始化函数和三个功能函数供用户调用,没有可更改参数。
/*****************************************************/
#include "flash_program.h"
const INT8U FLASH_CODE[]={ // ; flash操作代码
0x45, 0x18, 0x26, // LDHX #$1826 ; FCMD地址写入H:X
0xA6, 0x00, // LDA #$00 ; 0x00为命令占位符
0xF7, // STA ,X ; 将命令写入FCMD命令缓存器
0x5A, // DECX ; 指针指向 FSTAT
0xF6, // LDA ,X ;
0xAA, 0x80, // ORA #$80 ;
0xF7, // STA ,X ; 置位FSTAT_FCBEF。启动flash写入命令
0xF6, // LDA ,X ; 等待3个时钟周期(请勿删除此代码)
0xF6, // LDA ,X ; 读取FSTAT
0xA5, 0x30, // BIT #$30
0x26, 0x05, // BNE *+6 ; 错误则返回
//LOOP
0xF6, // LDA ,X ; 等待写操作结束
0xA5, 0x40, // BIT #$40
0x27, 0xFB, // BEQ *-3 ; 跳转到LOOP
//EXIT:
0X81 //RTS ; 返回
};
/*********************初始化函数**********************************/
#if BUS_FREQUENCY >= 12000
void INIT_EEPROM(void){FCDIV=(((BUS_FREQUENCY/(8*175)))|0x40)-1;}
#endif
#if BUS_FREQUENCY < 12000
void INIT_EEPROM(void){FCDIV=(BUS_FREQUENCY/175)-1;}
#endif
/***********************EEPROM字节写入函数****************************/
void EEPROM_WRITE_DATA(INT8U data,INT8U EEPROM_page,INT8U offset_address)
{
INT16U address; //存放写入地址
INT8U code_space[23]; //初始化代码空间
if(EEPROM_page>=EEPROM_PAGE_NUM)return; //地址错误返回,保护用户代码
address=offset_address+EEPROM_page*256+EEPROM_START_ADDRESS; //地址转化
(void)memcpy(code_space,FLASH_CODE,23); //复制flash操作代码到RAM
code_space[4] = BITE_PROGRAM; //修改命令占位符为写入命令
DisableInterrupts; //关中断
if (FSTAT&0x10){ //清错误标志
FSTAT = FSTAT|0x10;
}
_asm
{ //写入初始化
LDHX address;
LDA data;
STA ,X; //写入缓存
TSX;
JSR 2,x; //跳入RAM执行
}
EnableInterrupts; //开中断
__RESET_WATCHDOG();
}
/********************EEPROM字读取入函数********************************/
char EEPROM_READ_DATA(INT8U EEPROM_page,INT8U offset_address){
unsigned short int address; //地址变量
char rusult; //数据变量
address=offset_address+EEPROM_page*0x100+EEPROM_START_ADDRESS; //地址转换
asm{
LDHX address;
LDA ,X; //读取地址到数据变量
STA rusult;
}
__RESET_WATCHDOG();
return(rusult); //返回
}
/**********************EEPROM擦除函数********************************/
void EEPROM_ERASE(void)
{
INT16U address;
INT8U i; //循环变量
INT8U code_space[23];
for(i=0;i<(EEPROM_PAGE_NUM/2);i++){ //分页擦除
address=i*0x200+EEPROM_START_ADDRESS;
(void)memcpy(code_space,FLASH_CODE,23); //复制flash操作代码到RAM
code_space[4] = PAGE_ERASE; //修改命令占位符为擦除命令
DisableInterrupts; //关中断
if (FSTAT&0x10){ //清错误标志
FSTAT = FSTAT | 0x10;
}
_asm
{
LDHX address; //擦除地址写入缓存
STA ,X;
TSX;
JSR 3,x; //跳入RAM执行
}
EnableInterrupts; //开中断
__RESET_WATCHDOG();
}
}
/****************************END************************************/
/*****************************************************/
// 版权所有(c)河南工业大学
// 文件名:mian.c
// C P U :MC9S08AW60
// 版 本:v1.0
// 日 期:2008年8月12日
// 调试环境:CodeWarrior 6.0
// 作 者:曾 滔
// 描 述: 测试Flash模拟EEPROM程序。
/*****************************************************/
#include <hidef.h>
#include "derivative.h"
#include "flash_program.h"
void main(void){
char temp;
PTADD=0XFF;
INIT_EEPROM(); //初始化Flash控制寄存器。
do{
EEPROM_WRITE_DATA(88,0,0); //写入一个字节。
temp=EEPROM_READ_DATA(0,0); //读取一个字节
}while(temp!=88); //若写入失败则再次写入
PTAD_PTAD0=1;
do{
EEPROM_ERASE();
}while(EEPROM_READ_DATA(0,0)!=0xff); //擦除Flash
PTAD_PTAD1=1;
for(;;)__RESET_WATCHDOG(); //死循环
}