首頁 > 評測 > 專注汽車電子應用——TRK-USB-MPC5604B評測

專注汽車電子應用——TRK-USB-MPC5604B評測

  • 作者:劉昆磊
  • 來源:21ic
  • [導讀]
  • 說到汽車電子,人們都會想到恩智浦(NXP)和飛思卡爾(Freescale),而去年恩智浦將飛思卡爾收購,組建了一個龐大的汽車電子供應商,提供了從車載聯(lián)網(wǎng)、照明、媒體、電源以及門禁防盜等廣泛的產(chǎn)品和解決方案。今天21 IC給大家?guī)砹薔XP的用于評估MPC5604B微控制器的StarterTrak USB套件——TRK-USB-MPC5604B。

完整測試代碼如下:

#include "MPC5604B.h"

void initModesAndClock(void) {

ME.MER.R = 0x0000001D; /* Enable DRUN, RUN0, SAFE, RESET modes */

/* Initialize PLL before turning it on: */

/* Use 1 of the next 2 lines depending on crystal frequency: */

CGM.FMPLL_CR.R = 0x02400100; /* 8 MHz xtal: Set PLL0 to 64 MHz */

/*CGM.FMPLL_CR.R = 0x12400100;*/ /* 40 MHz xtal: Set PLL0 to 64 MHz */

ME.RUN[0].R = 0x001F0074; /* RUN0 cfg: 16MHzIRCON,OSC0ON,PLL0ON,syclk=PLL0 */

ME.RUNPC[1].R = 0x00000010; /* Peri. Cfg. 1 settings: only run in RUN0 mode */

ME.PCTL[68].R = 0x01; /* MPC56xxB/S: select ME.RUNPC[1] */

/* Mode Transition to enter RUN0 mode: */

ME.MCTL.R = 0x40005AF0; /* Enter RUN0 Mode & Key */

ME.MCTL.R = 0x4000A50F; /* Enter RUN0 Mode & Inverted Key */

while (ME.GS.B.S_MTRANS) {} /* Wait for mode transition to complete */

/* Notes: */

/* 1. I_TC IRQ could be used here instead of polling */

/* to allow software to complete other init. */

/* 2. A timer could be used to prevent waiting forever.*/

while(ME.GS.B.S_CURRENTMODE != 4) {} /* Verify RUN0 is the current mode */

/* Note: This verification ensures a SAFE mode */

/* tranistion did not occur. SW could instead */

/* enable the safe mode tranision interupt */

}

void disableWatchdog(void) {

SWT.SR.R = 0x0000c520; /* Write keys to clear soft lock bit */

SWT.SR.R = 0x0000d928;

SWT.CR.R = 0x8000010A; /* Clear watchdog enable (WEN) */

}

void initLedGpio(void) {

SIU.PCR[68].R = 0x0220;

SIU.PCR[69].R = 0x0220;

SIU.PCR[70].R = 0x0220;

SIU.PCR[71].R = 0x0220;

SIU.GPDO[68].B.PDO = 1;

SIU.GPDO[69].B.PDO = 1;

SIU.GPDO[70].B.PDO = 1;

SIU.GPDO[71].B.PDO = 1;

}

void delay(void) {

vuint32_t i;

for (i = 0; i < 800000; i++) {}

}

int main(void) {

volatile int i = 0;

initModesAndClock(); /* Initialize mode entries and system clock */

disableWatchdog(); /* Disable watchdog */

initLedGpio();

/* Loop forever */

for (;;) {

SIU.GPDO[68].B.PDO = 0;

SIU.GPDO[69].B.PDO = 0;

SIU.GPDO[70].B.PDO = 0;

SIU.GPDO[71].B.PDO = 0;

delay();

SIU.GPDO[68].B.PDO = 1;

SIU.GPDO[69].B.PDO = 1;

SIU.GPDO[70].B.PDO = 1;

SIU.GPDO[71].B.PDO = 1;

delay();

}

}

接下來點擊調(diào)試按鈕,可以將程序裝載到RAM或FLASH中運行,這里選擇RAM。之后彈出了提示要求更新仿真調(diào)試器的固件?磥碇拔覀冊诠倬W(wǎng)上下載了最新固件并不是最新的,在CW10.6軟件中還有更新的固件。(可能是由于PE被恩智浦(即之前的飛思卡爾)收購后,只在CW10.6中更新了固件,并沒有在PE網(wǎng)站上進行更新),按照提示更新固件,就可以在CW10.6上面使用OSBDM仿真調(diào)試器了。注意,不更新是無法在新版本的CW10.6上面使用TRK-USB-MPC5604B開發(fā)板的!

30.png

圖30 CW10.6要求更新開發(fā)板固件

在調(diào)試界面點擊運行,即可運行查看效果,可以看出實現(xiàn)預期要求。

31.png

圖31 CW10.6調(diào)試界面

32.jpg

圖32 測試運行效果

整個開發(fā)過程基本還算順利。在使用TRK-USB-MPC5604B開發(fā)板的過程中,個人感覺基于Power Architecture®架構(gòu)的MCU芯片使用有許多與其它系列MCU(比如ARM)有較大差異,資源相對比較少,因此入門有些門檻,當然,這樣更需要一塊合適的入門級開發(fā)板,F(xiàn)在恩智浦也推出了基于ARM架構(gòu)的Kinetis系列MCU,其中KEA系列同樣是面向汽車及的微控制器。

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論