A:
CAN FD通信の概要については、「CAN2.0B通信とCAN FD通信の違い」を参照ください。
①CAN FD通信は、アービトレーション領域に対するビットレート設定と、データ領域に対するビットレート設定には異なる値を指定できます。
その際、CanTransmit関数のMessageType引数で、CAN
FDメッセージ(CCAN_MSG_TYPE_CAN_FD)とともに、ビットレートスイッチ(CCAN_MSG_TYPE_BITRATE_SWITCH)が必要になります。
②同じCAN経路上のアービトレーション領域及び、データ領域に対する各ビットレート設定とサンプリングポイントは、送信デバイスと受信デバイスで同等の設定を行ってください。
設定には、CanSetCanFdTiming関数を使用します。
また、設定値を確認する場合は、CanGetCanFdTiming関数を使用します。
詳細は、各関数の関数リファレンスを参照ください。
CANデバイスのChannelNo = 1から、CAN FD送信。
MessageNum =1、CAN ID = 0x11c、DataLength
= 1 、Data = 0xff
C |
long Ret; unsinged long MessageType[1]; unsinged long CanId[1]; unsinged short DataLength[1]; unsinged char Data[1][64];
MessageType[0] = CCAN_MSG_TYPE_CAN_FD | CCAN_MSG_TYPE_BITRATE_SWITCH; CanId[0] = 0x11c; DataLength = 1; Data[0][0] = 0xff;
|
Python |
Ret = ctypes.c_long() MessageTypeType = ctypes.c_uint() * 1 MessageType = MessageTypeType() CanIdType = ctypes.c_uint() * 1 CanId = CanIdType() DataLengthType = ctypes.c_ushort() *1 DataLength = DataLengthType() SingleDataType = ctypes.c_ubyte() * 64 DataType = ctypes.SingleDataType * 1 Data = DataType()
MessageType[0] = CCAN_MSG_TYPE_CAN_FD | CCAN_MSG_TYPE_BITRATE_SWITCH CanId[0] = 0x11c DataLength[0] = 1 Data[0][0] = 0xff
Ret.value = ccan.CanTransmit ( Id , 1 , DataLength , MessageType , CanId , Data )
|