Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Připojení k Pixhawk SPI konektoru #1

Open
kaklik opened this issue Oct 28, 2020 · 8 comments
Open

Připojení k Pixhawk SPI konektoru #1

kaklik opened this issue Oct 28, 2020 · 8 comments

Comments

@kaklik
Copy link

kaklik commented Oct 28, 2020

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 kaklik self-assigned this Oct 28, 2020
@kaklik
Copy link
Author

kaklik commented Oct 28, 2020

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
Copy link
Member

povik commented Oct 29, 2020

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
Copy link
Author

kaklik commented Oct 29, 2020

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
Copy link
Member

povik commented Oct 29, 2020 via email

@povik
Copy link
Member

povik commented Oct 29, 2020 via email

@kaklik
Copy link
Author

kaklik commented Oct 29, 2020

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
Copy link
Member

povik commented Oct 29, 2020 via email

@kaklik kaklik removed their assignment Nov 5, 2020
@kaklik
Copy link
Author

kaklik commented Jan 11, 2022

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.

kaklik added a commit that referenced this issue Jan 11, 2022
@ChroustJan ChroustJan removed their assignment Jun 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants