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(); //死循環
}