can总线初始化分析

can总线的初始化,是can总线程序的基础,也是难点,因为初始化需要完成各个寄存器的设置,这就需要对can协议的扎实掌握和对can术语的深刻理解。

can总线的初始化主要包括模式寄存器的设置,中断方式的设置,波特率的设置,还有错误警告,发送优先级模式寄存器的设置等。can总线的初始化程序如下所示:

void InitCAN(eCANNUM CanNum)

 HwEnCAN(CanNum); //硬件使螚can控制器,包括引脚初始化,外部。具体分析如下HwEnCAN函数。         
 SoftRstCAN(CanNum); //通过在can控制器的某位写入1,来达到软件复位的目的。具体分析如下SoftRstCAN函数。               
 CANEWL(CanNum).Bits.EWL_BIT = USE_EWL_CAN[CanNum];//设置错误警告寄存器,错误警告默认计数为96. 在CAN 操作过程中,该值与Tx 和Rx 错误计数器的计数器相比较,如果其中一个计数值与该值相等,CANSR 的错误状态(ES)位置位。ES为1时-错误状态:发送和接收错误计数器的计数值或其中一个的计数值已经达到出错警告界限寄存器中设置的阈值。        
 CANBTR(CanNum).Word = USE_BTR_CAN[CanNum];// 初始化波特率。        
 //初始化中断为非向量中断
 VICDefVectAddr =(UINT32)CANIntPrg;
 VICIntEnable |=(1<<19)|(1<<(20+ CanNum))|(1<<(26+ CanNum));//每个CAN 控制器可产生3 种中断请求:接收、发送和“其它状态”,这里

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值