嵌入式编程互联网科技程序员

can控制器编程

2017-10-23  本文已影响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 如果收到报文,从接收数据缓冲中读取数据;

上一篇 下一篇

猜你喜欢

热点阅读