STM32MP157 dostep do interfejsów SPI, DI, DO...

STM32MP157 dostep do interfejsów SPI, DI, DO...
IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

Witam, STM32MP157 programuję z qt. Zastanawiam się teraz jak zasilić wizualizację danymi. Najprawdopodobniej do qt będę musiał podłączyć bibliotekę (najlepiej w C/C++) która pozwoli na sterowanie pinami, interfejsami SPI itd... Pytanie jaka bibliotekę mam podłączyć i czy coś trzeba skonfigurować w samym STM , przypominam że jest to STM z Linuxem .

edytowany 5x, ostatnio: ienecode
AD
  • Rejestracja:ponad rok
  • Ostatnio:około 3 godziny
  • Postów:316
1

Co.to jest czesc wizualizacyjna? O jakie zasilanie wizualizacji danymi chodzi? Dane możesz ładować np z pliku lub bazy danych. Może napisz coś więcej co chcesz osiągnąć bo na razie to niewiele wiadomo.

IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

STMa programuję z Qt który pozwala na towrzenie cześci wizualizacyjnej i logicznej. Jednak aby dostać siędo interfejsów STMa, zapewne potrzebuję bibliotek ? Jakie to biblioteki i skąd je pobrać?

AD
  • Rejestracja:ponad rok
  • Ostatnio:około 3 godziny
  • Postów:316
2

https://github.com/matthiasbock/libcan ale chyba musisz trochę się podszkolić z programowania zanim zaczniesz robić konkretne projekty.

IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

Skąd przekonanie że mam niewystarczającą wiedzę z programowania ? :) Z STMami nie mam doświadczenia stąd ten post.

Wysłałeś mi bibliotekę do komunikacji z urządzeniem dostępnym w systemie - "can". Taki moduł to ja mam dostępny w bibliotakch qt.
Prosiłem o to aby wskazać/podpowiedzieć jak dostać się do wysterownai/odczytania GPIO w STM., jaką konkretnie biblioteką .

Zacznijmy od początku, pomijająć qt bo widzę @Adin że nie masz o tym zielonego pojęcia.

Loguję się do wskazanego STMa za pomocą SSH, piszę w konsoli program w C, jaką bibliotekę mam dołączyć aby móc sterować GPIO lub innymi interfejsami w tym STMie?

edytowany 12x, ostatnio: ienecode
AD
To pozostańmy przy tym że nie mam pojęcia. Wesołego alleluja
IE
Uważam że forum służy do przekazywania treści związanych z tematem a nie swoich frustracji.
cerrato
Jeśli powstała jakakolwiek frustracja, to wynika ona z tego, że @Adin zadał pytania odnośnie tego, co i jak chcesz zrobić, a Ty się do nich nie odniosłeś, a potem się obraziłeś na niego :D
IE
Czwarty post raczej nie jest pytaniem :) Według mnie post pierwszy i moja odpowiedź w trzecim poście jasno określają problem i stawiane na niego pytanie. :) Kto wie o czym piszę i zna STMy myślę że nie miałby problemu z odpowiedzią. A nawet jesli nie wie to by dopytał o co dokładnie chodzi :)
IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

Na hoscie z którego mam narzędzie do programowania STMa powinienem zainstalować SDK
z poniższego linku i dołączyć biblioteki do mojego projektu ?

https://www.st.com/en/embedded-software/stm32mp1dev.html#get-software

Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:4 minuty
  • Postów:2067
3

@ienecode: ja bym zaczynał od zakładki "Documentation" i tam przejrzał pierwszych kilka dokumentów "Get Started and User's Guide "
I poszukał przykładu kodu, moze beda po zainstalowaniu jakiegoś narzędzia IDE czy co tam dają

Kazdy producent ma swoja filozofię

Kolejna sprawa to przemyslenie koncepcji JAK TO MA WSZYTKO DZIAŁAC
Bo jak piszesz o QT to zakładam ze to uruchamiasz na Linux PC i jakims interfejsem komunikujesz sie z STM
Musisz wybrać jakiś interfejs przemyslec protokół itp.


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

Qt znam , ale tylko na desktop. Teraz chciałbym poeksperymentować z embeded.
Środowisko i biblioteki Qt mam zarówno na Linux'ie, jak i na Windowsie.
Tak jak wcześniej pisałem mam projekt który na razie zawiera samo GUI, które oczywiście wgrywa się i działa na docelowym urzadzeniu tj. STM32.
Teraz muszę do mojego projektu podlinkować biblioteki aby obsługiwać peryferia w tym mikrokontrlerze.... nie bardzo wiem jakie, dlatego szukam kogoś kto ma doświadczenie z STMami i mi coś podpowie.
Czy możliwe że po zainstalowaniu STM32CubeProgrammer , gdzieś w katalogach instalacyjnych znajdę biblioteki do obsługi mojego mikrokontrolera ?

