目录
getChipType -- 确定当前所用的CAN控制器类型
代码示例
setCanCabsMode -- 设置 CANcab 模式
代码示例
setOcr -- 设置输出寄存器
代码示例
setBtr -- 设置位时序寄存器BTR
代码示例
getChipType -- 确定当前所用的CAN控制器类型
功能:确定所用 CAN 控制器的类型。
channel:
CAN channel |
|
返回值:
5 | NEC 72005 |
200 | Philipps PCA82C200 |
526 | Intel 82526 |
527 | Intel 82527 |
1000,1001 | Philipps SJA1000 |
代码示例
switch(getChipType(0)) {
case 200: setOcr(0,0x02);
break;
case ...
default:
write("Unknown CAN-chip %d", getChipType(0));
break;
}
注意:可能会出现其他类型。 DEMO 版本返回结果 0 或模拟现有类型之一。 如果尝试访问不存在的通道(例如 CPC/PP 的通道 2)或者如果使用的驱动程序不支持此功能,则功能结果为 0。
setCanCabsMode -- 设置 CANcab 模式
功能:设置各种 CANcab 模式,替换 setPortBits 函数,
注意:并非所有对讲机都支持使用此功能设置的所有模式。
ntype:未使用,必须设置为 0
nchannel:CAN通道
nmode:用于通过位模式控制板线。
物理值 | 描述 |
0 | NORMAL |
1 | SLEEP |
2 | HIVOLTAGE |
3 | HISPEED |
4 | DUAL_WIRE |
5 | SINGLE_WIRE_LOW |
6 | SINGLE_WIRE_HIGH |
7 | is reserved |
对于 CANcab Eva,可以设置两条输出线
nMode | Line 2 | Line 1 |
8 | 0 | 0 |
9 | 0 | 1 |
10 | 1 | 0 |
11 | 1 | 1 |
Call the function with ntype = 0, nchannel = 1, nMode = 11, nflags = 0
setCanCabsMode(0,1,11,0); // sets both lines to 1
nflags:用于通过位模式控制板线。
0x0 | HIGHPRIO is disabled |
0x1 | HIGHPRIO is enabled (clear tx-buffers) |
0x4 | HIGPRIO is enabled for one message (clear tx-buffers) |
注意:并非所有模式和标志值都对所有 CANcab 有效!
返回值:
0:设置成功
!=0:设置失败
代码示例
on key 'n'
{
long ntype, nmode, nchannel, nflags;
ntype = 0;
nmode = 0;
nchannel = 1;
nflags = 0;
setCanCabsMode(ntype, nchannel, nmode, nflags);
write("normal mode");
}
setOcr -- 设置输出寄存器
功能:设置输出控制寄存器,在下次调用函数 resetCan() 之前,这些值不会变为活动状态。
需要注意的是,这些值取决于所使用的 CAN 平台
channel:
0:所有的控制器
1 - 32:CAN通道1 - 32
OCR:输出控制寄存器的值
返回值:
1:成功设置
0:设置失败
代码示例
//设置寄存器值
setOcr(0, 0x02);
//重置CAN
resetCan();
setBtr -- 设置位时序寄存器BTR
功能:设置另一个波特率。 在下次调用函数 resetCan 之前,这些值不会变为活动状态。应该注意的是,这些值取决于所使用的 CAN 控制器。
channel:
0:所有的控制器
1 - 32:CAN通道1 - 32
BTR0:位时序寄存器 0 的值。
BTR1:位时序寄存器 1 的值。
返回值:一直是1
代码示例
// 500 kBaud for 82C200
setBtr(0, 0x00, 0x3a);
// 重置CAN通道
resetCan(); // activate