Wpis z mikrobloga

#stm32 #arduino

Nazwijcie mnie debilem, ale nie mogę sobie poradzić xD Mam Arduino Mega 2560 i STM32 Nucleo L476. Chcę je skomunikować po czymkolwiek innym niż UART, nwm k---a I2C, SPI, cokolwiek. Arduino ma być masterem, STM ma być slavem.

STMa konfiguruję kjubem. Przeglądałem przykłady dostarczone z Cubem i już mnie c--j strzela. Wysyłam z arduino co sekundę po SPI jakiegoś hello worlda, a na STMie używam HAL_SPI_Receive i albo lecą timeouty (w ogóle chciałem na przerwaniach to robić, ale najpierw chcę w ogóle coś dostać, więc na razie niech już będzie polling), albo jak już dostaję status HAL_OK, to w buforze mam jakieś śmieci.

Po I2C nawet coś tam dostałem, ale też kiepsko to wygląda. Pomóżta, plox.
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@wtf2009: jeżeli chodzi o to to w sumie napisałem sobie swój skaner i arduino widzi doskonale tego stma, gorzej z transferem czegoś sensownego.

@morsisko: oscyloskop mam tylko w robocie :/ Ale już piąteczek piątunio to sobie mogę.
  • Odpowiedz
@zwei: najlepiej jakbyś miał analizator i wtedy wpinasz do niego te 4 sygnały od SPI i widzisz co się dzieje, tak to możemy jedynie zgadywać, może coś więcej powiedz, na jakich pinach na stmce spi odpalasz, może jakiś głupi błąd
  • Odpowiedz
@knifeman: yup.
@karololo: Bardziej mnie interesuje I2C w zasadzie. No wiadomo, że by się przydał, ale nie mam niestety :<

Piny raczej ok. Nawet się tak złożyło, że SCK jest na pinie podpiętym do LEDa na nucleo, więc widziałem że coś tam się dzieje w odpowiednim czasie.
  • Odpowiedz
Dobra kurde, nie wiem, w czym tkwił problem, ale w końcu się udało dostać coś po I2C. Teraz pora na przerwania i tutaj pewnie będą kolejne schody, bo z poprzednich prób wynika, że po transferze stm w ogóle nie wywołuje callbacka.
  • Odpowiedz
@zwei: A dummy byte wysyłasz?
Btw: Miej trochę rozumu i godności człowieka i nie korzystaj z HALa - weź dokumentację i zgodnie z nią poustawiaj biciki.

Dodatkowo sprawdź czy masz dobrze piny ustawione - czy przypadkiem nie mają być na "Alternate" zamiast "output". Do tego pull-upy powyłączaj.

Z tego co pamiętam to ST dostarcza w swoich bibliotekach sporo przykładów do konkretnych wersji płytek - myślę że warto
  • Odpowiedz
nie korzystaj z HALa


@weller: jak opanuję dobrze HALa, to może i tak zrobię xd na razie zaspokaja moje potrzeby i nie mam ambicji n-------ć asemblera z dokładnością do jednego cyklu zegara, chociaż jak się znudzę HALem, to tego nie wykluczam
  • Odpowiedz
@zwei: standardowo w I2C - pullupy 10k na SDA i SCL masz. Poziomy logiki się zgadzają (STM tylko 3.3V, w arduino zależy od modelu). Możesz jeszcze magistralę na niską prędkość ustawić 100kHz lub mniej. Zasadniczo jak to jest to musi działać.
  • Odpowiedz