ThunderFly-aerospace / TFLORA01

Pixhawk LoRa Telemetry extension.
GNU General Public License v3.0
1 stars 2 forks source link

Připojení k Pixhawk SPI konektoru #1

Open kaklik opened 3 years ago

kaklik commented 3 years ago

Pixhawk standardní SPI konektor má kromě SPI signálů pouze jeden další signál, jehož plánované použití je chip-select pro další zařízení.

To přináší komplikaci s připojením LoRa transceiveru přímo k autopilotovi. Neboť čip SX1261/2 potřebuje kromě SPI (včetně chip-selectu) minimálně dva další řídící signály BUSY a libovolný IO pin na který jsou svedené interrupty.

Přímé spojení s autopilotem si tak vynucuje použití digitálního pinu z dalšího konektoru. Případně nechat řízení na slepém použití časových konstant.

@povik však přišel se skvělým nápadem, jak tuto situaci vyřešit lépe.

image

Klíčovým prvkem je multiplexer řízený signálem SS připojeným k SX1262 , a 0/1 je přiřazení vstupů k úrovním toho SS.

Inverze znázorněná na vstupu je volitelná v zapojení, ze strany softwaru je to jedno.

kaklik commented 3 years ago

Tohle zapojení by zřejmě šlo vyzkoušet i se současným modulem. Při použití přepínače z SDRX01B. Znamenalo by to však zpojit do jednoho řídícího kanálu invertor, aby byl vždy sepnutý/rozepnutý vždy pouze jeden spínač.

povik commented 3 years ago

Ještě mě napadá -- když to zapojení nahoře budeme provozovat s neupraveným PX4 firmwarem, bude výstup multiplexeru připojen k pinu, který je po inicializaci výstup, dokud náš ovladač nezasáhne a neudělá z něho vstup.

Navrhuji ten výstup multiplexeru udělat spínaný vůči 3V3 s tím, že na straně STM32 očekáváme pulldown. Alespoň v posledních verzích PX4 je onen pin nastaven na logickou jedničku hned s inicializací, tj. neni okamžik, kdy by ten pin jako výstup měl nulu, vyjma situace, kdy se nějaký ovladač, jiný než náš, pokusí ten pin jako chip select použít. Navíc pokud by ta znázorněná inverze ve schématu u DIO1 nebyla, tak SX1262, pokud se s ním nikdo bavit nebude, DIO1 a tím i výstup multiplexeru spontánně nezvedne.

Jediná situace, ve které by takové řešení selhalo, by nastala, pokud by SX1262 byl nějak nastavený ovladačem, v tom by PX4 rebootoval, na straně SX1262 by byl interrupt, tím by se výstup multiplexeru sepl vůči 3V3, a zároveň by na straně PX4 nějaký cizí ovladač onuloval ten chip select, ze kterého děláme vstup. Až pak by se něco mohlo poškodit.

kaklik commented 3 years ago

Ještě mě napadá -- když to zapojení nahoře budeme provozovat s neupraveným PX4 firmwarem, bude výstup multiplexeru připojen k pinu, který je po inicializaci výstup, dokud náš ovladač nezasáhne a neudělá z něho vstup.

Navrhuji ten výstup multiplexeru udělat spínaný vůči 3V3 s tím, že na straně STM32 očekáváme pulldown. Alespoň v posledních verzích PX4 je onen pin nastaven na logickou jedničku hned s inicializací, tj. neni okamžik, kdy by ten pin jako výstup měl nulu, vyjma situace, kdy se nějaký ovladač, jiný než náš, pokusí ten pin jako chip select použít. Navíc pokud by ta znázorněná inverze ve schématu u DIO1 nebyla, tak SX1262, pokud se s ním nikdo bavit nebude, DIO1 a tím i výstup multiplexeru spontánně nezvedne.

Mě se tohle zdá jako překombinované řešení. Podle mě stačí na výstup multiplexeru dát rezitor, který ošetří maximální proud při nekompatibilních stavech. Třeba 33-100 Ohm.

povik commented 3 years ago

To je 33 mA potenciálně po dlouhou dobu. Samozřejmě můžeme tam dát větší odpor, ale neodhadnu hned, jak by to ovlivnilo rychlost signalizace.

povik commented 3 years ago

Dáme-li ale inverzi na cestu DIO1, bude klidový stav na výstupu multiplexeru logická jednotka. Pak by 33 mA teklo spíš krátce.

kaklik commented 3 years ago

Dáme-li ale inverzi na cestu DIO1, bude klidový stav na výstupu multiplexeru logická jednotka. Pak by 33 mA teklo spíš krátce.

To je dobrý nápad. Lze udělat oboje.. Dlouhá doba by ale nastala pouze v případě, že by tam někdo měl připojený LoRa modem a neměl aktivovaný jeho driver, ne?

povik commented 3 years ago

Ano

kaklik commented 2 years ago

Doplnil jsem do schéma zapojení multiplexeru:

image

@ChroustJan pokud by při routování PCB nevyhovovalo použití signálu DIO1, tak lze zřejmě použít i signály DIO2, nebo DIO3, ale bude to vyžadovat zásah do software. Pinově je však DIO1 nejblíže.