如何在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) |
1000000 | 0x1400 |
800000 | 0x1600 |
500000 | 0x1C00 |
400000 | 0x2F00 |
250000 | 0x1C01 |
200000 | 0x2F01 |
160000 | 0x7F01 |
125000 | 0x1C03 |
100000 | 0xBEC3 |
83333 | 0x2B85 |
80000 | 0xBEC4 |
62500 | 0xBAC7 |
50000 | 0xBEC7 |
40000 | 0xBEC9 |
31250 | 0xBACF |
25000 | 0xBECF |
20000 | 0xBED3 |
16000 | 0xBED8 |
15625 | 0xBADF |
12500 | 0xBEDF |
10000 | 0xBEE7 |
8000 | 0xBEF1 |
7813 (实际为7812.5) | 0xBAFF |
6150 | 0xBEFF |
5000 | 0xFFFF |
例如编程设置波特率为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
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.