159 lines
6.9 KiB
C
159 lines
6.9 KiB
C
|
/*******************************************************************************
|
||
|
* DISCLAIMER
|
||
|
* This software is supplied by Renesas Electronics Corporation and is only
|
||
|
* intended for use with Renesas products. No other uses are authorized. This
|
||
|
* software is owned by Renesas Electronics Corporation and is protected under
|
||
|
* all applicable laws, including copyright laws.
|
||
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||
|
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
|
||
|
* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
|
||
|
* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
|
||
|
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
|
||
|
* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
|
||
|
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
|
||
|
* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
|
||
|
* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||
|
* Renesas reserves the right, without notice, to make changes to this software
|
||
|
* and to discontinue the availability of this software. By using this software,
|
||
|
* you agree to the additional terms and conditions found by accessing the
|
||
|
* following link:
|
||
|
* http://www.renesas.com/disclaimer
|
||
|
*
|
||
|
* Copyright (C) 2013 Renesas Electronics Corporation. All rights reserved.
|
||
|
*******************************************************************************/
|
||
|
/*******************************************************************************
|
||
|
* File Name : r_rl78_can_drv.h
|
||
|
* Version : 1.0
|
||
|
* Description : This is header file for CAN driver code.
|
||
|
******************************************************************************/
|
||
|
/*****************************************************************************
|
||
|
* History : DD.MM.YYYY Version Description
|
||
|
* : 29.03.2013 1.00 First Release
|
||
|
******************************************************************************/
|
||
|
#ifndef R_RL78_CAN_DRV_H
|
||
|
#define R_RL78_CAN_DRV_H
|
||
|
|
||
|
typedef signed char CHAR;
|
||
|
typedef unsigned char UCHAR;
|
||
|
typedef signed short INT;
|
||
|
typedef unsigned short UINT;
|
||
|
|
||
|
typedef unsigned int Can_RtnType;
|
||
|
|
||
|
typedef UCHAR can_ch_t;
|
||
|
typedef UCHAR can_rxfifo_t;
|
||
|
typedef UCHAR can_trfifo_t;
|
||
|
typedef UCHAR can_txbuf_t;
|
||
|
|
||
|
/* ---- Channel ---- */
|
||
|
#define CAN_CH0 0U
|
||
|
|
||
|
/* ---- Rx FIFO ---- */
|
||
|
#define CAN_RXFIFO0 0U
|
||
|
#define CAN_RXFIFO1 1U
|
||
|
#define CAN_MAX_RXFIFO_NUM 2U
|
||
|
|
||
|
/* ---- Common (Tx/Rx) FIFO ---- */
|
||
|
#define CAN_TRFIFO0 0U
|
||
|
#define CAN_MAX_TRFIFO_NUM 1U
|
||
|
|
||
|
/* ---- Tx buffers ---- */
|
||
|
#define CAN_TXBUF0 0U
|
||
|
#define CAN_TXBUF1 1U
|
||
|
#define CAN_TXBUF2 2U
|
||
|
#define CAN_TXBUF3 3U
|
||
|
#define CAN_MAX_TXBUF_NUM 4U
|
||
|
|
||
|
/* ---- CAN frame ----- */
|
||
|
typedef struct
|
||
|
{
|
||
|
UINT IDL:16; /* ID Data (low) */
|
||
|
UINT IDH:13; /* ID Data (high) */
|
||
|
UINT THDSE :1; /* Transmit History Data Store Enable */
|
||
|
UINT RTR :1; /* RTR 0:Data 1:Remote */
|
||
|
UINT IDE :1; /* IDE 0:Standard 1:Extend */
|
||
|
UINT TS :16; /* Timestamp Data */
|
||
|
UINT LBL :12; /* Label Data */
|
||
|
UINT DLC :4; /* DLC Data */
|
||
|
UCHAR DB[8]; /* Data Byte */
|
||
|
} can_frame_t;
|
||
|
|
||
|
#if 0
|
||
|
//only for test
|
||
|
typedef struct _IoInput_
|
||
|
{
|
||
|
/*previous value,middle variable value , finally value of the switches,used for
|
||
|
cleaning up the botton's dithering*/
|
||
|
UINT unused : 1;
|
||
|
UINT swIn : 1; /* Read from I/O pin.*/
|
||
|
UINT in : 1; /* Used by program,related to inMode.*/
|
||
|
UINT preSwIn : 1; /* Previous value read from I/O pin.*/
|
||
|
|
||
|
UINT preVal : 1;
|
||
|
UINT curVal : 1;
|
||
|
UINT inMode : 2;
|
||
|
UINT shakeCnt : 4; /* Switch shaking counter */
|
||
|
UINT shakeNum : 4; /* Switvh shaking number */
|
||
|
} IoInput;
|
||
|
#endif
|
||
|
|
||
|
extern const UCHAR g_rxfifo0_use_mode;
|
||
|
extern const UCHAR g_rxfifo1_use_mode;
|
||
|
extern const UCHAR g_trfifo_use_mode;
|
||
|
extern const UCHAR g_fifo_lost_isr;
|
||
|
extern const UINT g_rxrule_table[][6];
|
||
|
|
||
|
/* ---- Configuration ---- */
|
||
|
#define CAN_NOUSE 0x00U
|
||
|
#define CAN_USE 0x80U
|
||
|
#define CAN_USE_RX_MODE 0x81U
|
||
|
#define CAN_USE_TX_MODE 0x82U
|
||
|
#define CAN_USE_CH_MASK 0x07U
|
||
|
|
||
|
/* ---- function return value ---- */
|
||
|
#define CAN_RTN_OK 0U
|
||
|
#define CAN_RTN_OK_WITH_LOST 1U
|
||
|
#define CAN_RTN_FIFO_FULL 2U
|
||
|
#define CAN_RTN_BUFFER_EMPTY 3U
|
||
|
#define CAN_RTN_MODE_WAIT 4U
|
||
|
#define CAN_RTN_RAM_INIT 5U
|
||
|
|
||
|
#define CAN_RTN_TRANSMITTING 0U
|
||
|
#define CAN_RTN_TX_ABORT_OVER 1U
|
||
|
#define CAN_RTN_TX_END 2U
|
||
|
#define CAN_RTN_TX_END_WITH_ABORT_REQ 3U
|
||
|
|
||
|
#define CAN_RTN_ERROR (0x8000U)
|
||
|
#define CAN_RTN_ARG_ERROR (CAN_RTN_ERROR + 0x7FFF)
|
||
|
#define CAN_RTN_STS_ERROR (CAN_RTN_ERROR + 0x7FFE)
|
||
|
#define CAN_RTN_OVERWRITE (CAN_RTN_ERROR + 0x7FFD)
|
||
|
#define CAN_RTN_MODE_ERROR (CAN_RTN_ERROR + 0x7FFC)
|
||
|
|
||
|
/******************************************************************************
|
||
|
Exported global functions (to be accessed by other files)
|
||
|
******************************************************************************/
|
||
|
extern Can_RtnType R_CAN_Init(void);
|
||
|
extern Can_RtnType R_CAN_GlobalStart(void);
|
||
|
extern Can_RtnType R_CAN_ChStart_CH0(void);
|
||
|
extern Can_RtnType R_CAN_TrmByTxBuf_CH0(can_txbuf_t, const can_frame_t *);
|
||
|
extern Can_RtnType R_CAN_AbortTrm_CH0(can_txbuf_t);
|
||
|
extern Can_RtnType R_CAN_CheckTxBufResult_CH0(can_txbuf_t);
|
||
|
extern Can_RtnType R_CAN_TrmByTRFIFO0_CH0(const can_frame_t *);
|
||
|
extern Can_RtnType R_CAN_ReadRxBuffer(UCHAR *, can_frame_t *);
|
||
|
extern Can_RtnType R_CAN_ReadRxFIFO(can_rxfifo_t, can_frame_t *);
|
||
|
extern Can_RtnType R_CAN_ReadTRFIFO0_CH0(can_frame_t *);
|
||
|
extern Can_RtnType R_CAN_ReadChStatus_CH0(void);
|
||
|
void enable_interrupt_request_mask(void);
|
||
|
|
||
|
#define R_CAN_ChStart(val1) (R_CAN_ChStart_CH0())
|
||
|
#define R_CAN_TrmByTxBuf(val1, val2, val3) (R_CAN_TrmByTxBuf_CH0(val2, val3))
|
||
|
#define R_CAN_AbortTrm(val1, val2) (R_CAN_AbortTrm_CH0(val2))
|
||
|
#define R_CAN_CheckTxBufResult(val1, val2) (R_CAN_CheckTxBufResult_CH0(val2))
|
||
|
#define R_CAN_TrmByTRFIFO(val1, val2, val3) (R_CAN_TrmByTRFIFO_CH0(val3))
|
||
|
#define R_CAN_ReadTRFIFO(val1, val2, val3) (R_CAN_ReadTRFIFO0_CH0(val3))
|
||
|
#define R_CAN_ReadChStatus(val1) (R_CAN_ReadChStatus_CH0())
|
||
|
|
||
|
extern void CanUserInit(void);
|
||
|
extern can_frame_t frame,frame1;
|
||
|
#endif /* R_RL78_CAN_DRV_H */
|