doc:rfc_canraw-mode
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| doc:rfc_canraw-mode [2014/03/02 06:47] – created admin | doc:rfc_canraw-mode [2016/10/30 09:22] (current) – [Initialization] admin | ||
|---|---|---|---|
| Line 40: | Line 40: | ||
| p 8 4 0 | p 8 4 0 | ||
| - | Select HS-CAN bus speed to 500kbit/s (for other bitrates please have a look to the firmware syntax here: [[brokenlink|The OOBD Firmware Syntax]]) | + | Select HS-CAN bus speed to 500kbit/s (for other bitrates please have a look to the firmware syntax here: [[doc: |
| p 8 3 3 | p 8 3 3 | ||
| Line 58: | Line 58: | ||
| Activate CANraw listen mode | Activate CANraw listen mode | ||
| - | p 7 1 1 | + | p 7 1 x |
| + | |||
| + | where x is one of the output formats of the listen command. | ||
| - | Hint: | + | Received |
| - | + | ||
| - | If there are already | + | |
| ==== Configuration ==== | ==== Configuration ==== | ||
| Line 80: | Line 80: | ||
| - | The OOBD CAN raw format does not only allow single CAN frames, it can also send (if necessary) | + | The OOBD CAN raw format does not only allow single CAN frames, it can also send (if necessary) |
| The data consists of one or more blocks: | The data consists of one or more blocks: | ||
| Line 98: | Line 98: | ||
| Following the scheme above, there can be so much blocks send in one go as fit into the input buffer of 4095 bytes. | Following the scheme above, there can be so much blocks send in one go as fit into the input buffer of 4095 bytes. | ||
| + | |||
| + | |||
| + | The whole sequence is only sent once. For repetition, the application need to raise the command again. | ||
| Line 107: | Line 110: | ||
| ==== Examples ==== | ==== Examples ==== | ||
| - | receiving | + | === Receiving Frames: === |
| + | |||
| + | Depending on the parameter x given at the listen format '' | ||
| + | |||
| + | == Vector Style Output (1) == | ||
| + | |||
| + | When having x=1, the output is like this | ||
| # 170943 0x1f6 0x0 8 00 00 01 49 00 03 00 0a | # 170943 0x1f6 0x0 8 00 00 01 49 00 03 00 0a | ||
| Line 113: | Line 123: | ||
| # 170944 0x2fd 0x0 6 00 e5 e2 00 2e f0 | # 170944 0x2fd 0x0 6 00 e5 e2 00 2e f0 | ||
| - | FIXME Sending frames: | ||
| + | == Vector Style Output from ISR (2) == | ||
| + | |||
| + | When having x=2, the output is like 1, but to have higher output performance (if needed), this output is already made in the CAN service routine. | ||
| + | |||
| + | |||
| + | == Lawicel Output from ISR (3) == | ||
| + | |||
| + | With x=3, the output comes also straight out of the CAN Interrupt service routine, having the so called Lawicel or SLCAN format: | ||
| + | |||
| + | T000007e1801a1a2a3a4a5a6a7deab | ||
| + | T000007e247202700000000000e293 | ||
| + | T000007e381010323334353637e67b | ||
| + | T000007e081112131415161718ea63 | ||
| + | T000007e1802b1b2b300000000ee4b | ||
| + | T000007e3821363738393a3b3cf233 | ||
| + | |||
| + | Which has the following format for 11-bit CAN Identifier | ||
| + | |||
| + | tiiindddddddddddddddd[ssss]\r | ||
| + | |||
| + | or | ||
| + | |||
| + | Tiiiiiiiindddddddddddddddd[ssss]\r | ||
| + | |||
| + | for 29 bit CANIDs, where the meaning is | ||
| + | |||
| + | ^ Field name ^ Length (Bytes) | ||
| + | | T / t | 1 | T= 29 bit CAN ID, t= 11 bit CAN ID | | ||
| + | | i | 2 / 4 | CAN ID either as 2 bytes (=11 bit) or 4 Bytes (=29 bit) | | ||
| + | | n | 1 | DLC (Number of Bytes) in Hex Format (" | ||
| + | | d | 0.. 8 | 0-8 Data Bytes in Hexadecimal writing | | ||
| + | | s | 2 | optional timestamp in hexadecimal writing (0..65535 ms) | | ||
| + | |||
| + | |||
| + | == Binary Output from ISR (4) == | ||
| + | |||
| + | With x=4 the output is in a binary format for highest throughput. This binary format is unique to OOBD and not supported by other software (yet). | ||
| + | |||
| + | All values are directly transferred in their binary representation, | ||
| + | |||
| + | On the other hand the 0xFF is used as Sync-Byte, which can optionally mark the start of a frame sequence. Please notice that this Sync-Byte is not mandatory for each frame sequence and might only be sent each few frames to allow the receiving software to sync to the byte stream. | ||
| + | |||
| + | As the Sync Byte is always followed by the Info Byte, which MSB is always set to 0, a sync byte can always be identified. | ||
| + | |||
| + | So a frame sequence consists of | ||
| + | |||
| + | ^ Field name ^ Length (Bytes) | ||
| + | | SB | 1 | Sync Byte (SB), Value 0xFF, **optional** | | ||
| + | | IB | 1 | Bit 7 (MSB)=0 \\ Bit 6 = Extended CAN-ID \\ Bit 4-5 Errorflags \\ Bit 0-3 DLC | | ||
| + | | TS | 2 | Time Stamp (0..65535 ms) | | ||
| + | | ID | 2 / 4 | Extended / Normal CAN ID | | ||
| + | | Data | 0..8 | Data Bytes | | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | FIXME Sending frames: | ||
| ===== Implementation Details ===== | ===== Implementation Details ===== | ||
doc/rfc_canraw-mode.1393739274.txt.gz · Last modified: 2014/03/02 06:47 by admin
