FULLCAN函数库.docx
- 文档编号:5097974
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:27
- 大小:23.26KB
FULLCAN函数库.docx
《FULLCAN函数库.docx》由会员分享,可在线阅读,更多相关《FULLCAN函数库.docx(27页珍藏版)》请在冰豆网上搜索。
FULLCAN函数库
/****************************************Copyright(c)**************************************************
**广州周立功单片机发展有限公司
**研究所
**产品一部
**
**-------------------------------------文件信息--------------------------------------------------------
**文件名:
CANREG.H
**创建人:
滕欣欣
**版本:
v1.0
**日期:
2004年2月23日
**描述:
CAN模块寄存器类型定义、地址定义头文件
********************************************************************************************************/
#ifndef_CANREG_H_
#define_CANREG_H_
/*
**********************************************************************************************************************
**验收滤波器RAM首地址
**********************************************************************************************************************
*/
#defineCANAFRAM_BADR0xE0038000
/*
**********************************************************************************************************************
**CAN寄存器基地址定义(这里只定义了CAN1模块的控制器寄存器的地址映射,CAN1,CAN2,CAN3,CAN4模块控制器寄存器基地址相差0x4000)
**********************************************************************************************************************
*/
#defineCANMOD_BADR0xE0044000//模式寄存器
#defineCANCMR_BADR0xE0044004//命令寄存器
#defineCANGSR_BADR0xE0044008//全局状态寄存器
#defineCANICR_BADR0xE004400C//中断及捕获寄存器(仲裁丢失、错误码捕获)
#defineCANIER_BADR0xE0044010//中断使能寄存器
#defineCANBTR_BADR0xE0044014//总线时序寄存器
#defineCANEWL_BADR0xE0044018//报警限制寄存器
#defineCANSR_BADR0xE004401C//状态寄存器
#defineCANRFS_BADR0xE0044020//接收帧信息寄存器(接受帧状态)
#defineCANRID_BADR0xE0044024//接收报文ID寄存器
#defineCANRDA_BADR0xE0044028//接收数据1~4字节
#defineCANRDB_BADR0xE004402C//接收数据5~8字节
#defineCANTFI1_BADR0xE0044030//CAN发送缓冲区1帧信息寄存器
#defineCANTID1_BADR0xE0044034//CAN发送缓冲区1报文ID寄存器
#defineCANTDA1_BADR0xE0044038//CAN发送缓冲区1发送数据1~4寄存器
#defineCANTDB1_BADR0xE004403C//CAN发送缓冲区1发送数据5~8寄存器
#defineCANTFI2_BADR0xE0044040//CAN发送缓冲区2帧信息寄存器
#defineCANTID2_BADR0xE0044044//CAN发送缓冲区2报文ID寄存器
#defineCANTDA2_BADR0xE0044048//CAN发送缓冲区2发送数据1~4寄存器
#defineCANTDB2_BADR0xE004404C//CAN发送缓冲区2发送数据5~8寄存器
#defineCANTFI3_BADR0xE0044050//CAN发送缓冲区3帧信息寄存器
#defineCANTID3_BADR0xE0044054//CAN发送缓冲区3报文ID寄存器
#defineCANTDA3_BADR0xE0044058//CAN发送缓冲区3发送数据1~4寄存器
#defineCANTDB3_BADR0xE004405C//CAN发送缓冲区3发送数据5~8寄存器
/*
**********************************************************************************************************************
**定义RxBUF的基地址
**********************************************************************************************************************
*/
#defineRxBUF_BADR0xE0044020
/*
**********************************************************************************************************************
**定义TxBUF的基地址
**********************************************************************************************************************
*/
#defineTxBUF1_BADR0xE0044030//CAN发送缓冲区1首地址
#defineTxBUF2_BADR0xE0044040//CAN发送缓冲区2首地址
#defineTxBUF3_BADR0xE0044050//CAN发送缓冲区3首地址
/*
**********************************************************************************************************************
**定义全局应用的寄存器
**********************************************************************************************************************
*/
#defineCANTxSR_GADR0xE0040000//发送状态寄存器
#defineCANRxSR_GADR0xE0040004//接收状态寄存器
#defineCANMSR_GADR0xE0040008//错误状态寄存器
#defineCANAFMR_GADR0xE003C000//验收滤波控制验收过滤器寄存器
#defineCANSFF_sa_GADR0xE003C004//标准帧表格
#defineCANSFF_GRP_sa_GADR0xE003C008//标准帧组表格标准帧组起始地址寄存器
#defineCANEFF_sa_GADR0xE003C00C//扩展帧表格
#defineCANEFF_GRP_sa_GADR0xE003C010//扩展帧组表格
#defineCANENDofTable_GADR0xE003C014//表格结束地址
#defineCANLUTerrAd_GADR0xE003C018//LUT错误地址地址寄存器
#defineCANLUTerr_GADR0xE003C01C//LUT错误寄存器
/*
**********************************************************************************************************************
**CAN控制器通道定义
**********************************************************************************************************************
*/
typedefenum_cannum_
{
#ifCAN_MAX_NUM==4//微处理器中含有4路CAN
CAN1=0,//CAN1模块
CAN2,//CAN2模块
CAN3,//CAN3模块
CAN4//CAN4模块
#elifCAN_MAX_NUM==2//微处理器中含有2路CAN
CAN1=0,//CAN1模块
CAN2//CAN2模块
#endif
}eCANNUM;
//#defineREGAFRAM(*((volatileINT32U*)0xE0038000))/*lpc2119\lpc2129\lpc2292\lpc2294only*/
/*
*********************************************************************************************************************
**定义CANMOD寄存器:
1.ThisregistercontrolsthebasicoperatingmodeoftheCANController.
2.Bitsnotlistedreadas0andshouldbewrittenas0.
*********************************************************************************************************************
*/
typedefunion_canmod_
{
INT32UWord;
struct{
INT32URM:
1;//定义RM位(复位位);RM=0时,CAN控制器正常工作,某些寄存器不能写入
INT32ULOM:
1;//定义LOM位(只听模式位)
INT32USTM:
1;//定义STM位"0"发送的信息必须被应答才被认可
//"1"自测试模式,CANCMR的SRR位一起使用,可以达到自发自收的效果
INT32UTPM:
1;//定义TPM位"0"--3个发送缓冲区的优先级由各自的CANID决定
//"1"--3个发送缓冲区的优先级由各自的Tx优先级域决定
INT32USM:
1;//定义SM位(睡眠模式位)
INT32URPM:
1;//定义RPM位"0"如果传输的是显性位,Rx和Tx脚为低电平
//"1"翻转极性模式--如果传输的是显性位,Rx脚为高电平
INT32URSV1:
1;//保留位
INT32UTM:
1;//定义TM位(测试模式)
INT32URSV24:
24;//保留位
}Bits;
}uCANMod,*P_uCANMod;
//定义模式寄存器宏,以方便访问该寄存器,由基地址、具体CAN模块通道号和CAN模块间地址偏移得到实际的物理地址
#defineCANMOD(CanNum)(*((volatileP_uCANMod)(CANMOD_BADR+CanNum*CAN_OFFSET_ADR)))
/*
**********************************************************************************************************************
**定义CANCMR寄存器:
1.Writingtothiswrite-onlyregisterinitiatesanaction.
2.Bitsnotlistedshouldbewrittenas0.Readingthisregisteryieldszeroes.
**********************************************************************************************************************
*/
typedefunion_cancmr_
{
INT32UWord;
struct
{
INT32UTR:
1;//定义TR位(发送请求)
INT32UAT:
1;//定义AT位(发送中止)
INT32URRB:
1;//定义RRB位(接收缓冲区释放)
INT32UCDO:
1;//清除数据溢出位
INT32USRR:
1;//定义SRR位(自接收请求)
INT32USTB1:
1;//定义SENDTxBUF1位(选择BUF1发送)
INT32USTB2:
1;//定义SENDTxBUF2位(选择BUF2发送)
INT32USTB3:
1;//定义SENDTxBUF3位(选择BUF3发送)
INT32URSV24:
24;//保留位
}Bits;
}uCANCMR,*P_uCANCMR;
//寄存器宏,以方便访问该寄存器,由基地址、具体CAN模块通道号和CAN模块间地址偏移得到实际的物理地址
#defineCANCMR(CanNum)(*((volatileP_uCANCMR)(CANCMR_BADR+CanNum*CAN_OFFSET_ADR)))
/*
************************************************************************************************************************
**定义CANGSR寄存器:
全局状态寄存器
1.Thisregisterisread-only,exceptthattheErrorCounterscanbewrittenwhentheRMbitintheCANMODregisteris1.
2.Bitsnotlistedreadas0andshouldbewrittenas0.
************************************************************************************************************************
*/
typedefunion_cangsr_
{
INT32UWord;//字操作定义
struct
{
INT32URBS:
1;//接收缓冲区状态位
INT32UDOS:
1;//数据溢出状态位
INT32UTBS:
1;//发送缓冲区状态锁定位
INT32UTCS:
1;//发送完成状态位
INT32URS:
1;//正在接收状态
INT32UTS:
1;//正在发送状态
INT32UES:
1;//错误状态
INT32UBS:
1;//总线关闭
INT32URSV8:
8;//保留位
INT32URXERR:
8;//接收错误计数
INT32UTXERR:
8;//发送错误计数
}Bits;
}uCANGSR,*P_uCANGSR;
//寄存器宏,以方便访问该寄存器,由基地址、具体CAN模块通道号和CAN模块间地址偏移得到实际的物理地址
#defineCANGSR(CanNum)(*((volatileP_uCANGSR)(CANGSR_BADR+CanNum*CAN_OFFSET_ADR)))
/*
**********************************************************************************************************************
**定义CANICR寄存器:
CAN中断和捕获寄存器
1.BitsinthisregisterindicateinformationabouteventsontheCANbus.Thisregisterisread-only.
2.Bitsnotlistedreadas0andshouldbewrittenas0.
3.Theclearingofbits1-9andthereleasingofbits16-23and24-31alloccuronanyreadfromCANICR,
regardlessofwhetherpartoralloftheregisterisread.ThismeansthatsoftwareshouldalwaysreadCANICRasaword,
andandprocessanddealwithallbitsoftheregisterasappropriatefortheapplication.
**********************************************************************************************************************
*/
typedefunion_canicr_
{
INT32UWord;//字操作定义
struct
{
INT32URI:
1;//接收中断位
INT32UTI1:
1;//TxBUF1发送成功中断位
INT32UEI:
1;//错误报警中断位
INT32UDOI:
1;//数据溢出中断位
INT32UWUI:
1;//睡眠唤醒中断位
INT32UEPI:
1;//错误认可中断位
INT32UALI:
1;//仲裁错误中断位
INT32UBEI:
1;//总线错误中断
INT32UIDI:
1;//接收到CAN标识符中断位
INT32UTI2:
1;//TxBUF2发送成功中断位
INT32UTI3:
1;//TxBUF3发送成功中断位
INT32URSV5:
5;//保留位
INT32UERRBIT:
5;//错误代码捕获
INT32UERRDIR:
1;//错误方向
INT32UERRC:
2;//错误类型
INT32UALCBIT:
5;//仲裁错误代码捕获
INT32URSV3:
3;//保留
}Bits;
}uCANICR,*P_uCANICR;
//寄存器宏,以方便访问该寄存器,由基地址、具体CAN模块通道号和CAN模块间地址偏移得到实际的物理地址
#defineCANICR(CanNum)(*((volatileP_uCANICR)(CANICR_BADR+CanNum*CAN_OFFSET_ADR)))
/*
**********************************************************************************************************************
**定义CANIER寄存器:
CAN中断使能寄存器
1.Thisread/writeregistercontrolswhethervariouseventsontheCANcontrollerwillresultinaninterrupt.
2.Bits7:
0inthisregistercorrespond1-to-1withbits7:
0intheCANICRregister.
**********************************************************************************************************************
*/
typedefunion_canier_
{
INT32UWord;//字操作定义
struct
{
INT32URIE:
1;//接收中断使能位
INT32UTIE1:
1;//TxBUF1发送完成中断使能位
INT32UEIE:
1;//错误报警中断使能位
INT32UDOIE:
1;//数据溢出中断使能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FULLCAN 函数库