edytowany 1x, ostatnio: ienecode
HM
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 4 godziny
  • Postów:28
2

Ten STM (STM32MP157) to stosunkowo nowa linia produktów od ST. Typowy STM to jest zwykle mikrokontroler (rdzenie serii M). Tym masz płytkę której odpowiednikiem są układy serii Raspberry Pi. Nie miałem przyjemności z tą płytką, ale jeśli ST zrobiło to dość porządnie to jak wgrasz ich distro Linuxa (na razie jesteś za cienki na własne YOCTO) to powinni oferować standardowe Linuxowe interface systemowe dla i2c, spi czy gpio - więc to tylko ogólna rzecz Linuxowa, drivery działają sobie na poziomie kernela. Poszukaj sobie jak to się ogarnia lub manualni konkretnie dla STM32MP157, nie patrz na inne płytki bo to inna kategoria sprzętu.
W istocie ten proc posiada wbudowany mikrokontroler który najpewniej może przejąć część obsługi IO i pewnie nawet da się z nim gadać z poziomu Linuxa ale jego zastosowanie jest dość specyficzne - kiedy potrzebujesz mieć rzeczy RT wtedy przenosisz częśc logiki na taki kontrolerek lub nawet jakieś proste interface sprzętowe ogarniasz programowa na nim zamiast na poziomie kernela. Fajna rzecz, ale na Twoim aktualnym poziomie zrozumienia dokąd aktualnie zmierzasz - absolutnie do pominięcia.

IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

@Herr Mannelig z tego co rozeznałem do tej pory to raczej do tej nowej linii STM z linuxem trzeba, albo można też podejść tak samo jak do typowych STM.
Co prawda logowałem się do tego STMa po SSH i rzeczywiście są dostępne urządzenia jak w standardowym komputerze /dev/ .... nie zmienia to faktu że trzeba mieć biblioteki do tego typu procesora i linkować je do swojego projektu aby "pogadać" z peryferiami. Z tego co czytałem to biblioteki te udostępniają API które pozwala w łatwy sposób obsługiwać peryferia mikrokontrolera i są to biblioteki HAL.
Pytanie do tych co programują STMy.... Biblioteki HAL są uniwersalne dla całej rodziny STM32, czy dla każdego typu są dostępne jako odrębne ?
Gdzie znaleźć te biblioteki już skompilowane z rozszerzeniem .lib, lib.a do STM32MP157 i dokumentacje do nich ?

edytowany 1x, ostatnio: ienecode
IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

@Hello_im Figher Jeśli chodzi o system jest dostarcozny przez qt.
Podsumowując aby programować STMy z linuxem peryferia obsługuje się z userspace linuxa.

Natomiast jeśli skorzystamy z innego modulu tj: Qt-for-MCU , kóry jest przeznaczony dla rodziny STMów bez Linux'a. To do projektu qt nalezy już dodać biblioteki z APi umożliwiającym komunikację z peryferiami. Pytanie gdzie znaleźc biblioteki dla tego procesroa : STM32H750B-DK z rozszerzeniem .lib, lib.a?

edytowany 2x, ostatnio: cerrato
HM
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 4 godziny
  • Postów:28
0
ienecode napisał(a):

@Herr Mannelig z tego co rozeznałem do tej pory to raczej do tej nowej linii STM z linuxem trzeba, albo można też podejść tak samo jak do typowych STM.
Co prawda logowałem się do tego STMa po SSH i rzeczywiście są dostępne urządzenia jak w standardowym komputerze /dev/ .... nie zmienia to faktu że trzeba mieć biblioteki do tego typu procesora i linkować je do swojego projektu aby "pogadać" z peryferiami. Z tego co czytałem to biblioteki te udostępniają API które pozwala w łatwy sposób obsługiwać peryferia mikrokontrolera i są to biblioteki HAL.
Pytanie do tych co programują STMy.... Biblioteki HAL są uniwersalne dla całej rodziny STM32, czy dla każdego typu są dostępne jako odrębne ?
Gdzie znaleźć te biblioteki już skompilowane z rozszerzeniem .lib, lib.a do STM32MP157 i dokumentacje do nich ?

Nie rozumiesz. Wszystkie inne STMy to jest bare metal. Ty tutaj programujesz na poziomie Linuxa. Nie mieszaj sobie rzeczy. Twoja płytka to nie jest mikrokontroler. ST pewnie dostarcza prekompilowane SDK być może wrappując rzeczy z userspace Linuxa.

IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

