📄 lin_slave.h
字号:
/****************************************************************/
/* 项目名称 : R8C/23 CAN/LIN Demo Board */
/* : 样例程序4 */
/* : LIN从机 */
/* 硬件环境 : R0K521237C000BB */
/* MCU型号 : R5F21237JFP */
/* C编译器 : NC30WA,版本5.30.r02及以上 */
/* 文件名 : lin_slave.h */
/* 版本 : 1.0 */
/* 作者 : wangsy */
/* 修订历史 : */
/* 修订者 时间 版本 说明 */
/* wangsy 2006/9/11 1.0 初版发行 */
/* */
/****************************************************************/
/* Copyright, 2006 RENESAS TECHNOLOGY CORPORATION & */
/* RENESAS SOLUTIONS CORPORATION */
/****************************************************************/
#ifndef _LIN_SLAVE_H_
#define _LIN_SLAVE_H_
/* lin_status */
#define lin_SLEEP 0 // 休眠态
#define lin_IDLE 1 // IDLE状态
#define lin_RUN 2 // 运行态
#define lin_ERROR 3 // 错误态
/* lin command */
#define CMD_NO_COMMAND 0 // 无命令
#define CMD_SLEEP 1 // 休眠命令
#define CMD_IDLE 2 // IDLE命令
#define CMD_RUN 3 // 运行命令
#define CMD_ERROR 4 // 错误命令
//error_code
#define NO_ERROR 0x10 // 无错误
#define UART_OVERRUN_ERROR 0x11 // uart过载错误
#define UART_PARITY_ERROR 0x12 // uart奇偶校验错误
#define UART_FRAMING_ERROR 0x13 // uart传输错误
#define LINRX_CHECKSUM_ERROR 0x14 // 校验和错误
#define PID_PARITY_ERROR 0x15 // PID奇偶校验错误
#define SHORT_MESSAGE_ERROR 0x16 // 消息不全错误
#define SYNCBREAK_ERROR 0x17 // break错误
//sleep_status
#define SLEEP_DUMMY 0 // 休眠默认态
#define SLEEP_WAKEUP 1 // 休眠唤醒态
//idle_status
#define IDLE_DUMMY 0 // 其他方式进入IDLE
#define IDLE_WAKEUP 1 // 由唤醒进入IDLE态
//run_status
#define RUN_RCV_BREAK 0 // 接收break
#define RUN_RCV_SYNC 1 // 接收同步段
#define RUN_RX_PID 2 // 接收PID
#define RUN_TX_DATA 3 // 发送数据
#define RUN_RX_DATA 4 // 接收数据
#define RUN_TX_CHECKSUM 5 // 发送校验和
#define INIT_UART0_BITRATE 130 // 9600bit/s
#define TRAPRE_BREAKTEST 256U // timerRA预装入数
#define TRA_BREAKTEST 90U
#define TIMERRB_INT_PRIORITY 3 // timerRB中断优先级
typedef union
{
struct
{
uchar8 ID0:1; //cmd0
uchar8 ID1:1; //cmd1
uchar8 ID2:1; //cmd2
uchar8 ID3:1; //cmd3
uchar8 ID4:1; //dlc0
uchar8 ID5:1; //dlc1
uchar8 P0:1; //parity0
uchar8 P1:1; //parity1
} bit;
struct
{
uchar8 cmd:4;
uchar8 dlc:2;
uchar8 parity:2;
} pid_str;
struct
{
uchar8 frame_id:6;
uchar8 id_parity:2;
} frame_id_and_parity;
uchar8 byte;
} pid_def; // 受保护ID(帧ID + 2bit奇偶校验位)
typedef struct
{
uchar8 slot_id; // 消息ID,对应于帧ID
uchar8 data[8]; // 数据
} lin_slave_slot_def;
typedef struct
{
uchar8 data[8]; // 数据
uchar8 checksum; // 校验和
} lin_slave_buffer_def;
/*-----------------函数声明-----------------*/
void timerRA_rcv_break_config(void); // timerRA接收break初始化
void lin_sts_convert(uchar8 lin_in_event); // LIN状态转换函数
/*-----------------外部引用变量声明-----------------*/
extern uchar8 lin_cmd; // lin 命令
extern uchar8 lin_sts; // lin 状态
extern uchar8 linM[5][4]; // 命令状态转换table
extern lin_slave_slot_def lin_slave_slot[3];
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -