CANのボーレートを変更するには?



使用ソフトウェア: Driver Software>>NI-CAN
使用ソフトウェア・バージョン: 1.5
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア:

問題: 標準規格のボーレートはサポートしていますが、非標準規格のボーレートを使うことが出来ますか?

解決策:
NI-CAN1.2以降のバージョンであれば、NCTYPE_BAUD_RATEを使って、標準規格、非標準規格、それ以外の任意のボーレートを設定することが出来ます。 設定は、16進数31ビット目が1であれば(0x80000000)下位16ビットがCANのcommunications controllerのビットタイミングレジスタに格納されます。下位のバイトはIntel 82527チップ(8MHz clock)のBTR0用に、上位バイトはBTR1用にプログラムされています。

CANボードは以下のボーレートを設定することが出来ます。たとえば、ボーレートを125000に設定したならばCANデバイスは自動的に、ビットタイミングレジスターを書き換えます。下記に羅列されているボーレートを使わないのであれば、お使いのデバイスに即した他ビットタイミングに修正する必要があります。お使いのデバイスのドキュメント類には、必ず、ビットタイミングレジスターが記載されています。

{ 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, 0xBAFF }, /* actually 7812.5 */
{ 6150, 0xBEFF },
{ 5000, 0xFFFF }

ボーレートを125000に設定する場合、CAN communications controllerに0x80001C03を記入すれば、10進法で125000を設定するように記入したことと同じになります。非標準規格のボーレートはCAN標準規格のようにはいかず、ボーレートのビットタイミングレジスターを使って設定します。下記リンクのアプリケーションノートにビットタイミングレジスターについて詳細があります。BTR値をそれぞれ算出して、16進数で8000XXXX(Xは任意の数値)をボーレート設定の制御器に代入することで変更ができます。また、ボーレートによってはクロックの倍数などの関係で設定できない数値もありますのでご注意ください。

ちなみに、CAN communications controllerチップのリファレンスマニュアルにも書かれているように、CAN controllerチップでのBTR値のの違いはありません。


関連リンク: Philips' Application Note: Determination of Bit Timing Parameters

添付:





報告日時: 07/15/1997
最終更新日: 06/30/2002
ドキュメントID: 0ZEF3MHR