📄 can_con.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 + -