can控制器编程

作者: 罗蓁蓁 | 来源:发表于2017-10-23 12:53 被阅读3次

    can控制器初始化:

    1 控制器为复位模式: 模式寄存器(0x00)设为1;

    reg_write8(CAN0_MOD,0x01);    //模式寄存器:复位模式

    2 设置时钟分频器:设为0x08;

    reg_write8(CAN0_CDR,0x08); //时钟分频寄存器:设置外部CLKOUT信号输出关

    3 OCR输出控制器:设为0;

    4 设置接收码过滤器寄存器;

    接收码过滤器ACR

    5 设置接收屏蔽寄存器;

    接收码屏蔽器AMR,和ACR配合使用,和ACR对应的位为0时,输入的数据对应位和ACR对应位要匹配,如果和ACR对应位为1时,忽略。

    举个例子

    6 CAN波特率配置;

    TBit = Tseg1+Tseg2+Tsync=(Tseg1+Tseg2+3)*Tscl

    Tseg1 = tscl*(8*TSEG1.3 + 4*TSEG1.2 +2*TSEG1.1 + TSEG1.0 + 1)

    Tseg2 = tscl*(4*TSEG2.2 +2*TSEG2.1 + TSEG2.0 + 1)

    CAN波特率=APB总线频率/BRP分频器/(1+tBS1+tBS2)。

    7 中断使能寄存器关闭所有中断;

    8 配置错误警告寄存器

    9 接收报文寄存器清零;

    10 接收缓冲起始地址清零;

    11 控制器设置正常模式:模式寄存器设为0x8;

    发送报文:

    1 发送中断使能(可选);

    2 帧标识符赋值;

    3 将发送数据写入发送数据缓冲;

    4 发送报文:命令寄存器设为1;

    接收报文:

    1 接收中断使能;

    2 中断处理程序中查询中断状态寄存器,查看是否有接收到报文;

    3 如果收到报文,从接收数据缓冲中读取数据;

    相关文章

      网友评论

        本文标题:can控制器编程

        本文链接:https://www.haomeiwen.com/subject/ftavuxtx.html