FULLCAN函数库Word格式.docx
- 文档编号:18061140
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:27
- 大小:23.26KB
FULLCAN函数库Word格式.docx
《FULLCAN函数库Word格式.docx》由会员分享,可在线阅读,更多相关《FULLCAN函数库Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
#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
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:
//定义LOM位(只听模式位)
INT32USTM:
//定义STM位"
0"
发送的信息必须被应答才被认可
//"
1"
自测试模式,CANCMR的SRR位一起使用,可以达到自发自收的效果
INT32UTPM:
//定义TPM位"
--3个发送缓冲区的优先级由各自的CANID决定
--3个发送缓冲区的优先级由各自的Tx优先级域决定
INT32USM:
//定义SM位(睡眠模式位)
INT32URPM:
//定义RPM位"
如果传输的是显性位,Rx和Tx脚为低电平
翻转极性模式--如果传输的是显性位,Rx脚为高电平
INT32URSV1:
//保留位
INT32UTM:
//定义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_
struct
{
INT32UTR:
//定义TR位(发送请求)
INT32UAT:
//定义AT位(发送中止)
INT32URRB:
//定义RRB位(接收缓冲区释放)
INT32UCDO:
//清除数据溢出位
INT32USRR:
//定义SRR位(自接收请求)
INT32USTB1:
//定义SENDTxBUF1位(选择BUF1发送)
INT32USTB2:
//定义SENDTxBUF2位(选择BUF2发送)
INT32USTB3:
//定义SENDTxBUF3位(选择BUF3发送)
}uCANCMR,*P_uCANCMR;
//寄存器宏,以方便访问该寄存器,由基地址、具体CAN模块通道号和CAN模块间地址偏移得到实际的物理地址
#defineCANCMR(CanNum)(*((volatileP_uCANCMR)(CANCMR_BADR+CanNum*CAN_OFFSET_ADR)))
************************************************************************************************************************
**定义CANGSR寄存器:
全局状态寄存器
1.Thisregisterisread-only,exceptthattheErrorCounterscanbewrittenwhentheRMbitintheCANMODregisteris1.
typedefunion_cangsr_
//字操作定义
INT32URBS:
//接收缓冲区状态位
INT32UDOS:
//数据溢出状态位
INT32UTBS:
//发送缓冲区状态锁定位
INT32UTCS:
//发送完成状态位
INT32URS:
//正在接收状态
INT32UTS:
//正在发送状态
INT32UES:
//错误状态
INT32UBS:
//总线关闭
INT32URSV8:
8;
INT32URXERR:
//接收错误计数
INT32UTXERR:
//发送错误计数
}uCANGSR,*P_uCANGSR;
#defineCANGSR(CanNum)(*((volatileP_uCANGSR)(CANGSR_BADR+CanNum*CAN_OFFSET_ADR)))
**定义CANICR寄存器:
CAN中断和捕获寄存器
1.BitsinthisregisterindicateinformationabouteventsontheCANbus.Thisregisterisread-only.
3.Theclearingofbits1-9andthereleasingofbits16-23and24-31alloccuronanyreadfromCANICR,
regardlessofwhetherpartoralloftheregisterisread.ThismeansthatsoftwareshouldalwaysreadCANICRasaword,
andandprocessanddealwithallbitsoftheregisterasappropriatefortheapplication.
typedefunion_canicr_
INT32URI:
//接收中断位
INT32UTI1:
//TxBUF1发送成功中断位
INT32UEI:
//错误报警中断位
INT32UDOI:
//数据溢出中断位
INT32UWUI:
//睡眠唤醒中断位
INT32UEPI:
//错误认可中断位
INT32UALI:
//仲裁错误中断位
INT32UBEI:
//总线错误中断
INT32UIDI:
//接收到CAN标识符中断位
INT32UTI2:
//TxBUF2发送成功中断位
INT32UTI3:
//TxBUF3发送成功中断位
INT32URSV5:
5;
INT32UERRBIT:
//错误代码捕获
INT32UERRDIR:
//错误方向
INT32UERRC:
2;
//错误类型
INT32UALCBIT:
//仲裁错误代码捕获
INT32URSV3:
3;
//保留
}uCANICR,*P_uCANICR;
#defineCANICR(CanNum)(*((volatileP_uCANICR)(CANICR_BADR+CanNum*CAN_OFFSET_ADR)))
**定义CANIER寄存器:
CAN中断使能寄存器
1.Thisread/writeregistercontrolswhethervariouseventsontheCANcontrollerwillresultinaninterrupt.
2.Bits7:
0inthisregistercorrespond1-to-1withbits7:
0intheCANICRregister.
typedefunion_canier_
//字操作定义
INT32URIE:
//接收中断使能位
INT32UTIE1:
//TxBUF1发送完成中断使能位
INT32UEIE:
//错误报警中断使能位
INT32UDOIE:
//数据溢出中断使能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FULLCAN 函数库