ArCanSetBitTimingRegisters()

<< 点击显示目录 >>

主页  贝加莱CAN通讯使用例程说明 > 通过编程实现CAN通讯 > 功能块与函数说明 > ArCan >

ArCanSetBitTimingRegisters()

设置CAN设备中的位定时寄存器。

 

因为它是异步处理的,这个功能块必须被调用,直到 "Busy "等于FALSE。

这个功能块只能  在某些情况下被用于冗余!

适用的限制将在以下章节中描述。

 

配置改变

异步执行

 

关于冗余的更多信息,请看 冗余部分 。

 

输入参数 Register0 和 Register1 是CAN定时配置寄存器,其使用方式与系统频率为8MHz的Intel 82527的配置寄存器相同。

 

clip0055

输入/输出

参数

数据类型

描述

IN

Execute

BOOL

功能块的执行在该输入的上升沿开始。

IN

DeviceName

STRING[127]

CAN接口的名称,例如:SS1.IF1

IN

Register0

BYTE

位定时寄存器0

IN

Register1

BYTE

位定时寄存器1

OUT

Done

BOOL

执行成功。该功能块已经完成。

OUT

Busy

BOOL

该功能块处于活动状态,必须继续被调用。

OUT

Error

BOOL

在执行功能块时发生错误。

OUT

StatusID

DINT

错误编号

 

这些错误号码可以被返回:

名称

描述

arCAN_ERR_DEVICE_NAME

-1070584148

检查CAN接口名称。

arCAN_ERR_INVALID_PARAMETER

-1070584147

检查参数。

位计时寄存器0(寄存器0)。

BIT 7

BIT 6

BIT 5

BIT 4

BIT 3

BIT 2

BIT 1

BIT 0

SJW

编码

名称

值的范围

描述

计量单位:SJW

0..3

同步跳变宽度

BRP

0..63

波特率预分频器

位定时寄存器1(寄存器1)

BIT 7

BIT 6

BIT 5

BIT 4

BIT 3

BIT 2

BIT 1

BIT 0

劈叉

TSEG2

TSEG1

名称

值的范围

描述

Spl

0..1

采样模式(不是所有的CAN控制器都支持)。

0 每位三个样本

1 每位一个样本

TSEG1

2..15

时间段1

TSEG2

1..7

时间段2

波特率计算

CAN比特率的计算方法如下。CAN_Bitrate = 8 MHz / [(BRP+1) + (TSEG1+1) + (TSEG2+1)],其中一些数值的范围是有限的!

B&R使用寄存器0和寄存器1的值来计算各自的波特率

寄存器0

寄存器1

波特率 [比特/秒]

0x00

0x23

1000000

0x00

0x16

800000

0x00

0x1C

500000

0x01

0x1C

250000

0x03

0x1C

125000

0x04

0x1C

100000

0x09

0x1C

50000

0x18

0x1C

20000

0x31

0x1C

10000