wz


Taranis

 

FrSky TARANIS X9D

Jak funguje S-BUS ?

Často se objevují nářky majitelů Futaby, že S-Bus nefunguje. Tak se na to mrkneme, kde udělali soudruzi z Japonska chybu.



Systémové sběrnice vypadá takto: (což bohužel mnozí výrobci RC souprav špatně integrují) 
25 bajtů, které posílá SBus jsou připraveny tak, aby se přenášely hodnoty kanálů s 11bitovou váhu = rozlišení 2048.

A to je problém třeba u Futaby, protože si je musí poskládat tak, aby dostala hodnoty jednotlivých kanálů.
To provádí Futaba "zatraceně hloupě", takže je bere jako jednoduchý řetězec Bytů bez synchronizačního Bytu mezi nimi! Prostě se zastavila v pravěku 35MHz.

-----------------------------------

Vždy se posílá 25 Bytů

A probíhá to přesně takhle:

Startovací Byte F0h.

Potom 22 Bytů s hodnotami 16 kanálů, které jsou sestaveny následovně:

Kanál1: 8 Bitů + 3 Bity následujícího Byte
Kanál2: 5 Bitů= zbytek z předchozího + 6 Bitů následujícího Byte
Kanál3: 2 Bity= zbytek z předchozího + 8 Bitů následujícího Byte + 1bit následujícího Byte
Kanál4: 7 Bitů= zbytek z předchozího + 4 Bit následujícího Byte
Kanál5: 4 Bity= zbytek z předchozího + 7 Bitů následujícího Byte
Kanál6: 1 Bit= zbytek z předchozího + 8 Bitů následujícího Byte +2 bity následujícího Byte
Kanál7: 6 Bitů= zbytek z předchozího + 5 Bitů následujícího Byte
Kanál8: 3 Bity= zbytek z předchozího + 8 Bitů následujícího Byte

Kanál9: 8 Bitů + 3 Bity následujícího Byte
Kanál10: 5 Bitů= zbytek z předchozího + 6 Bitů následujícího Byte
Kanál11: 2 Bity= zbytek z předchozího + 8 Bitů následujícího Byte + 1bit následujícího Byte
Kanál12: 7 Bitů= zbytek z předchozího + 4 Bity následujícího Byte
Kanál13: 4 Bity= zbytek z předchozího + 7 Bitů následujícího Byte
Kanál14: 1 Bit= zbytek z předchozího + 8 Bitů následujícího Byte +2 bity následujícího Byte
Kanál15: 6 Bitů= zbytek z předchozího + 5 Bitů následujícího Byte
Kanál16: 3 Bity= zbytek z předchozího + 8 Bitů následujícího Byte
(to je 22Bytů hodnot kanálů)

Potom následuje 1 Flagbyte, který je interpretován po bitech.
Kromě jiného jsou tam schovány ještě 2 spínací kanály - kanál 17 a kanál 18.

A pak ještě koncový Byte 00H.

A dál už nic!
Nic se synchronizací, CRC, kontrolním součtem, apodobně, prostě nic!

Moje pozámka:
Bohužel Futaba-SBus není žádný protokol.
Je to z datového hlediska pořádná fušeřina
navíc ještě low aktivní se špatným pořadím dat MSB LSB.
Taková fušeřina snad ani není možná!

Data FrSky XJT a FBus:
Každých 9ms přijde všech 16 kanálů na S-Bus konektor přijímače XJT.
Parametry: 100000 Baudů, 1 Startbit, 8 datových bitů, 1 paritní bit sudy, 2 Stopbity,
Formát stringu: 25 Bytů, 1 Startovací byte F0h, 22 Bytů kanálových dat 1-16, 1 Flagbyte, 1 koncový byte 00h,
Úroveň: 3,3V !!!, klidová úroveň je Low (u Futaby je to vymyšleno hloupě, protože potřebuje také invertor/buffer!)

Jak už bylo řečeno, všechny zmatky pocházejí od Futaby
a nemá to nic společného s Taranisem, X8R, FrSky nebo openTx.

Prostě mnohé systémy mají implementováno špatné vyhodnocování.

Poznámka: SBus tedy běží na úrovni 3,3V a my neznáme interní zapojení (eventuálně je uvnitř ochraná dioda 3,3V ??)
Pokud chceme SBus propojit např. s Arudinem, které má logiku na 5V, máme problém. Můžeme si pomoci následovně:

Arduino 5V --> 3,3V SPort, jednoduše použijte napěťový dělič,

SPort 3,3V --> 5V Arduino 1 tranzistor na úpravu úrovně,
ale jetě otestujte, zda Arduino nepozná 3,3V už jako High.

Standardní řešení by mohlo být rovněž:
3.3V->5V: 74HCT: 5V-technika, kde jsou vnitřní spínací úrovně kompatibilní s TTL a zároveň i s 3.3V CMOS
5V->3.3V: 74LVC: 3.3V technika, která toleruje 5V;

Alternativně 74AHC, pouze toleruje vstupní signály až do úrovně příslušného napájecího napětí.

Jaroslav Řehůřek, 23.12.2013