Open kaklik opened 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č.
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.
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.
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.
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.
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?
Ano
Doplnil jsem do schéma zapojení multiplexeru:
@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.
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.
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.