如何在NI-CAN中设置非标准的波特率?



主要软件: Driver Software>>NI-CAN
主要软件版本: 2.0
主要软件修正版本: N/A
次要软件: N/A

问题: NI-CAN支持大多数标准波特率。如何设置非标准的波特率呢?

解答: NI-CAN 2.0(或者更高版本)可在Measurement & Automation Explorer (MAX)中方便地给通道的API提供设置波特率。刷新MAX(按F5)中的“Device & Interface”。选中你要配置波特率的卡和端口,点击“Properties”。“Advanced”按钮提供波特率的调整。此外还有一个波特率计算器(“Advanced”》“波特率”……),计算出所有可能的波特率。

然而,如果你使用Frame API或者NI-CAN 1.x,还有另一种方法定制波特率:

配置属性NCTYPE_BAUD_RATE也允许用户编程设置非标准或者不常用的波特率。如果设bit位31(0x80000000)为1,低16位直接写入控制器bit定时寄存器。低字节作为82527芯片(8MHz时钟)的BTR0,高字节是BTR1。

CAN板可以识别如下的波特率。例如,你输入的波特率是125000,CAN自动在定时寄存器写入合适的值。如果你没有使用下列的波特率,你需要在定时寄存器设置合适的位。设备的文档应该说明如果写定时寄存器的位。

波特率定时寄存器值(BTR1 + BTR0)
10000000x1400
8000000x1600
5000000x1C00
4000000x2F00
2500000x1C01
2000000x2F01
1600000x7F01
1250000x1C03
1000000xBEC3
833330x2B85
800000xBEC4
625000xBAC7
500000xBEC7
400000xBEC9
312500xBACF
250000xBECF
200000xBED3
160000xBED8
156250xBADF
125000xBEDF
100000xBEE7
80000xBEF1
7813 (实际为7812.5)0xBAFF
61500xBEFF
50000xFFFF


例如编程设置波特率为125000(BTR1=1C,BTR0=03),CAN控制器编程时对应的参数就是0x80001C03。因为非标准波特率不能被转换,所以需要写成定时寄存器的格式。

注意:记住CAN控制器使用8MHz时钟,应此只有125ns或者1/(8M)的倍数的波特率才能设置。更多信息请参考CAN通信控制芯片的参考手册。CAN控制器的芯片应该没有区别。

相关链接:
Philips' Application Note: Determination of Bit Timing Parameters
Latest NI-CAN device driver software

附件:





报告日期: 08/17/2005
最近更新: 08/18/2005
文档编号: 0ZEF3MHR