DM-USBCU1 USB-CAN converter module
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
| Size | 4x2x1cm |
|---|---|
| Model | DM-USBCU1 |
| Type | CAN bus |
| Brand | Damiao |
| Production | China |
| Use case | USB-UART conversion USB-CAN conversion CAN analyzing |
| Description | Module【V3.0】 + UART-3P cable + CAN-2P cable |
Conversion of USB to CAN frame(V2.0)
CAN frame data format
| CAN frame data format | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Frame header | Frame length | Command | Number of transmission | Time period | ID type | CAN ID | Frame type | idAcc | dataAcc | len | data[len] | CRC | ||||||||||
| Data0 | Data1 | Data2 | Data3 | Data4 | Data5 | Data6 | Data7 | Data8 | Data9 | Data10 | Data11 | Data12 | Data13 | Data14 | Data15 | Data16 | Data17 | Data18 | Data19 | Data20 | Data21~Data28 | Data29 |
| 16bit | 8bit | 8bit | 32bit | 16bit | 8bit | 32bit | 8bit | 8bit | 8bit * 8 | 8bit | ||||||||||||
| 55 | AA | 1e | 01 | 01 | 00 | 00 | 00 | 0a | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 08 | data[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 header | baudrate | databit | stopbit | parity | Frame footer | |||||
| Data0 | Data1 | Data2 | Data3 | Data4 | Data5 | Data6 | Data7 | Data8 | Data9 | Data10 |
| 16bit | 32bit | 8bit | 8bit | 8bit | 16bit | |||||
| 0x55 | 0xAA | 0xAA | 0x55 | |||||||
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 header | Index | Frame footer | ||
| Data0 | Data1 | Data2 | Data3 | Data4 |
| 16bit | 8bit | |||
| 0x55 | 0x05 | 0xAA | 0x55 | |
| Index | Baud rate | Ideal CIA | Real CIA |
|---|---|---|---|
| index0 | 1000kbps | 75% | 75% |
| index1 | 800kbps | 80% | 80% |
| index2 | 666kbps | 80% | 83.3% |
| index3 | 500kbps | 87.5% | 87.5% |
| index4 | 400kbps | 87.5% | 85% |
| index5 | 250kbps | 87.5% | 87.5% |
| index6 | 200kbps | 87.5% | 85% |
| index7 | 125kbps | 87.5% | 87.5% |
| index8 | 100kbps | 87.5% | 87.5% |
| index9 | 80kbps | 87.5% | 86.5% |
| index10 | 50kbps | 87.5% | 87.5% |
| index11 | 40kbps | 87.5% | 85% |
| index12 | 20kbps | 87.5% | 85% |
| index13 | 10kbps | 87.5% | 85% |
| index14 | 5kbps | 87.5% | 87.5% |
Heart beat communication between PC and device
| Heart beat communication between PC and device | |||||
|---|---|---|---|---|---|
| Frame header | Frame footer | ||||
| Data0 | Data1 | Data3 | Data4 | ||
| 16bit | |||||
| 0x55 | 0x04 | 0xAA | 0x55 | ||
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 header | Frame footer | ||||
| Data0 | Data1 | Data3 | Data4 | ||
| 16bit | |||||
| 0x55 | 0x03 | 0xAA | 0x55 | ||
Note: This will terminate current transmission
CAN receive data frame format
| CAN frame data format | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Frame header | Command | Format | CAN ID | Data | Frame footer | ||||||||||
| Data0 | Data1 | Data2 | Data3 | Data4 | Data5 | Data6 | Data7 | Data8 | Data9 | Data10 | Data11 | Data12 | Data13 | Data14 | Data15 |
| AA | 55 | ||||||||||||||
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