Szukam info w sieci i znalazłem jeszcze to że STM32MP1 jest tak zaprojektowany że ma dwa rdzenie: Cortex-A7 i Cortex-M4.
Chodzi o to że zazwyczaj praktykuje się podejście że na tym pierwszy tworzymy GUI (tak jak ja stworzyłem GUI w Qt) , natomiast na drugim rdzeniu obsługę peryferii. Podejscie jest jak na standardowym STMie za pomoca np. STm32 Cube programmer.
Dane jakie chcemy wyświetlać w GUI pakujemy i między rdzeniami przesyłamy przez IPC - np wirtualny UART ..

edytowany 1x, ostatnio: ienecode
Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:4 minuty
  • Postów:2067
1

Masz taki zestaw uruchomieniwy:
STM32MP157C-DK2
STM32MP157C-EV1 ?
Tutaj przykłady na github
https://github.com/STMicroelectronics/STM32CubeMP1/tree/master/Projects
i tam głębiej są przykłady na wszystkie interfejsy


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

@Marius.Maximus tak zgadza się co przesyłasz . to są przykłady na sam rdzeń Cortex-M4. Ja zakładając temat zapytałem zbyt ogólnie , tz o podejscie do budowy kompleksowej aplikacji tz GUI z obsługą peryferii. Wyjaśnienie w poście wyżej jak trzeba podeść do tej rodziny STM.

HM
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 4 godziny
  • Postów:28
1
ienecode napisał(a):

Szukam info w sieci i znalazłem jeszcze to że STM32MP1 jest tak zaprojektowany że ma dwa rdzenie: Cortex-A7 i Cortex-M4.
Chodzi o to że zazwyczaj praktykuje się podejście że na tym pierwszy tworzymy GUI (tak jak ja stworzyłem GUI w Qt) , natomiast na drugim rdzeniu obsługę peryferii. Podejscie jest jak na standardowym STMie za pomoca np. STm32 Cube programmer.
Dane jakie chcemy wyświetlać w GUI pakujemy i między rdzeniami przesyłamy przez IPC - np wirtualny UART ..

Nie, robi się tak w bardzo specyficznych przypadkach gdy potrzebujesz zależności czasu rzeczywistego. Do wysłania danych po i2c, spi czy wystawienia gpio wystarczy obsługa od strony Linuxa i nie trzeba nic komplikować. Tym bardziej, że wszystkie powszechne interface mają akurat implementację sprzętową.
Gdybyś miał peryferia gadające po niestandardowym protokole po GPIo to byś to implementował na M-ce lub potrzebował specyficznych zależności czasowych w stylu twardej gwarancji, np.po otrzymani komendy po spi nie później niż po 5ms wystawisz odpowiedź, a przy okazji musisz zrobić jakieś rzeczy na Linuxie. Wtedy gdy Linux się spóźni na poziomie MCU traktujesz to jako porażkę zadania i wysterowujesz na mikrokontrolerze adekwatnie wyjścia do faila zachowując zależności czasowe, To są scenariusze gdy tej M-ki się używa.

IE
Czyli można podejśc na conajmniej dwa sposoby: 1. W opcji wymiany danych między rdzeniami, według mnie to podejście daje czystą architekturę jeśli tzw. logikę zrobimy na Cortex-M4 a wizualiazcję na Cortex-A7. 2. Co do oprogramowania całości z poziomu userspace w Linux, listuję wszyskie urządzeni "ls /dev/*" w linuxie na mojej płycie STM32MP157D-DK2 i nie ma tam urządzenia CAN ....
IE
  • Rejestracja:około 3 lata
  • Ostatnio:około miesiąc
  • Postów:37
0

Duzo się rozjasniło. Dzięki.

Pytanie, dlaczego w peryferiach nie ma magistrali CAN :
https://wiki.st.com/stm32mcu/wiki/Category:Getting_started_with_STM32_system_peripherals
?

edytowany 2x, ostatnio: ienecode
DN
  • Rejestracja:około 4 lata
  • Ostatnio:dzień
  • Postów:36
1

Ale chaos jak to czytam.
Jaki masz hardware, dokładnie jaka płytka, czy masz custom z tym prockiem STM32 MP1?
Co chcesz zrobić?
Masz cokolowiek zrobione czy to jest projekt czysta kartka? Bo nie widzę w ogóle czy to yocto/buildroot czy coś jeszcze innego.
Rozumiem, że już umiesz image odpalić na tej płytce, tak?
Tutaj masz ogólnie wiki do tych procków: https://wiki.st.com/stm32mpu/wiki/Main_Page

Do CAN, to czasami nie chodzi Ci o to? https://wiki.st.com/stm32mpu/wiki/CAN_overview

Ogólnie trochę chyba zbyt mocno 'softowo' do tego podchodzisz, ten linux jednak się lekko różni od takiego zwykłego na kompie.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)