⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flexcan_test.c

📁 COLDFIRE 5282SC的文件
💻 C
字号:
/*
 * File:		flexcan_test.c
 * Purpose:		Test the FlexCan on the M5282EVB
 *
 * Notes:		The FlexCan test
 *  
 */
 
#include "src/init/m5282evb.h"
#include "src/init/stdlib.h"
#include "src/fat/fat.h"

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

uint32 i;

/********************************************************************/
void
flexcan_test(void)
{	
	
	RESULTS |= CAN_TEST;
	
	
	/* 
	 * Initialize Port AS PAR to have Can TX/RX signals enabled 
	 */
	MCF5282_GPIO_PASPAR = 0x0FF0;
	
	/*
	 * Initialize all operating modes
	 */
	MCF5282_FLEXCAN_CANMCR = (0
		| MCF5282_FLEXCAN_CANMCR_FRZ
		| MCF5282_FLEXCAN_CANMCR_HALT
		| MCF5282_FLEXCAN_CANMCR_SELFWAKE);
	MCF5282_FLEXCAN_CANCTRL0 = (0
		| MCF5282_FLEXCAN_CANCTRL0_RXMODE);
	MCF5282_FLEXCAN_CANCTRL1 = (1
		| MCF5282_FLEXCAN_CANCTRL1_LOM);
	
	/*
	 * Set S-clock rate to 500Khz 
	 */	
	MCF5282_FLEXCAN_PRESDIV = 0x83;
	
	/*
	 * Initialize Message Buffers 
	 */
	MCF5282_FLEXCAN_MBUF0_CTRL = 0x0088;
	MCF5282_FLEXCAN_MBUF1_CTRL = 0x0000;
	MCF5282_FLEXCAN_MBUF2_CTRL = 0x0088;
	MCF5282_FLEXCAN_MBUF3_CTRL = 0x0088;
	MCF5282_FLEXCAN_MBUF4_CTRL = 0x0088;
	MCF5282_FLEXCAN_MBUF5_CTRL = 0x0088;
	MCF5282_FLEXCAN_MBUF6_CTRL = 0x0088;
	MCF5282_FLEXCAN_MBUF7_CTRL = 0x0088;
	MCF5282_FLEXCAN_MBUF8_CTRL = 0x0088;
	MCF5282_FLEXCAN_MBUF9_CTRL = 0x0000;
	MCF5282_FLEXCAN_MBUF10_CTRL = 0x0000;
	MCF5282_FLEXCAN_MBUF11_CTRL = 0x0000;
	MCF5282_FLEXCAN_MBUF12_CTRL = 0x0000;
	MCF5282_FLEXCAN_MBUF13_CTRL = 0x0000;
	MCF5282_FLEXCAN_MBUF14_CTRL = 0x0000;
	MCF5282_FLEXCAN_MBUF15_CTRL = 0x0000;

	/* 
	 * Initialize Receive Mask Register 
	 */
	MCF5282_FLEXCAN_RXGMASK = 0xFFE00000; 
	
	/*
	 * Synchronize FlexCan with CAN bus
	 */
	MCF5282_FLEXCAN_CANMCR = (0
	    | MCF5282_FLEXCAN_CANMCR_FRZ
		| MCF5282_FLEXCAN_CANMCR_SELFWAKE);

	/* 
	 * Transmit data in Message Buffer0 
	 */
	MCF5282_FLEXCAN_MBUF0_CTRL = 0xC8;
	
	for (i = 0; i < 3000; i++) {};
	
	/* 
	 * Test for correct error conditions 
	 */
	if ((MCF5282_FLEXCAN_ESTAT != 0x0512) && (MCF5282_FLEXCAN_RXECTR != 0x87))
	{
		RESULTS |= CAN_FAIL;
	}		
}
/********************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -