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.
@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
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.
@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
@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
@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ć.
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_Receivei 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ę statusHAL_OK, to w buforze mam jakieś śmieci.Po I2C nawet coś tam dostałem, ale też kiepsko to wygląda. Pomóżta, plox.
@morsisko: oscyloskop mam tylko w robocie :/ Ale już piąteczek piątunio to sobie mogę.
@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.
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
@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