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

📄 can_con.c

📁 freescale最新的16位单片机
💻 C
字号:
/******************************************************************************
*
* Freescale Semiconductor Inc. 2006 All rights reserved
*
*******************************************************************************
*
* THIS SOFTWARE IS PROVIDED BY FREESCALE SEMICONDUCTOR "AS IS" AND ANY         
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED  
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE       
* DISCLAIMED.  IN NO EVENT SHALL FREESCALE SEMICONDUCTOR OR ITS CONTRIBUTORS   
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR       
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF         
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS     
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN      
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)      
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE   
* POSSIBILITY OF SUCH DAMAGE. 
*
***************************************************************************//*!
* 
* @file      can_con.c
*
* @author    R89994
* 
* @version   1.0.6.0
* 
* @date      Jul-28-2006
*
* @brief     This file contains routines for CAN connectivity 
*            initialization and messages processing.
* 
* @note      Compiler CodeWarrior HCS12X V4.1
*
******************************************************************************/

/******************************************************************************
* INCLUDE
******************************************************************************/

#include "can_con.h"	   	/* CAN connectivity header file including
                             MSCAN module base address */
#include "main.h"         /* SBC macro definition */
#include "stdtypes.h"                             
#include "spi.h"          /* CAN phy. inter. slave select pin declaration */                   
#include "msCANdrv.h"		  /* msCAN module */

/******************************************************************************
* VARIABLES DEFINITION
******************************************************************************/

static unsigned char tmp2;
const CAN_MB_DATA canTxData, *pCANTxData;

/// Load CAN message data field
const CAN_MB_DATA canTxData = {	  
    (unsigned char)4,	          // Data field lenght				       
    (unsigned char)0x10,          // First data byte                            
    (unsigned char)0x20,		  // Second data byte	   
    (unsigned char)0x30,		  // Third data byte
    (unsigned char)0x40,		  // Last data byte
};

/***************************************************************************//*!
*
* @brief   This function initializes the msCAN module 
*          message buffers and SBC MC33889.
*
* @return  Nothing
*
* @remarks Initialization values are defined in msCANdrv.h 
*
******************************************************************************/

void CAN_Module_Init(void)
{
	/* Init MC33889. SBC enters Normal mode, after Watchdog was triggered.
	   Watchdog is initialized as 350ms timeout */
    CSB_U201 = 0;
    tmp2 = ReadWriteSPI8bit(U201_TIM, U201_WRITE, U201_350MS);                       
	CSB_U201 = 1;
	
	/* Generate delay (70us at least) to ensure, that MC33889 enters 
	Normal mode after Watchdog was triggered */
  Delay100Us();
	
	/* Configure SBC MC33889 CAN cell to Rx/Tx (operate as MC33388) */
	CSB_U201 = 0;
	tmp2 = ReadWriteSPI8bit(U201_CAN, U201_WRITE, U201_CAN_STANDARD);				                     
	CSB_U201 = 1;
	
	/* MC33889 CAN cell failure report enable */
	CSB_U201 = 0;
	tmp2 = ReadWriteSPI8bit(U201_INTR, U201_WRITE, U201_CANF_ENB);
	CSB_U201 = 1;
	
	/* CAN init & configuration */
	tmp2 = CAN_Init(FAST, 0);
													   
    /* Configure MB 1 to transmit message with ID = 0x081 */
	tmp2 = CAN_ConfigMB(1, TXDF, 1, 0);
	
	/* Load data pointer with structure first byte address */
	pCANTxData = &canTxData;
	
	/* Load lenght of message data field and data for MB 1 */
	tmp2 = CAN_LoadMB(1, (unsigned char*)pCANTxData, 0);
}

/***************************************************************************//*!
*
* @brief   This module sends frame with identifier 0x081.
*
* @return  Nothing
*
* @remarks The 0x081 message processing takes cca. 610us on the CAN bus 
*          with 125kBd transmition speed.  
*
******************************************************************************/

void CAN_Send_Frame(void)
{
	/* Transmit MB 1 */
	tmp2 = CAN_TransmitMB(1, 0);
}

⌨️ 快捷键说明

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