"Sprzętowy" pin NSS w STM32 jest przydatny praktycznie jedynie w trybie SPI slave.
W module RCC masz rejestry odpowiedzialne za reset peryferiów (RCC_APBxRSTR)
No własnie o kmunikacji OBD2 i jej protokole znajdziesz dużo a o konkretnym protokole i adresach na przykład dla VAG juz niekoniecznie. Jak opanujesz sobie OBD2 to pogadasz z każdym sterownikiem silnika po 2003r. Co do podłaczeń to najcześciej w tych interfejsach USB tylko konwerter USB<>Serial jest z USB zasilany a wszystkie transceivery CAN...
Witam, Niestety natrafiłeś na ogólnie znany problem :-) I2C w stm32f103 jest po prostu ... nie działa najlepiej. Jeżeli dobrze pamiętam przy próbie odczytu nie ustawia mu flagi IV5 i można tak czekać i czekać. Jeżeli masz nowe biblioteki to spróbuj zmienić prędkość transmisji na 50kB. Jeżeli to nie pomoże to zostaje ci bitbanging :)
Dla F3 SPI2 na porcie B to AF5 a Ty masz AF6.
Witam, potrzebuję skomunikować ze sobą 2 układy przy pomocy I2C. Master - mikrokontroler STM32. Slave - czujnik. Problem w tym, że STM32 jest zasilany napięciem 3V. Natomiast czujnik: 4-5V. Czy aby zapewnić prawidłową komunikacją tych układów muszę stosować dzielnik napięcia? Czy wystarczy, że zastosuję rezystory podciągające podłączone do +3V? Bo o...
SLAVE nie powinien trzymać linii w nieskończoność. Powinien to robić tylko wtedy kiedy chce zatrzymać transmisję. Musisz się przyjrzeć oprogramowaniu SLAVE
Witam Mam do realizacji projekt na STM32 Nucleo F072RB. Polega on na komunikacji I2C master i slave. Komunikacja ma się odbywać na jednym mikrokontrolerze. Jestem totalnie początkującym w tym temacie i nie mam pojęcia jak to zrobić. Jak ustawić aby procesor był jednocześnie masterem i slave. Proszę o pomoc.
Jest gdzieś skrótowa dokumentacja do ustawień CubeMX, aby zaczynający programista się nie zniechęcił? Nawet jeśli korzystasz z CubeMX to zacznij najpierw od jakiejś literatury. "Poradnik Szczywronka" takie rzeczy dość łopatologicznie tłumaczy tzn. podstawy działania timerów (i nie tylko). Na pierwszym zrzucie mamy włączony OPM na drugim wyłączony....
Tylko, że Bit STOP jest opisany że działa jako tryb SLAVE...
Też stawiam na nieustawione piny SSM i SSI. Bez odpowiedniej ich konfiguracji procek od razu przełącza się na Slave.
Zapewne chodzi o sygnał Slave Select / Chip Select czy jakiś w tym guście. Cytat z datasheeta do FT311D: An SPI master interface transfer
Musze zaimplementować protokół w urządzeniu SLAVE (obsługa kilku najprostszych zapytań w protokole MODBUS). W sieci będzie podłączonych więcej niż jedno urządzenie SLAVE
Nie do końca, jeżeli Twój STM jest Masterem (a jest, bo to on rządzi żyroskopem :) ) to MISO ma być jako input floating albo input pull up Full duplex / Master -> Input floating / Input pull-up Full Duplex / slave -> Alternate function push-pull Simplex bidirectional data wire / Master -> Not used. Can be used as a GPIO Simplex bidirectional data wire/...
Zastanawiam się tylko po co sprawdzać to: [syntax=c]USART3 -> CR1 & USART_CR1_TCIE[/syntax] nie rozumiem powodu. Przecież to jest "This bit is set and cleared by software." Programista nie wie czy ustawił to przerwanie czy nie? Dodatkowo ten zapis: [syntax=c]if(( USART3 -> CR1 & USART_CR1_TCIE) && (USART3 -> SR & USART_SR_TC ))[/syntax] wygląda dość...
Dac ma SCL kilka taktów zegara. Jest to logiczne jezeli reset mastera nastąpi w trakcie transmisji slave - po prostu slave musi dokonczyć.
Użyj UART zamiast SPI. Slave SPI na STM32 nie jest zbyt wdzięczny w implementacji.
problem rozwiązany po wysłaniu danych na spi nie czekałem na zakończenie transferu
Szczegółowy opis peryferii zawarto w Reference Manual.
Czy jest techniczna możliwość wyłączenia wewnętrznego bootloadera? Zworka BOOT0 zwarta z GND. Piszę aplikację komunikującą się z PC za pomocą USART1 w trybie master(PC)/slave(STM32) i wszystko działa dobrze dopóki PC nie nadaje podczas startu STM'a. Szukam odpowiedzi na powyższe pytanie lub sposobu jak brak takiej możliwości obejść.
Próbowałem na I2c1 oraz na I2c2. FSMC akurat ten co ja mam STM32 to 103RBT6 więc nie posiada tego układu. Zobacz na załącznik, to jest fragment bo tylko tak mi się teraz udało. Widać że po 9 bicie układ nie potwierdza adresu, jak podłączyłem pod AVRa to samo to po 9 bicie było 0 a tu jest 1. Adres tego układu był ustawiony na 0b1100000x (x to oczywiście...
Czyli polaczenia tak jak na rysunku ? http://obrazki.elektroda.pl/8190930600_1... sytuacja bez transmisji: STM32 oraz AVR: SS, CS-uC oraz CS-SD jako wejscia z zewnetrznymi rezystorami pull-up teraz moje 3 sytuacje: 1) STM32 master <-> AVR slave STM32: linia SS wyjscie stan niski, linia CS-uC wyjscie stan niski, AVR: na SS wykrywa...
void i2c_send_start(u32 i2c) { I2C_CR1(i2c) |= I2C_CR1_START; } void i2c_send_stop(u32 i2c) { I2C_CR1(i2c) |= I2C_CR1_STOP; } void i2c_send_data(u32 i2c, u8 data) { I2C_DR(i2c) = data; } void i2c_send_7bit_address(u32 i2c, u8 slave, u8 readwrite) { I2C_DR(i2c)...
Nie pracuję w jakimś noisy environmencie :) timeouty próbowałem różne z resetem i dalej mam w kółko slave mode z zajętą linią :| Chyba, że pullup jest za mocny, ale coś nie wydaje mi się. A sprawdzałeś napięcie na linii? Start condition Setting the START bit causes the interface to generate a Start condition and to switch to Master mode (M/SL bit set)...
Wszystko masz ładnie wytłumaczone na stronie 707 (Master Mode). Może zegar za mały na I2C: The peripheral input clock frequency must be at least: 2 MHz in Standard mode 4 MHz in Fast mode Może nie nadajesz Start itp. Trudno powiedzieć pokaż więcej, a najlepiej skonfiguruj sam na rejestrach (jeśli tak nie masz) na podstawie tego rozdziału. EDIT....
Jest tu co prawda wiecej kanałów PWM (razem 12, z czego 4 w rdzeniu master i 8 w rdzeniu slave) STM32G474 też ma 12 kanałów Równorzędnych. Master jest ponad nimi. Narzędziem do wstępnej konfiguracji projektu, zegarów, peryferiów i przypisania pinów jest [url=https://www.st.com/en/development-t... Środowisk programowania i debugowania...
Może spróbuj inaczej (toszkę trikologicznie)- timer generuje zegar, slave wysyła dane a przez DMA odbierają się dane. Może to i zadziała, ale nie mam zadnego F4 podłaczonego do kompa, żeby sprawdzić inna metoda, która zadziała ale nie będzie to sprzętowy SPI - timer (w PWM generuje zegar), odpowiednie zbocze trygierzuje transmisje GPIO -> PAMIĘĆ. Problem...
(at)Piotrus - w zasadzie żadne (at)grko - tak, ma służyć tylko do testowania urządzeń typu slave (taki host ze snifferem)
https://obrazki.elektroda.pl/2759406900_... 8-bitowe mikrokontrolery nadal można znaleźć w wielu projektach, ale dzięki nowemu, niedrogiemu 32-bitowemu z rdzeniem AMR Cortex-M0+ taktowanym 48 MHz — STM32C0 — firma STMicroelectronics dąży do wyparcia 8-bitowych jednostek. Co może się odbyć wskutek: „ograniczonego wpływu...
TIM1 może generować żądanie DMA lub przerwanie co określoną liczbę okresów, niekoniecznie w każdym okresie. DMA może zmieniać parametry przebiegu. Na moje oko użycie drugiego timera niekoniecznie jest tu dobrym pomysłem
MOSI - (ang. Master Output Slave Input) - dane dla układu peryferyjnego MISO - (ang. Master Input Slave Output) - dane z układu peryferyjnego zastanow sie czy na pewno dobrze podlaczyles ?
Witam, Do mojego projektu zamierzam uzyc procesora STM32F217 oraz 2 przetwornikow CS5343 i CS4344 (akurat takie mieli w TME). Moje pytanie jest takie pod ktore piny mam podlaczyc linie od tych przetwornikow? Wiem ze moje pytanie moze sie wydawac laickie, ale nota dla stm-ow jest dla mnie nieczytelna. Dodam ze chce aby oba przetworniki pracowaly w trybie...
(at)kubamiszkiewicz Do takich rzeczy potrzeba jakiś program do debugowanie ramki i symulacji mastera/slave modbus. Potrzebujesz konwertera RS485/USB i np. programu ModbusViewTCP. Tutaj może być masa nakładających się błędów np. niewłaściwe parametry komunikacyjne, błędnie zarobiony przewód komunikacyjny, zapis/odczyt nieprawidłowych rejestrów ( trzeba...
Nie rozumiesz o czym piszę - dyskusja jest bezprzedmiotowa i do tego chamska z Twojej strony. Dodano po 3 AN nie jest procesorem a jak wiemy po erratach ST nie jest nieomylne. Jest glitch a przynajmniej niekonsekwencja (zależny od czasu jaki zajmuje slave-owi ponowne przejęcie magistrali po odczytaniu ACK. Jezeli ten czas sest dluższy niż wejscie do...
Jeśli STM32 ma być slave, to przy porządnym programowaniu, bez "pętli głównej", zawartość pierwszego bajtu ramki od master możesz mieć wpływ na trzeci bajt odsyłany w ramce do master. Jako pierwsze dwa odsyłaj cokolwiek, np. 0 lub FF. Trzeci wyślij w zależności od polecenia zawartego w pierwszym odbieranym. Procedury nadawnia io dobioru w przerwaniu...
Stawiam tezę, że to działa dokładnie tak jak projektant tego układu zaprojektował. Po włączeniu obu kanałów (normalnego i komplementarnego) możesz w obu z nich sterować polaryzacją. Niestety wyjście główne, wg mnie, jest nadrzędne w stosunku do komplementarnego. Po wyłączeniu wyjścia nadrzędnego, podrzędne przyjmuje stan przeciwny do tego jakie ma wyłączone...
W jaki sposób mogę rozpoznać koniec nadawania poprzez mastera, abym mógł slave-m wysłać do niego komunikat zwrotny? Najprościej wysłać na końcu ramki kod oznaczający "koniec nadawania". Lub jak napisano powyżej, użyj jakiegoś protokołu komunikacyjnego.
Nie wiem co znaczy Potrzebuję wykonać łącze USB w którym jakiś mikrokontroler będzie nadawał ramki, a drugi je odbierał i sprawdzał poprawność. USB potrzebuje urządzenie MASTER zwany w terminologi USB HOST, który to "dyryguje" całym ruchem na USB. Protokół USB jest dość skomplikowany - nie polega tylko na wysyłaniu "ramek". Odpowiedź krótka: Jeżeli...
Z tego Adresowanie jest 7 bitowe, I2C1 ma adres "4" a I2C2 ma adres "2" wynika, że nie do końca czujesz protokół I2C. W I2C jeden układ zawsze jest master, pozostałe są slave. Master NIE ma adresu - on inicjuje komunikację wysyłając w szynę adres tego slave'a, z którym chce pogadać. Slave odpowiada przez ACK, co dla mastera jest informacją, że na szynie...
PIC są o tyle fajne że maja dedykowane wejście zegara referencyjnego dla I2S A to nie jest standard? W STM32 też jest wejście zegara, można też przełączyć cały interfejs master/slave. W LPC (robiłem coś na lpc17xx) było podobnie (master/slave).
Witam, próbuję zmusić STM'a do działania jako monitor I2C pomiędzy jakimś master a jakimś slave. W pakiecie, pomiędzy start a stop transmitowane jest adres i 163 bajty danych, po każdym bajcie slave ładnie ustawia ACK do niskiego poziomu. Skonfigurowałem STM'a: [syntax=c] RCC->APB1ENR |= RCC_APB1ENR_I2C2EN; RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; RCC->APB2ENR...
Do slave wysyłam same zera I to jest oczywiście źle. Adres rejestru ma 6 bitów a pierwsze 2 bity transmitowane to R/W i MB. O nich zapomniałeś. Przy jednym bajcie - R musi być ustawiony MB wyzetowany. Tak więc musisz wysłać 0x80 a nie zero. DS-y trzeba czytać całe a nie tylko jedną tabelkę.
Witam Przygotowuję się do domowego projektu, w którym potrzebował bym wykorzystać komunikację master/slave do zbierania danych (z czujników) i sterowania (urządzenia wykonawcze). Zarówno urządzenie master jak i urządzenia slave chciałbym oprzeć na STM32 (dobry wybór?). Proszę o radę jaki najlepiej wykorzystać interfejs komunikacyjny, który w prosty...
Problem leżał po stronie analizatora - zmniejszenie częstotliwości próbkowania do 2Mhz usunęło przekłamania w wyświetlaniu stanów magistrali (sprawdziłem w debugerze - dane są odczytywane prawidłowo). To nie rozwiązanie problemu tylko jego zamaskowanie. Poprzez opóźnienie daje slave'owi czas na odpowiedź. Generowanie dodatkowych taktów też byłoby maskowaniem...
Fullduplex czy multimaster? Jak multimaster, to raczej szedłbym w kierunku CAN. Slave jest slavem, dlatego że nie pytany, nie gada, a skoro ma odpowiadać na pytania, to jest halfduplex. Arduino i Nucleo w większości przypadków są źle zaprojektowane, to nie są płytki referencyjne, nie ma żadnych badań. Tam nawet nie ma jak dobrze masę wyprowadzić. Kiedyś...
xairo czas się trochę poduczyć czytać dokumentacje, nie możesz liczyć ze wszystko dostaniesz na talerzu. "ZG2100M/ZG2101M incorporates Transmitted Data pin (UART0_TX) and Received Data pin (UART0_RX) for serial testing purposes." str.8 Wiec rs232 odpada jest tylko do testowania. "1.6. SPI Interface" i to cie interesuje jeśli nie wiesz co to SPI radze...
Ale zdajesz sobie sprawę z tego że wysyłanie w trybie slave jest tylko w momencie gdy master daje swój zegar i chipselect?
Witam. Chciałem zrobić ekstremalnie uproszczonego modbusa RTU Slave na STM32. Tz w przerwaniu od RX jeśli pojawi się adres mojego urządzenia (Slave) to odrazu wyślij ramkę w postaci: adres,funkcja,ilosc_danych,dane,CRC16. Czy z punktu widzenia modbusa stanowi jakiś problem to uproszczenie ? Dodano po 24 Działa :) Dodano po 33 Tylko pytanie dlaczego...
Przecież jak zaznaczysz je jako General Purpose CNF Bit 9 SSM: Software slave management When the SSM bit is set, the NSS pin input is replaced with the value from the SSI bit. 0: Software slave management disabled 1: Software slave management enabled Próbowałeś tego, jak wisi w powietrzu i masz ustawiony jako slave (chyba)? Chyba, że jako...
Witam, mam pytanie odnośnie portu USART w STM32. Projektuję płytkę, na której ma znaleźć się komunikacja po RS485. Chciałbym się dowiedzieć, czy włączenie linii RTS (CTS) portu UART będzie umożliwiało sprzętowe sterowanie przepływem na porcie RS485 (Master/Slave). PS. Oczywiście wiem, że sterowanie programowanie z użyciem GPIO też jest możliwe.
Witam. Łącze ze sobą IMU na MPU6050 po I2C z stm32f100rb. I2C jest skonfigurowane, funkcja testowa komunikacji zwraca pozytywną wartość. 60 razy na sekundę wywołuję sobie funkcję : [syntax=c]void mpu6050_updateQuaternion() { int16_t ax = 0; int16_t ay = 0; int16_t az = 0; int16_t gx = 0; int16_t gy = 0; int16_t gz = 0; double axg = 0; double ayg = 0;...
Jeszcze pamiętaj o tym ze jak slave bedzie trzymać magistralę to samo wykrycie time-outu nie wystarczy, musisz recznie dokończyć transmisję.
Na zapas dodam, że timery w niektórych STM32 wymagają ustawienia bitu OPM przed CEN (a nie równocześnie, jak by na to wskazywał zdrowy rozsądek). Próby radziłbym zacząć od konfiguracji bez slave mode. Po uruchomieniu OPM, bierz się dopiero za slave.
To jest z przykładu dołączonego do noty: [syntax=c] #define OAR1_ADD0_Set ((uint16_t)0x0001) Status I2C_Master_BufferWrite(I2C_TypeDef* I2Cx, uint8_t* pBuffer, uint32_t NumByteToWrite, I2C_ProgrammingModel Mode, uint8_t SlaveAddress ) { ... else if (Mode == Polling) /* I2Cx Master Transmission using Polling */ { Timeout = 0xFFFF; I2Cx->CR1 |= CR1_START_Set;...
Witam ponownie Przerobiłem trochę kod i teraz rzeczywiście odczytuje dane z wszystkich czujników no ale jest jedno ale..... Częstotliwość odczytywania danych jest znacznie mniejsza niż być powinna. [syntax=c]while(1) { if(50<licznikCzasu && I2CInProgress == 0) { licznikCzasu=0; I2CInProgress=1; I2CToWrite = 1; if(licznik%3==0) { SlaveAddress...
Analiza dla mastera: Jeżeli transfer DMA (any) jest wyzwalany przez SPI, który nie jest włączony, lub nie jest skonfigurowany, to nie ma miejsca na OVR. Będzie błąd DMA, który jest błędem aplikacji. Jeżeli transfer DMA (single) jest wyzwalany przez włączony i skonfigurowany moduł SPI, to nie ma miejsca na OVR. Request jest generowany w momencie pojawienia...
Witam, przeglądając reference manual nie znalazłem informacji o możliwości pomiaru 3 przetwornikami jednocześnie. Jest napisane tylko o trybie dual (str.226) z ADC1 jako master i ADC2 jako slave, nie ma info o trzecim przetworniku. Czy mógłby ktoś to zweryfikować?
Ok, dzięki. Jeszcze powrócę do problemu z wczorajczego tematu (zamkniętego). O co chodzi z tym I2C, co takiego dzieje się z ustawieniami rejestrów, że jeżeli samo uruchomienie I2C (I2C1->CR1 |= I2C_CR1_PE;) jest na końcu - nie działa. Doszedłem do tego, że musi być przed ustawieniem bitu ACK_ENABLE (robie to bitbandingiem ACKEN_bb=1; ). Jeżeli ustawię...
Trigger to jest zewnętrzny sygnał - np. inny timer (master) taktujący Twój timer (slave). Nie używasz tego trybu. Update to po prostu "przekręcenie" licznika, tyle że nie tylko - szczegóły w manualu. 4\/3!!
Jeśli np. Główny uC łączy się z uC slave po i2c,SPI, itp i chcę mu wyłączać zasilanie mosfetem, to może być problem? Oczywiście. Tylko jeśli zasilasz ten drugi procesor z tego samego zasilania co ten główny (3,3V) to powinieneś użyć samego tylko mosfeta P (na linii plus) bez układu przesuwającego. Dodatkowo jest wskazane by na czas wyłączenia zasilania,...
Witam, Spróbuj tak: [syntax=c]//Konfiguracja Timera 3 jako slave TIM3->PSC = 1; TIM3->EGR = TIM_PSCReloadMode_Immediate; // update PSC TIM3->PSC = 1; //.. reszta tak jak było [/syntax]
dopiero gdy faktycznie zostanie odebrane 8 bitów Co to znaczy? Przecież zegar wystawia master a nie slave, więc skąd wie że slave w ogóle cos nadaje? Po prostu przy każdym narastającym/opadającym zboczu zegara (zależnie od ustawień) czyta pin MISO nawet nie wiedząc czy jest on gdziekolwiek podłączony. Wystawia 8 taktów i zamyka transmisję i nadawczą...
Właśnie oglądam przebiegi na oscyloskopie i wychodzi na to, że na pinie MISO pojawia się stan wysokiej impedancji po odbiorze jednego bajtu. CS jest generowany tak jak powinien, zegar także jest ok. Jak odłączam przewód od układu slave i sprawdzam na pinach tegoż slave'a to przebieg wygląda ładnie więc wnioskuję, że to STM jest winowajcą. Może jakieś...
Jeśli dobrze zrozumiałem dokumentacje to tryb slave (inaczej klient) to ten, który wysyła zapytanie o parametr do mastera (serwera) i dostaje odpowiedź? To źle zrozumiałeś.
Działa, dziękuję bardzo, poszperałem jeszcze trochę po innych tematach, nie wiem skąd w kodzie wzięło się I2C2 8-O Działające funkcja wysyłania: [syntax=c]void i2c_write(uint8_t slave_adress, uint8_t *data, uint32_t lenght) { uint32_t dummy = 0; I2C1->CR1 |= I2C_CR1_START; //send START (S) ///EV5 while (!((I2C1->SR1) & I2C_SR1_SB)); //wait for generating...
Jeśli magistrala jest przeciążona to nie występuje na niej 'brak danych'. Idle to jest 10 sampli jedynek pod rząd i faktycznie występuje jesli magistrala jest w danym momencie bezczynna - ale nie występuje, jak jest przeciążona. To o czym mówisz ma sens tylko przy transmisji synchronicznej, gdzie nadawca wysyla kompletna ramke i czeka na ACK od odbiorcy....
Poszukuje sprawdzonego kodeka dla STM32F105. Magistrala I2S, 16 bit. Jednocześnie będzie używany ADC i DAC przy próbkowaniu 8kHz. Najlepiej aby kodek pracował jako master. Wymaganie: obudowa musi mieć nóżki (czyli QFN i BGA odpadają). A i musi być do kupienia w PL :) TLV320AIC23 troche leciwy i drogi, używałem go i chce spróbowac czegoś innego. TLV...
Chyba coś średnio, bo mówiłem, że mieszasz kontrolę software'ową z hardware'ową i dalej tak masz. Skoro sterujesz pinem SS ręcznie, to powinieneś bit SSM ustawić i do tego jeszcze ustawic bit SSI. U siebie mam ustawione tak jak poniżej, tyle że korzystam z DMA. [syntax=C]io_pin_cfg(GPIO_SPI_MISO, SPI_MISO_pin, m_GPIO_MODE_CNF_value(GPIO_CRx_MODE_IN_v...
Do slave napewno pytanie dochodzi bo to sygnalizuje. Sygnalizuje również odpowiedź . Teraz sprawdzam tak: 1) Przed RS485 na MAX485 podglądam co jest na DI i rzeczywiście zgadza się wysłana ramka. 2) Przed RS485 na MAX485 podglądam co jest na RO i tam jest cisza. Narazie w ogsługę w STM nie ma co wnikać bo dane muszą się dopiero pojawić z RS485 na pinie...
Witam Od niedawna zabieram sie za poznanie i2c. Przyznam że sprawia mi ono troche kołopotu. Drodzy forumowicze chciałbym się zapytać odnośnie jednej sprawy, którą znalazłem w książce "STM32 w praktyce". Mianowicie chodzi o poniższy fragment kodu. Posiadam urządzenie o adresie >7bitow i mam problem. W ww. ksiązce zastosowano fragment: http://obrazki.elektroda.pl/2479773100_1...
Witam, próbuję napisać odczyt wartości z akcelerometru MMA8451 z płytką STM32F4Discovery w środowisku CooCox 1.7.8. Interfejs komunikacyjny jest to I2C. Adresu slave'a jestem pewien (sprawdziłem pod RPi2 i wykryło mi go poprawnie) aczkolwiek nie wiem czy dobrze zinterpretowałem notę katalogową odnośnie sposobu odczytu. Poniżej zamieszczam też mój kod:...
Tylko proszę nie krzyczeć, że nie korzystam ze Standard Peripherial Library. Na razie wstępna wersja wygląda tak. Proszę mi wierzyć na słowo, że bity poustawiane są dobrze. Kod inicjalizujący: /* ------------------ Inicjalizacja SPI2 ------------------ */ // Ustawienie portow (PB13 - SPI2_SCK Alternate function push-pull, PB14 - SPI2_MISO Input...
Wszystkie piny I2S łącznie z MCLK podłącza się tak samo jak w trybie master, trzeba tylko I2S skonfigurować do pracy w trybie slave. Jednak czytając errata sheet odnośnie pracy I2S w trybie slave, to stosowanie tego trybu jest problematyczne w tych prockach.
Kod tylko w SRAM1, dane mogą być gdziekolwiek. do sram2 i sram3 rdzeń może dostać się przez S-BUS (poza kodem programu w ram) Wszystko jest opisane w dokumentacji pod obrazkiem który jest w pierwszym poście. np.: 2.1.3 S-bus This bus connects the system bus of the Cortex ® -M4 with FPU core to a BusMatrix. This bus is used to access data located...
TIM2 nie wywołuje żadnego przerwania Włączyłes przerwania od TIM2 w CubeMX? Wystartowałeś TIM2 funkcją "_IT"?
Witam, mam problem z odbieraniem danych przez i2c z użyciem mikrokontrolera stm32f103. Sytuacja wygląda tak, że potrafię przesyłać dane po i2c, (wysyłam adres, czujnik odpowiada, wysyłam mu komendę wykonania pomiaru, wiem że go wykonuję ponieważ wtedy "mruga" diodą), niestety mam problem z odbieraniem danych. Testowałem już wiele funkcji z sieci, ale...
Witam chciałem wykorzystać DMA do odczytywania wartości z akcelerometru poprzez I2C. Na stronie ST udostępniono przykładowy kod wykorzystujący DMA. Poniżej udostępniam przykład funkcji wysyłania danych. No i niby wszystko rozumiem, oprócz jednej podstawowej rzeczy. W którym miejscu jest to niby szybsze niż zwykły transfer poprzez i2c, tzn. wysyłanie,...
SPI w STM32 wg mnie ma buga w silikonie. Nie da się stwierdzić programowo momentu w którym SPI kończy wysyłanie. Flagi nie odzwierciedlają stanu w którym bufor nadajnika jest pusty, ale nadajnik jeszcze nadaje. Nie jest to problemem gdy transmisja SPI jest szybsza niż obieg pętli nadawania. Jednak gdy nadawanie jest wolne, to może się zdarzać że interfejs...
Ja na samym początku przerzucam wektory przerwań na początek pamięci RAM. A później wstrzykuję swoją funkcję w miejsce oryginalnego wektora. Po rozmyślaniu na ten temat doszedłem do następujących wniosków. 1. Możliwość dynamicznej rejestracji przerwań (najlepiej w wysoce abstrakcyjny sposób, tak aby funkcje nie musiały być publiczne) byłaby z pewnością...
Jedyne co potrzebujesz, to wygenerować start, wysłać adres i jeżeli jest ACK, to włączyć DMA. Włączenie DMA przed wygenerowaniem bitu START, a tak teraz robisz, nie zadziała. Nie widzę też sprawdzania czy adresowany układ odpowiedział przez ACK. [syntax=c] i2c->I2Cx->CR2 |= I2C_CR2_DMAEN; i2c->I2Cx->CR1 |= I2C_CR1_START; //send START while(!(i2c->I2Cx->SR1...
Od pewnego czasu zmagam się z problemem uruchomienia SPI2 w trybie slave. Założenia komunikacji są następujące: - SPI pracuje w trybie slave - Transmisja jednokierunkowa - tylko odbiór - Zegar, dane oraz linia sterująca CS podawane są z innego układu master - SPI ma obsługiwać sprzętowo linię CS - SPI ma zapisywać odebrane dane za pomocą DMA do wybranego...
Witam, mam dziwny problem z komunikacją I2C. Przed stworzeniem tematu przetestowałem przykłady użycia I2C udostępnione przez ST (komunikację I2C1 z I2C2 itp.) i wszystko było ok, niestety pod drobnych zmianach i podłączeniu RTC DS1307, uC nie może się z nim skomunikować. Nie wiem w czym jest problem, a siedzę już nad tym ze 2 dni, więc prosiłbym żeby...
To ja chyba nie rozumiem jak ten twój układ działa. Sądziłem że cały cykl pracy zaczyna się od sygnału sck i nie ma znaczenia z jakiego źródła co jest taktowane. Czyli tak jak w klasycznej komunikacji po spi byle by nie przekroczyć maksymalnej częstotliwości taktowania jaką slave jest wstanie poprawnie zinterpretować. Całość była liczona dla 750kHz...
Dzięki za szybką odpowiedź. Problem był w kodzie Javy (j2mod). Wrzucam poprawiona wersje [syntax=java]Register [] regs = new Register[10]; regs[0] = newReg; regs[1] = newReg1; regs[2] = newReg2; regs[3] = newReg3; regs[4] = newReg4; regs[5] = newReg5; regs[6] = newReg6; regs[7] = newReg7; regs[8] = newReg8; regs[9] = newReg9; writeMultipleRegistersRequest...
Często tak jest że jak coś człowiekowi nie idzie to zaczyna się miotać, ustawiałem AF ale rzeczywiście w tym kodzie tego nie ma, chciałem Ci pokazać więc właściwy ale kod o zgrozo zadziałał. [syntax=c] RCC_Configuration(); /*!< I2C Periph clock enable */ RCC_APB1PeriphClockCmd(I2Cx_CLK, ENABLE); /*!< SDA GPIO clock enable */ RCC_AHBPeriphClockCmd(I2Cx_SDA_GPIO_CLK,...
Mam teraz podobny problem. Można wiedzieć co było problemem? Nie wiem na ile TWI w Xmega różni się od tego w Mega, ale w Mega był słynny problem statusu 0xF8. Na ten status można było trafić gdy: - slave blokował SDA - rezystory podciągające były niepodłączone - zwarcie magistrali Jeśli slave blokował magistralę, to należało: - odłączyć TWI - wygenerować...
Kod: [syntax=c] /************************* * stm32 uart main.c *************************/ #include "stm32f10x.h" #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include "stdint.h" #include "misc.h" #define CLK_FREQ 36000000 /* User defined function prototypes */ void GPIOA_Init(void);...
A dlaczego linia MISO nie jest włączona jako AF? W ten sposób pozostaje odłączona od modułu SPI. AF PP przypadkiem nie może byś ustawiane tylko dla wyjść? Stm w moim przypadku jest masterem. Znalazłem gdzieś na internecie: Full duplex / Master -> Input floating / Input pull-up, Full Duplex / slave -> Alternate function push-pull. W samym cube nie mam...
Komunikacja bezprzewodowa dla urządzeń Internetu Rzeczy staje się coraz bardziej powszechna. Jednym z standardów, który można wykorzystać w IoT jest LoRa. Standard ten charakteryzuje się stosunkowo niskim zużyciem energii oraz bardzo dużym zasięgiem. https://obrazki.elektroda.pl/4539068700_... Powyżej możecie zobaczyć moduł SX1278 wraz...
Witam. Potrzebuję odpowiednio skonfigurować interfejs SPI. Dane odbieram z przetwornika ADC ADS1274. Potrzebuję odebrać dane z trzech kanałów. Trzy kanały (3x24bit) są wysyłane szeregowo na jeden port SPI (ADC jest slavem). Istnieje możliwość odebrania danych równolegle z trzech kanałów, jednak wolę wykorzystać opcję szeregową. Dane wysyłane są dosyć...
Transmisja polega na tym że wysyłam 6 bajtów ale odbieram tylko 1 bajt I problem polega na tym, że powinno być odebranych 6 a jest jeden, czy na czym? Wygląda to tak że wysyłając pierwszy bajt jednocześnie muszę odczytać jeden. Pozostałych Slave nie wysyła, pojawia się na MISO stan H. (po MISO leci 6 bajtów) Musisz coś wysłać aby coś odebrać. 1. jak...
Rozumiem, że mają tą samą podstawę czasu (preskaler i ARR), dlatego interpretowałem to w taki sposób, że rozróżnieniem dla poszczególnych kanałów jest właśnie wartość Pulse. W dokumentacji biblioteki HAL (podrozdział 65.1.2 str 868) w konfiguracji Output Compare nie widzę nic odnośnie połączenia kaskadowego dla timera. Natomiast w dokumentacji procka...
Dołączę się do tematu ze swoim problemem z SPI. Przy pomocy tego i innych tematów udało mi się skonfigurować SPI do wysyłania danych. Podglądając przebiegi na liniach SCK i MOSI widzę, że wszystko ładnie się dzieje. Problemem jest natomiast odbiór danych. Z tego co zauważyłem na przebiegach poniższy kod nie generuje tylko sygnał SCK pozwalający na wysłanie...
OK udało się rozwiązać problem. Błędem było sprawdzania flagi TCR w pętli, jak ona jest ustawiana po wysłaniu wszystkich bajtów. Poniżej poprawny kod: [syntax=c] void I2C_HW_tx(uint8_t i2cAddr, uint8_t *dataTx, uint8_t length, uint8_t stopOrNotWhenSent) { if (stopOrNotWhenSent == STOP_WHEN_SENT) { I2C_TransferHandling(I2C_PERIPH, i2cAddr, length, I2C_AutoEnd_Mode,...
Jakieś małe opóźnienie i kolejny raz sprawdzenie stanu No przecież po to Ustawilem przerwanie co 30ms. To jest właśnie opóźnienie, którego potrzebujesz :) W kolejnych wywołaniach tego przerwania sprawdzasz sobie stan poprzedni i porównujesz z bieżącym. Jeśli są takie same, to uwzględniasz zmianę. Dodano po 8 Ewentualnie spróbuj podejścia z filtrami...
Jest to panel 32x16 z multiplexem 1 z 4 Wg mnie powinieneś spokojnie to zrobić całkowicie sprzętowo pod warunkiem, że masz swobodę w użyciu pinów oraz do dyspozycji odp. ilość kanałów DMA. 1. Podstawa to sygnał OE powinien być generowany jako np. fast PWM. Użyć któryś z kanałów licznika i uruchamiać licznik w trybie master. Sterując wypełnieniem tego...
Witaj kolego. Ja używam Linuxa Ubuntu i poczytałem conieco na temat USB i np mikrokontrolera STM32 jak co się odbywa. W USB jest tak jak podłączasz slave-a np. pendrive, USB->RS232 czy mp3-kę to jedna z linii przesyłowych D+ jest podciągana w slave-a do plusa 3.3V. Przy podłączaniu master wychwytuje to podciągnięcie i zaczyna wysyłać do urządzenie...
Witam ponownie, Ja znów z problemem :D otóż do większego projektu potrzebuję obsługiwać 2 max31855. uruchomiłem to na szybko na arduino pomijając fakt że termopara nie zgrywała sie z max'em ale zmieniłem wzmocnienie + mały shift i woda gotuje się w 100C a zlewka z lodem ~1-3, pokojowa natomiast jest na internal i TC taki sam. Wracając do meritum: Całość...
Witam, .... Ustawiłem adres PCF na A0 (write) natomiast pin E0 eeproma na 1, czyli pamięć ma adres A8, więc nie ma mowy o konflikcie adresów. Masz na myśli pin A0 EEPROM-a ? Jeśli tak, to jego SlaveAddr jest 0xA2 a nie 0xA8. Pozdrawiam, QuadMan.
https://obrazki.elektroda.pl/5099522300_... Jakiś czas temu zrealizowałem pewną konstrukcję, jaką jest kamera Pan Tilt na Raspberry Pi. Z racji tego, że jest to forum traktujące o elektronice skupię się właśnie na takich aspektach. Zanim zacznę opiszę architekturę systemu, czyli co z czym się łączy i jakie komponenty wchodzą w jego...
slave output atmega slave attiny2313 slave
z18xe wymiana silnika napełniania syfony zestaw naprawczy pompa
Polecane zasobniki CWU 300 l biwalentne: Galmet, Viessmann, Vaillant Schemat elektroniczny Saeco HD8839 - czerwone podświetlenie nie działa