rc:dev:sbus_client
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rc:dev:sbus_client [2014/10/08 23:11] – [Typical Frame] redox | rc:dev:sbus_client [2023/11/24 21:55] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 2: | Line 2: | ||
## Overview | ## Overview | ||
+ | |||
+ | Well... Not much to say here. I have the radio, the receiver, a Teensy3.1 and some spare time. Let's hook everything together =D | ||
+ | |||
## Protocol | ## Protocol | ||
Line 7: | Line 10: | ||
### Technical details | ### Technical details | ||
- | Baudrate... | + | The technical details originaly come from __Uwe Gartmann__ from the MBed website (source link in the Links section). Because it would have been to easy to use standard settings, SBus serial communications use: |
- | ### Trame | + | * A baudrate of 100000 b/s |
+ | * An inverted logic | ||
+ | * One parity bit | ||
+ | * Two stop bits | ||
+ | * MSB first (that the only common thing !) | ||
- | F0 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx yy 00 | + | Luckily, the Teensy3 can manage that =) |
+ | The SBus protocol sends a message every 7ms (high speed mode) or every 14ms (low speed mode). | ||
- | * (0x)F0 is the start byte. It should always be 0xF0. You can sync on that I guess if you want to. | + | ### SBus protocol |
- | * (0x)xx are the data bytes. There should be 22 of them | + | |
- | | + | A common SBus message requires 25 bytes of data: |
- | They could have made our lives easier and used 12bits per channel, but No... So: | + | |
+ | F0 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx yy 00 | ||
+ | |||
+ | |||
+ | * F0 is the start byte. It should always be 0xF0. You can sync on that I guess if you want to. | ||
+ | * xx are the data bytes. There should be 22 of them. SBus manages 16 analog channels, and uses 11bits for each, so 11*16/8 => 22 bytes. | ||
* CH1 uses the first data byte (let's call it D0), and the 3 Most Significant Bits (MSB) of D1 | * CH1 uses the first data byte (let's call it D0), and the 3 Most Significant Bits (MSB) of D1 | ||
* CH2 uses the 5 Least Significant Bits (LSB) of D1, and the 6 MSB of D2 | * CH2 uses the 5 Least Significant Bits (LSB) of D1, and the 6 MSB of D2 | ||
- | * And so on... CH3 uses the 2 lSB of D2, the whole D3, and the MSB of D4...See, its not that easy to process... | + | * And so on... CH3 uses the 2 LSB of D2, the whole D3, and the MSB of D4...See, its not that easy to process |
- | * (0x)yy is the flag byte | + | * yy is the flag byte |
* Bit 7 (0x80) is CH17, it's a digital/ | * Bit 7 (0x80) is CH17, it's a digital/ | ||
* Bit 6 (0x40) is CH18, same. | * Bit 6 (0x40) is CH18, same. | ||
Line 29: | Line 41: | ||
* Bit 4 (0x10) indicates __Failsafe mode__ | * Bit 4 (0x10) indicates __Failsafe mode__ | ||
* Bits 3-0 are not used and sould be 0 | * Bits 3-0 are not used and sould be 0 | ||
- | * (0x)00 is the stop byte. It should always be 0x00. You can also do some check to check there was no lost/added byte in the serial communication. | + | * 00 is the stop byte. It should always be 0x00. You can also do some check to check there was no lost/added byte in the serial communication. |
### Typical Frame | ### Typical Frame | ||
F0 2E 90 FB 1F 1D EC 8E 0F B6 F3 DE 07 C6 A0 D4 1A 83 50 6A 0D 41 A8 00 00 | F0 2E 90 FB 1F 1D EC 8E 0F B6 F3 DE 07 C6 A0 D4 1A 83 50 6A 0D 41 A8 00 00 | ||
+ | |||
+ | |||
+ | * Starts with 0xF0 | ||
+ | * Flag is 0x00, no error. | ||
+ | * Ends with 0x00 | ||
### Radio off | ### Radio off | ||
Line 44: | Line 61: | ||
## Code | ## Code | ||
+ | |||
+ | Well, it's heavily adapted from the [[: | ||
+ | |||
+ | Here's the last version of the code: {{: | ||
+ | |||
+ | ## Next ? | ||
+ | |||
+ | * Decode the CH* values | ||
+ | * Port to Attiny (cost, embeddable, ...) | ||
+ | * Emulates a joystick with Teensy3, so I can use the RC simulator softwares without any cable. | ||
## Links | ## Links |
/home/share/www/redox.ws/wiki/data/attic/rc/dev/sbus_client.1412809868.txt.gz · Last modified: 2023/11/24 21:55 (external edit)