Skip to main content

DM-USBCU1 USB-CAN converter module

Original user manual(Chinese)

This website is licensed under the Apache License 2.0. No license is granted for this documentation or the original documentation.

USB-CAN converter software

Please refer to the USB-CAN converter software here.

Specifications

Size4x2x1cm
ModelDM-USBCU1
TypeCAN bus
BrandDamiao
ProductionChina
Use caseUSB-UART conversion
USB-CAN conversion
CAN analyzing
Description

Module【V3.0】 + UART-3P cable + CAN-2P cable
CAN isolation upgraded

Conversion of USB to CAN frame(V2.0)

CAN frame data format

CAN frame data format
Frame headerFrame lengthCommandNumber of transmissionTime periodID typeCAN IDFrame typeidAccdataAcclendata[len]CRC
Data0Data1Data2Data3Data4Data5Data6Data7Data8Data9Data10Data11Data12Data13Data14Data15Data16Data17Data18Data19Data20Data21~Data28Data29
16bit8bit8bit32bit16bit8bit32bit8bit8bit8bit * 88bit
55AA1e01010000000a000000000000000000000008data[8]crc
  • Command
    • 0x01 CAN data frame transmit
    • 0x02 Handshake PC and device, device returns OK
    • 0x03 Non-feedback CAN forwarding, no feedback on transmission status
  • ID type
    • 00 Standard frame
    • 01 Extended frame
  • Frame type
    • 00 Data frame
    • 01 Remote frame

Note: Other formats are serial transmission data

e.g.

55 aa 1e 01 01 00 00 00 0a 00 00 00 00 00 00 00 00 00 08 00 00 12 23 34 45 56 67 78 89 88

Baud rate setup command for serial port

Baud rate setting command for serial port
Frame headerbaudratedatabitstopbitparityFrame footer
Data0Data1Data2Data3Data4Data5Data6Data7Data8Data9Data10
16bit32bit8bit8bit8bit16bit
0x550xAA0xAA0x55
typedef struct {
uint32_t baudrate; // Baud rate
uint8_t databit; // Data bit
uint8_t stopbit; // Stop bit
uint8_t parity; // Parity
} Baudrate_set_data;
// Data length setting
// 0: 8bit
// 1: 9bit
switch(setdata_t->databit)
{
case 0u:
stcInitCfg.enDataLength = UsartDataBits8;
break;
case 1u:
stcInitCfg.enDataLength = UsartDataBits9;
break;
default:
stcInitCfg.enDataLength = UsartDataBits8;
break;
}

// Parity setting
switch(setdata_t->parity)
{
case 0u:
stcInitCfg.enParity = UsartParityNone;
break;
case 1u:
stcInitCfg.enParity = UsartParityEven;
break;
case 2u:
stcInitCfg.enParity = UsartParityOdd;
break;
default:
stcInitCfg.enParity = UsartParityNone;
break;
}

// Stop bit setting
switch(setdata_t->stopbit)
{
case 0u:
stcInitCfg.enStopBit = UsartOneStopBit;
break;
case 1u:
stcInitCfg.enStopBit = UsartTwoStopBit;
break;
default:
stcInitCfg.enStopBit = UsartTwoStopBit;
break;
}

CAN baudrate setting command

CAN baudrate setting command
Frame headerIndexFrame footer
Data0Data1Data2Data3Data4
16bit8bit
0x550x050xAA0x55
IndexBaud rateIdeal CIAReal CIA
index01000kbps75%75%
index1800kbps80%80%
index2666kbps80%83.3%
index3500kbps87.5%87.5%
index4400kbps87.5%85%
index5250kbps87.5%87.5%
index6200kbps87.5%85%
index7125kbps87.5%87.5%
index8100kbps87.5%87.5%
index980kbps87.5%86.5%
index1050kbps87.5%87.5%
index1140kbps87.5%85%
index1220kbps87.5%85%
index1310kbps87.5%85%
index145kbps87.5%87.5%

Heart beat communication between PC and device

Heart beat communication between PC and device
Frame headerFrame footer
Data0Data1Data3Data4
16bit
0x550x040xAA0x55

Note: IF CMD is 00 in CAN data, other CAN data are invalid.

CAN transmission terminate(when transmitting periodically)

CAN transmission terminate(when transmitting periodically)
Frame headerFrame footer
Data0Data1Data3Data4
16bit
0x550x030xAA0x55

Note: This will terminate current transmission

CAN receive data frame format

CAN frame data format
Frame headerCommandFormatCAN IDDataFrame footer
Data0Data1Data2Data3Data4Data5Data6Data7Data8Data9Data10Data11Data12Data13Data14Data15
AA55

CAN command:

  • 00 Heartbeat
  • 0x01 Receive failed
  • 0x11 Receive succeeded
  • 0x02 Transmit failed
  • 0x12 transmit succeeded
  • 0x03 Baud rate setting failed
  • 0x13 Baud rate setting succeeded

Format: It includes data length and data frame type.

See the structure below for details.

// CAN return data format
typedef struct // CAN send function related structures 16 bytes
{
uint8_t frameHeader; // Send flag 0xAA
uint8_t CMD; // CAN command
uint8_t canDataLen:6; // Data length
uint8_t canIde:1; // ide: 0 Standard、1 Extended
uint8_t canRtr:1; // rtr: 0 Data frame、1 Remote frame
uint32_t CANID; // CAN ID
uint8_t canData[8]; // CAN data
uint8_t freamEnd; // End 0x55
} CAN_Fream;

e.g.

AA 11 08 00 00 00 00 00 01 02 03 04 05 06 07 55