📄 custom.h
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
** http://www.zlgmcu.com
**-----------------------------------------------------------文件信息--------------------------------------------------------------------------------
** 文 件 名: CUSTOM.H
** 版 本: v1.0
** 日 期: 2004年3月2日
** 描 述: 用户特殊选项配置头文件
********************************************************************************************************/
#ifndef _CUSTOM_H_
#define _CUSTOM_H_
/*
CAN的波特率设定相关概念:
1.标称位速率:标称位速率为一理想的发送器在没有重新同步的情况下每秒发送的位数量。
2. 标称位时间:标称位时间=1/标称位速率
CAN标称位时间定义比较灵活,这里给出一个简单的原则:
定义:
CAN时钟: Tscl=(BRP+1)/Fvpb
则: Tseg1=(TSEG1+1)*Tscl Tseg2=(TSEG2+1)*Tscl Tsjw=(SJW+1)*Tscl
应满足: Tseg2>=2Tscl Tseg2>=Tsjw Tseg1>=Tseg2
CANBTR设置实例:假设VPB时钟为24MHz,需设置CAN标称位速率为100k
可设置CANBTR为:0x001C000E 也即: BRP=14;SJW=0;TSEG1=12;TSEG2=1;
从而CAN位速率可以由下式计算得到:CANbps=Fvpb/(TSEG1+TSEG2+3)(BRP+1)
其中:CANbps为CAN位速率;Fvpb为VPB频率
如上式所示:当Fvpb=24MHz时,CANbps=100kbits/s
MaxCANbps=Fvpb/(TSEG1+TSEG2+3-(SJW+1))(BRP+1)=106kbits/s
MinCANbps=Fvpb/(TSEG1+TSEG2+3+(SJW+1))(BRP+1)=94kbits/s
*/
#define BPS_100K 0x001C000E //刘宝贵计算的CAN的波特率100Kbps时总线时序器的值
#define BPS_50K 0x001C001D //刘宝贵计算的CAN的波特率50Kbps时总线时序器的值
//全局应用定义
#define REALCAN 2 //定义本系统中使用CAN的个数
#define CAN_MAX_NUM 4 //微处理器所含有的最大CAN模块的数目
#define CAN_OFFSET_ADR 0x4000 //CAN各模块寄存器之间的线性差异
#define USE_CAN_RCV_BUF_SIZE 0x20 //驱动程序使用的接收环形缓冲区的大小
//各路CAN独立应用定义
#define USE_MODE_CAN1 0x00 //CAN模块1的工作模式定义
#define USE_MODE_CAN2 0x00 // CAN模块2的工作模式定义
#define USE_MODE_CAN3 0x00 // CAN模块3的工作模式定义
#define USE_MODE_CAN4 0x00 // CAN模块4的工作模式定义
#define USE_EWL_CAN1 0x60 // CAN模块1的错误报警界限值
#define USE_EWL_CAN2 0x60 // CAN模块2的错误报警界限值
#define USE_EWL_CAN3 0x60 // CAN模块3的错误报警界限值
#define USE_EWL_CAN4 0x60 // CAN模块4的错误报警界限值
#define USE_INT_CAN1 0x7FF //CAN模块1的中断使能方式
#define USE_INT_CAN2 0x7FF // CAN模块2的中断使能方式
#define USE_INT_CAN3 0x7FF // CAN模块3的中断使能方式
#define USE_INT_CAN4 0x7FF // CAN模块4的中断使能方式
#define USE_TPM_CAN1 0x01 // CAN模块1的发送优先级模式
#define USE_TPM_CAN2 0x01 // CAN模块2的发送优先级模式
#define USE_TPM_CAN3 0x01 // CAN模块3的发送优先级模式
#define USE_TPM_CAN4 0x01 // CAN模块4的发送优先级模式
//#define USE_BTR_CAN1 BPS_250K // CAN模块1的总线波特率
//#define USE_BTR_CAN2 BPS_250K // CAN模块2的总线波特率
//#define USE_BTR_CAN3 BPS_250K // CAN模块3的总线波特率
//#define USE_BTR_CAN4 BPS_250K // CAN模块4的总线波特率
#define USE_BTR_CAN1 BPS_50K // CAN模块1的总线波特率
#define USE_BTR_CAN2 BPS_50K // CAN模块2的总线波特率
#define USE_BTR_CAN3 BPS_50K // CAN模块3的总线波特率
#define USE_BTR_CAN4 BPS_50K // CAN模块4的总线波特率
#endif
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -