Kanal nadal nie ustawiony, zły kierunek transmisji.
Zacznij od określenia protokołu transmisji - w jaki sposób będziesz przesyłał te dane (znakowo/binarnie), jaka jest ich długość, po czym program może je rozpoznać, czy i jak sprawdzać poprawność transmisji. Zastanów się nad strukturą oprogramowania - same przerwania, RTOS, czy (w ostateczności) jakaś pętla zdarzeń? Potem dopiero planuj programową obsługę...
dlaczego ta instrukcja nie działała jak dodałem średnik na końcu tej linijki while((SPI1->SR & SPI_SR_BSY) == 0) ,a jak go usunąłem to zadziałało? Bo `while (warunek);` jest tożsame z `while (warunek) { /* kompletnie nic */ }`. Jeśli dasz średnik, to następna linijka _NIE_ jest częścią pętli while, tylko po prostu jedną instrukcją która się wykona...
To ja się już pogubiłem. Czyli jak z termminala PC naciskasz 1 znak przychodzą Ci 2 takie same na terminal ? Nie masz zaznaczonej opcji automatycznego echo ?
Nie pamiętam już z czego dokładnie to wynika, ale prawdopodobnie właśnie ze zdefiniowanych pól w sterownikach od windows. Podejrzewam, że modyfikacja plików sterowników nie będzie aż tak trudna, tylko jest wada - potem ten sterownik trzeba dostarczać klientowi. Najwięcej informacji znajdziesz w specyfikacji USB (mało czytelne) jak również (ze wskazówkami...
Spróbuj alternate output push-pull - mówię całkiem serio. U mnie działa "po ludzku" - tak jak masz, ale niektórzy na forum tu pisali, że działa im tylko jak WEJŚCIE jest na alternate output ustawione... 4\/3!!
O podwójnym buforze zapomnij w takim przypadku. Przerwanie od końca transmisji i rekonfiguracja. DMA2D?
Pisałem gdzieś jak się je włącza, na co Freddie napisał, że są funkcje w CMSIS, które z resztą na forum też już wklejałem. [syntax=c]/** * (at)brief Enable Interrupt in NVIC Interrupt Controller * * (at)param IRQn The positive number of the external interrupt to enable * * Enable a device specific interupt in the NVIC interrupt controller. * The interrupt...
Nie jestem do końca pewien czy to może sprawiać problemy, ale ja ustawiam pin RX jako "Input_PullUp" a nie "floating". A poza tym jaki sterownik linii stosujesz (TJA czy coś innego)? Może nie zezwoliłeś na transmisję na poziomie sterownika?
Najpierw zrób tak aby działało samo nadawanie, pokaż jak w CubeMX to skonfigurowałeś. Dopiero jak będziesz mieć pewność, że na 100% dobrze wysyłasz uruchom odbiornik. Tylko aby nadawanie działało musisz ustawić w CubeMx (na czas testów bez podłączonego odbiornika) opcję Loopback (wtedy STM sam sobie w środku wysyła potwierdzenie odebrania danych, inaczej...
Zapis i odczyt jest realizowany w tym samym cyklu. Odczytanie rejestru DR nie wymusi transmisji.
To jak muszę ustawić port w STM32 dla poprawnej transmisji 8E1 ?
Spróbuj tak: [syntax=c]void startUSARTDMATransferTx(uint8_t * buffer) { DMA1_Channel4->CCR &= ~DMA_CCR1_EN; DMA1_Channel4->CMAR = (uint32_t)buffer; DMA1_Channel4->CNDTR = BUFFER_SIZE; GPIO_SetBits(GPIOA, GPIO_Pin_8); USART1->SR &= USART_FLAG_TC; DMA1_Channel4->CCR |= DMA_CCR1_EN; }[/syntax]
[syntax=c]void MIDImessage(byte command, byte data1, byte data2) { uint8_t data[3]; data[0] = command; data[1] = data1; data[2] = data2; HAL_UART_Transmit_IT(&huart2, data, sizeof(data)); }[/syntax] Pamiętaj transmisja jest wykonywana w tle.
Rozwiązanie jest zupełnie gdzie indziej... Wystarczy sprawdzać bit TC, a nie TXE. Te (i inne) sekrety są w stosownym manualu. 4\/3!!
A nie jest po prostu tak, że wysyłasz adres bez przesunięcia go o 1 bit (albo z niepotrzebnym przesunięciem o 1 bit)? To że 7-bitowy adres urządzenia wynosi 0x68 nie znaczy jeszcze, że dokładnie taką wartość trzeba wpisywać do rjestru I2Cx->DR, ponieważ najmłodszy bit wpisywanej tam wartości wybiera kierunek transmisji.
Kontrolny to zawsze kontrolny ;] Czyli EP0. Zgaduję, że deskryptor jest ok, ale obsługa pakietów SETUP na EP0 nie jest pełna i przez to nie obsługujesz Class Specific Requests dla CDC. Musisz dopisać/dokleić obsługę kolejnego interfejsu do już istniejącej. Nie sprawdzałem Twojego projektu, ale ogólnie layout będzie mniej więcej taki: EP0 - ep kontrolny...
A skąd wziąłeś krasnoludka, który pilnuje, żeby GPS rozpoczął transmisję wiersza po zaprogramowaniu DMA i drugiego, który pilnuje, żeby wszystkie wiersze miały po 99 znaków? Ja też chcę takie dwa krasnoludki! Pardon, zapomniałem o trzecim krasnoludku - tym od zerowana bufora danych przed transmisją.
Może pokaż cały kod. Poza tym, przerwania mogą być tak szybko wywoływane, że przy debuggingu się one gdzieś zgubią (bo nie odbierzesz wszystkich znaków z bufora a już przyjdą następne znaki). Mówisz, że nie działa w ogóle, więc może posprawdzaj flagi transmisji ?
(at)obywatellutzek Jeśli musisz to użyj np. transceiverów do rs485. Jeżeli t jest jakaś pojedyncza taśma w normalnym, niezaszumionym środowisku, to można się pokusić o puszczenie tego na żywioł. Kwestia jak często odświeżasz te LEDy? Czy dopuszczasz jakieś przekłamania? Jeśli wyświetlane efekty są dynamiczne, to nawet jeśli od czasu do czasu będzie...
Jak SCL jest w stanie niskim (aktywnym), to jak chcesz "do-clock-ować", jeżeli linia nie może wrócić do stanu wysokiego? Jedyne rozwiązanie, to ograniczenia czasowe w programie układu podrzędnego, który wymusza niski stan na SCL. Wysłanie impulsów na linię SCL odblokuje SDA, kiedy układ podrzędny wystawił stan niski w chwili zerwania lub zakłócenia...
Oczekiwanie na flagę TXE nie gwarantuje że transfer się zakończył (bo co ma pusty bufor do idącej w tym czasie transmisji?) - do tego służy flaga BSY. 4\/3!!
Globalne definicje przekazuje się przez kompilator, odpowiednimi parametrami. Powiem Ci w sekrecie, że wszelkie poszukiwania błędów w kompilatorze, szczególnie z takimi trywialnymi sprawami, są z góry skazane na śmieszność, tak więc to czy brnąć dalej w zaparte to już Twoja decyzja. Co z tego, że ty sobie w main.c zdefiniujesz, skoro pliki od UARTu...
Z płytką nic się nie stanie. Ale pomysł używania linii z wiszącą na niej diodą jako komunikacyjnej jest słaby. Czy możesz wytłumaczyć dlaczego jest to słaby pomysł? Co złego może się stać lub nie działać? Pytam z ciekawości, ponieważ chyba wszystkie płytki Nucleo 64 mają na linii SCK przypiętego LED'a. Jeszcze nigdy nie zauważyłem negatywnych efektów,...
Przedstaw sobie parametry w logic to ci zdekoduje. Wszystko działa. Zbocze i polaryzacja - to się w parametrach transmisji ustawia.
Problem rozwiązany! Choć to dziwne to okazało się, że zadeklarowałem zbyt duże bufory transmisji w STM32. Zmniejszenie ich rozwiązało problem. Ciekawe tylko czemu terminale nie mają z tym problemu... Dziękuję za pomoc
Teraz wszystko jasne, dzięki!
A przy jakiej szybkości transmisji chcesz to robić? USB 1.1 ma 1.5 i 12 Mbit/s, USB 2.0 480 Mbit/s, USB 3.0 5 Gbit/s. Co szybsze AVR obsłużą tę najwolniejszą. Ale jest sniffer software-owy... Dane nie powinny być takie same - przecież zawierają informację identyfikującą urządzenie, pewnie jeszcze numery pakietów - i te informacje trzeba dostosować dla...
Dlatego właśnie każdy z nas pisze Ci tu o dwóch buforach na dwa komplety próbek, albo o jednym o podwójnej pojemności - czytaj!!! Czytam czytam. Na razie rozumiem to w ten sposób: Generuje przerwanie od Timera co 25µs: 1 przerwanie - próbkowanie 1 kanału i transmisja DMA do tablicy 1 2 przerwanie - próbkowanie 2 kanału i transmisja DMA do tablicy...
Jak już pisałem, schemat układu jest powyżej i tylko przy transceiverach są terminatory (czyli łącznie 2). Chcę zrobić transmisję między STM32F401 i PC, ale nic nie odbiera. Za to mogę odbierać transmisję z STM.
Cześć, Pracuję nad projektem, w którym wykorzystuję zapis danych na kartę SD/SDHC. W skrócie: - transmisja do STM32 co 64ms 400B danych - zapis danych na kartę SD Wykorzystuję system plików FAT więc co 64ms trzeba wykonać conajmniej kilka zapisów na kartę SD. Wszystko jest OK ale co kilka tysięcy bloków karta wykonuje zapis bloku który trwa 200ms !!!...
0. Skasuj flagi TCIE, HTIE, TEIE, DMEIE w rejestrze DMA_SxCR lub odpowiednim DMA_xIFCR. 1. Ustaw CCR1_EN w odpowiednim DMA_SxCR. Kolejna transmisja powinna zostać rozpoczęta. Poszczególne strumienie pozostają w ostatniej konfiguracji, łącznie z adresami.
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 :)
Głupia sprawa... na stm32 nic jeszcze nie robiłem... nie mogę znaleźć w dokumentacji i internecie, a czasu mało... czy jeżeli używam interfejsu UART bez kontroli transmisji, to czy linie RTS i CTS (a także CK) tego interfejsu mogę używać jako standardowe linie IO (lub wykorzystywać inną funkcję alternatywną z ową nóżką związaną), czy raczej tak, czy...
Przeglądając źródła, które Pan podesłał spodobał mi się sposób programowania wykorzystujący mbed.h . Czy zna Pan jakieś paradniki/źródła opisujące jak przygotować środowisko (w moim przypadku Atollic) by tak programować. Sądząc po pytaniu, odnoszę wrażenie że jakby nie za bardzo chyba czujesz czym właściwie jest mbed. Tak że jeśli mógłbym coś zasugerować,...
Poza tym czy masz inny układ na magistrali, jaki masz zegar i jaki baud na CANie chcesz uzyskać? STM jest taktowyany 168MHz , prędkość CANa obojętnie byle by uruchomić. Na magistrali nic nie ma tylko przejściówka z CAN na USB dzięki której mam zamiar sprawdzić poprawność transmisji z STM32 po CANie
MCP2515 jest jeden przy AVR.
Czy podczas nadawania ramki (UART) przez DMA procesor jest "odcięty" aż do zakończenia nadawania? Nie jest. Bo w takim przypadku niemożna by było obsłużyć PWM(z obliczeniami) z taką częstotliwością. Układ który wybrałeś spokojnie obsłuży 10 UARTów i 10 silników - jeśli napiszesz dobrze program. Jeśli program napiszesz źle, to nie obsłuży nawet jednego....
To nie rozwiązuje problemu. Jeśli masz do skonfigurowania kilkadziesiąt pinów to dalej stoisz w tym samym miejscu - tracisz dużo czasu na klepanie konfiguracji dla GPIO. To rób konfigurację CubeMX a dostęp do GPIUO na rejestrach. Często używam tej metody nie tylko dla GPIO ale i dla USART, SPI. Transmisję realizuję swoimi funkcjami a init robię przez...
Rozumiem, ale wolałbym wykorzystać pełen potencjał przetwornika (czyli 12 bit). Mam pytanie w którym cofne sie trochę do tyłu. Mianowicie męczyłem swego czasu USB. Po wielu trudach coś tam udało się przesłać - przykład ze strony ST (virtualny port - echo w terminalu). No ok, wczoraj chciałem przesłać większą ilość próbek i nie dość że dostawałem totalne...
To, że slave nic nie odpowie, nie zmienia faktu, że SPI i tak odczytuje dane przy KAŻDEJ transmisji, no bo jak miałoby inaczej działać? 4\/3!!
Błąd w komunikacji może wynikać z niedotrzymania timingów pomiędzy wystawianiem sygnału nSEL, a wysyłaniem danych do/z układu RFM22. Jeżeli natychmiast po ustawieniu nSEL w stan niski zaczynasz wysyłanie danych, to jest to błąd. Podobnie - po zakończeniu wysyłania, sygnał nSEL musi jeszcze przez jakiś czas pozostać w stanie niskim. Załączam tabelę z...
Udało Ci się? Bo ja zaczynam się bawić CDC na STmie.
zostanie wysłana po i2c cała paczka danych, czy może się zdarzyć, że zostanie wysłany kawałek starej tablicy i kawałek nowej ? (w trakcie wysyłania zostaną już nadpisane dane) Czy jednak trzeba sobie jakoś samemu zapewnić to, żeby takie "zbiory" były wysyłane jako całość ? W czasie przesyłania przez DMA, możesz modyfikować zawartość, bo i tak DMA widzi...
Host decyduje kiedy odbiera dane. I nie myl tego z kontrolą transmisji. Potwierdzenie odbioru jest automatyczne, nic nie musisz zmieniać. Albert
Niestety dokumentacje tej firmy nie są najwyższych lotów. Czy masz jakieś doświadczenia z transmisją LoRa? Pozdrawiam JarekC
Jak odpalić samą transmisję po DAC? W sensie, wiem że powinienem zmienić tryb pracy I2S na Half-Duplex Master, ale jak rozpocząć transmisje w kodzie?
A coś skonfigurowałeś w ogóle? Jeśli tak to może wklej ten kawałek kodu. Prędkość dobrze wyliczona?
Rozumiem, ze jak mam 3 zadania/watki/taski, to bajer polega na tym, ze wszystkie zmienne uzyte w danym watku, sa zrzucane/zapamietane - kontekst. Dotyczy to tylko zmiennych automatycznych. Zmienne statyczne są "wspólne" (istnieje tylko jedna kopia, niezależnie od ilości wątków). A co jak sie zadeklaruje jakas tablice TAB Generalnie nie da się zadeklarować...
Do wyprowadzeń CAN L i CAN H nie można podłączać nic oprócz rezystorów terminujących, sygnalizację za pomocą diod LED można zrobić odczytując programowo znaczniki odebrania ramki CAN, każda transmisja na magistrali CAN uruchamia flagi w rejestrach procesora. Programowo można uruchamiać przez port procesora diody Led w zależności o odebranych danych,
Według mnie moduł BLE jest podpięty wewnętrznie do tego samego UARTa w STM32 który jednocześnie jest podpięty do transceivera RS485. Widzę jakąś transmisje na pinach A B na oscyloskopie po połączeniu się przez bluetooth. Po zamknięciu połączenia jest cisza. Dodatkowo poziomy na pinach A i B mogą wskazywać na obecność mastera. Jest jakaś szansa, że ten...
Podczas zapisu do Flash w uC, które mają jeden bank Flash, próba odczytu powoduje zatrzymanie procesora i poczekania do końca zapisu. Nie jest to problemem przy obsłudze przerwań UART, bo czas zapisu jest krótszy, niż czas transmisji znaku przez UART.
mozesz tez przy wiekszym nieco udziale rdzenia (ale wtedy bedzie już w pełni automatyczne i jedyne co musisz liczyć to co ile transmisja do ADC ma być wyzwalana). Czas ten musi być większy niż czas transmisji + 210ns. Zauważ że w przypadku 100k I2C ta częstotliwosc nie może być wieksza niż ~590Hz a w przypadku 400k 2370Hz. Jezeli potrzebujesz większej...
3. Mi się udawało uzyskiwać nawet 12 bitów jeżeli chodzi o szumy. Tzn. w spróbkowanym sygnale nie było szumów większych niż 1LSB. Ważne jest jednak odpowiednie dostosowanie syganłu do wejść ADC (niska impedancja wejść, co u Ciebie nie jest zapewnione). Co innego liniowość czy inne błędy. Tutaj pewnie było o wiele gorzej. Ale myślę że 10 spokojnie da...
Ja ostatnio rozwiązałem to tak do transmisji danych z 3 osiowego akcelerometru: [syntax=c] sprintf((char *)buforTx,"X%03iY%03iZ%03iE%1c%1c",Buffe... USART_ITConfig(USART1, USART_IT_TXE, ENABLE); //Przerwanie-transmisja [/syntax] Potem w programiku napisanym w C# wyłuskuję z ciągu interesujące mnie dane: http://www.youtube.com/watch?v=d-q6DuQH-...
Odczytaj dane normalnie, a nie przez te funkcje które nie-wiadomo-co robią... Upewnij się, że nie masz jakiegoś błędu ZANIM w ogóle zaczynasz coś wysyłać... Po co ustawiasz cokolwiek od CRC w inicjalizacji, skoro z tego nie korzystasz, nie wiadomo też co robi z tym ta fantastyczna biblioteka? Może wysyła sumę CRC po każdej transmisji? 4\/3!!
Ja zawsze korzystam z RXNE, ale robię to w przerwaniach - być może czas potrzebny na przyjęcie przerwania powoduje, że w tym przypadku transmisja już jest zakończona (a może w przerwaniach to lepiej działa) Jeśli chodzi o TXE, to rzeczywiście - stan tego bitu wskazuje, że można już wpisywać dane do bufora, ale sama transmisja jeszcze trwa. No to skorzystaj...
Jeszcze pamiętaj o tym ze jak slave bedzie trzymać magistralę to samo wykrycie time-outu nie wystarczy, musisz recznie dokończyć transmisję.
Dzięki za odpowiedzi. (at)flapo213: Chodzi o kompilację samego programu? Korzystam z Eclipse z kompilatorem CodeSourcery G++. Nie wiem dokładnie co to są te breakpointy? To takie zwyczajne jak przy debuggowaniu? :) Czy np. interrupt'y procesora? Może to właśnie przez błędy transmisji danych? (at)Freddie Chopin: Rezystory na liniach JTAGa jak dla mnie...
Witam Chciałem oprogramować połączenie procesora z układem RTC po i2c. Połączenie jest nawiązywane, dane są odbierane ale kiedy pętla whlie ponownie wróci do początku transmisji nie przechodzi już nadania STARTu. [syntax=c] I2C_GenerateSTART(I2C1, ENABLE); while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)); I2C_Send7bitAddress(I2C1, 0xD0, I2C_Direction_Transmitter);...
Pytanie czy analogowy oscyloskop sie nadaje do takich rzeczy? Sygnał i2c nie jest okresowy, więc na analogowym oscyloskopie wyświetlać się będzie właśnie to, co widzisz. Chyba, że ma pamięć. Możesz ewentualnie użyć zewnętrznej synchronizacji, generując specjalnie w tym celu impuls przed rozpoczęciem transmisji na dodatkowym pinie i korzystając z odpowiednio...
Gotowy mostek: https://www.aliexpress.com/item/40007558... Moduł Ethernet dla Arduino/STM32: https://www.aliexpress.com/item/10050016...
Witam, próbuję stworzyć transmisje przez SPI w procesorze STM32F103VET6. Transmisja miałaby polegać na wysłaniu kilku bajtów przez SPI1 do SPI2. Problem w tym, że niestety nie posiadam jeszcze JTAGA (juz leci z Chin) umożliwiającego debugowanie, więc nie jestem w stanie sprawdzić błędów. SPI1 ma pracować jako master , SPI2 slave. Laczenie SCK z SCK,...
RPI jest wyłączone. Nie dostaje nawet zasilania. Chodziło mi o moduł SIM800L. On strasznie sieje na urządzenie charakterystycznym brumieniem jak po przyłożeniu telefonu do głośnika i transmisji.
Nie możesz jeden po drugim, bez żadnego czekania odczytywać czy wysyłać kolejnych bajtów przez I2C. Pomiędzy każdym wysłaniem lub odebraniem muszą być sprawdzane stosowne flagi wskazujące czy transmisja danego bajtu się już skończyła. Początek każdej transmisji musi zaczynać się warunkiem startu, a kończyć warunkiem stopu. Razem z adresem urządzenia...
Zupełnie nie rozumiem, w jakim celu miałbyś zapisywać rejestr timera, jeśli transmisję do WS na STM32 możesz zrobić bez timera na SPI, kodując każdy bit do WS2812 na trzech bitach zamiast na bajcie czy słowie 16-bitowym. Opis kodowania i transmisji SPI bez DMA masz w już darmowej EP 03'2014.
Mam problem chyba z podłączeniem LCD z uC. Wyświetlacz (sterownik T6963) jest na 5V a uC na 3V, transmisja dwukierunkowa. W nocie pisze Vdd 4,5 do 5,5 V myślałem że będzie działało bez żadnych dodatkowych elementów, tak miałem z wyświetlaczem alfanumerycznym też był na 5V a działa z STM32 na 3v. Może kod jest zły, ale nie sądzę. Jak mógłbym to najprościej...
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...
Hmm ten układ AD8856 jest zdaje się analogiczny do tego, który wyszukałem ADV7281? Pytanko tak dla upewnienia, wyjście obrazu jest zgodne z interfejsem DCMI? Da radę podpiąć bezpośrednio do stm32?
Powinny dzialac :) Ja uzywalem trafa i gniazda wylutowane z starszych kart sieciowych i dzialalo. Ale jakis wiekszych testow nie robilem pod katem pojawiania sie bledow w transmisji itp.
Nie jestem pewien, ale coś mi chodzi po głowie, że ten przykład od ST usypiał procka przy braku transmisji - to by tłumaczyło czemu wszystko "umiera".
Linia PC13 ma bardzo małą wydajność prądową. Gdybyś w temacie umieścił schemat lub kod inicjalizacji peryferiów dostałbyś szybciej odpowiedź. Ale skoro CubeMX robi wszystko automagicznie, to przecież nie warto czytać dokumentacji. Na razie masz problem zamaskowany. Pewnie wróci. 5. PC13, PC14 and PC15 are supplied through the power switch, and so their...
Mam STM32F4 DISC1 (z programem napisanym w C#.NETMF), który odbiera dane z aplikacji Windowsa (napisanej w C#.NET). Aplikacja wysyła zadany przebieg czasowy a STM32 go odczytuje i zapisuje w tablicy. Następnie zgodnie z zadanym przebiegiem czasowym ma sterować procesem. STM32 jest widziany jako wirtualny port COM. Prędkość transmisji - próbowałem 9600...
These procedures must be followed to make sure: • The ACK bit is set low on time before the end of the last data reception • The STOP bit is set high after the last data reception without reception of supplementary data. W sumie to jest jak widzisz na powyższym . ACK low przed końcem ostatniej transmisji STOP high po zakończeniu ostatniej...
3 us to 63 cykle - niby to wcale nie mało dla rdzenia Cortex. Wygeneruj impuls startu konwersji na timerze, w przerwaniu timera na koniec impulsu odpal transmisję, po zakończeniu transmisji z ADC wyzwól ponownie timer. Nie jestem pewny czy zwalnianie uC do 21 MHz to dobry pomysł. Sama transmisja też zajmie trochę czasu, potem obróbka odebranych danych...
Problem chyba jest po stronie sprzętowej: Przy takim podłączeniu wszystko jest ok z odebraną ramką w STM32: http://obrazki.elektroda.pl/8491069300_1... RS232TTL w komputerze służy mi do podglądania czy idze dobra ramka. W momencie kiedy odłączę RS232TTL to transmisja między STM32 a urzadzeniem nie działa. Producent urządzenia z którym...
Dobrze że chociaż STM32 a nie coś mniejszego, niestety transmisja szeregowa po SPI jest bez sensu, policz ile będzie trwało wysłanie jednego pełnego ekranu.
Przepraszam, załączyłem wersję już z 500kb/s (CAN2.0B). No nic będę musiał poczekać na dostęp do oscyloskopu :)
Chciałbym dowiedzieć się jak coś takiego mogłoby wyglądać, jak dogadać się z samym mikrokontrolerem tak aby w odpowiednim języku mnie zrozumiał. Reszta przyjdzie z czasem. Mnie sie wydaje kolega, że nie masz problemu z CRC tylko z samą transmisją danych po USART.
Na razie Twoja funkcja SendSpi niczego sensownego nie wysyła, bo przed wysłaniem czyścisz bufor. Proponuję też walczyć z jednym problem na raz, tzn. na początek użyć funkcji transmisji bez DMA, a jak to zadziała, to dołożyć DMA.
Zacznij pisać obsługę SPI slave, to sam zobaczysz... ;) Min 2 puste bajty na początku, problemy z szybką i poprawną reakcją na zmiany stanu linii SS itd. Oczywiście da się to "jakoś" rozwiązać, ale przy transmisji UART nie musisz nic rozwiązywać.
Witam W przypadku pracy z MODBUSem gdy są problemy z połączeniem proponuję skorzystać z jakiegoś gotowego programu do komunikacji i sprawdzić czy on się połączy z slavem. Programów jest pewno sporo, ja mogę zaproponować Modbus tester z strony http://polish.modbus.pl/node/5 swojego czasu sporo z niego korzystałem. Ma możliwość podglądnięcia transmisji...
Chciałbym tylko nieśmiało zauważyć, że ten programowy arbiter plus obsługa DMA - to więcej kodu niż obsługa transmisji na przerwaniach z buforem cyklicznym bez DMA. ;)
MIDI jest właśnie asynchroniczne i do tego bardzo proste. Częstotliwość transmisji wynosi 31250 bitów na sekundę. Interfejs z jednej strony z izolacją optyczną, z drugiej pętla prądowa. Reszta to typowy UART...
Próbowałem zmniejszyć. Średnio to pomogło. Dalej transmisja jest niestabilna. Na domiar złego o ile w STM32 Utility mogę zmniejszyć, to tak już w Attolicu wygląda, że dla STM32LInkV2 już się nie ma takiej możliwości. A do STM32F4DISCOVERY nie da się wgrać soft J-linka (nie wiem czemu). Do ZL30PRGv2-1 nie miałem z tym problemu - ale w przypadku tego...
Sam RS485 oparty jest o układ MAX3485CPA+. Prędkość transmisji po USARcie w programie i na sprzęcie ustawiona jest na 921600B/s(tyle dopuszcza virtualny port COM). Oczywiście virtualny port COM jest oparty na układzie FT232BL. Program na komputerze jest napisany w javie i wykorzystuje klasę jd2xx dedykowaną dla tych właśnie układów. Problem jest właśnie...
Czy one kiedykolwiek są "dualne" tzn raz słowowe, raz bitowe ? Owszem, są takie architektury, w których jest wymagany specyficzny dostęp do rejestrów. Przykładem może być moduł SPI w nowszych STM32. Dane do transmisji zapisuje się do rejestru danych, który może mieć 8 lub 16 bitów szerokości. Operacja zapisu wyzwala przepisanie zawartości rejestru...
A ustawiłeś w terminalu te same parametry transmisji co w STM-ie? ilość bitów, bit stopu, parzystość itp.?
Może dokumentacja wprowadza w błąd mówiąc, że FT311D obsługuje prędkości SPI do 24MHz? Czy gdziekolwiek stwierdziłeś, że nie obsługuje? Bo nic o tym nie piszesz. Opóźnienia, o których piszesz dodajesz PRZED lub PO transferze . Jaki według Ciebie mają więc związek z prędkością transmisji po SPI? Piszesz, że Wszystko jest OK, gdy stosuję opóźnienie pomiędzy...
Jeszcze jeden ciekawy dokument w tej kwestii: [url=https://www.st.com/content/ccc/reso... memory protection unit (MPU) in STM32 MCUs
Sugestia, że oprogramowanie daje idealne odstępy czasowe, a sprzęt - nie, trąci herezją. Sprzęt zawsze gwarantuje właściwe taktowanie i równy czas transmisji bitów, oprogramowanie - tylko przy spełnieniu wielu warunków, często trudnych do spełnienia. Realizacja programowa wyklucza jakąkolwiek inną aktywność w czasie transmisji. Moje rozwiązanie z najtańszym...
Kazałeś odebrać 5 bajtów to woła callbacka jak tyle odbierze. Jezeli nie wiesz ile to możesz odbierać po znaku i sobie interpretować albo wkładać do bufora kołowego, odbierać i czekać na przerwę w transmisji (co może świadczyć o zakończeniu). Masz wiele opcji.
Po wpisaniu czegoś do rejestru DR jego zawartość kopiowana jest do rejestru przesuwnego (jeśli nie trwa inna transmisja) i wtedy rozpoczyna się rzeczywisty transfer. Szczegóły w manualu. Tak apropo to ustawienie flagi TXE oznacza e bufor transmisji jest pusty i NIC WIĘCEJ. Wcale nie oznacza to fizycznego końca transmisji! Ponownie polecam manual i diagramy/opisy...
Cześć, Od jakiegoś czasu borykam się z takim problemem: chciałbym odbierać po CANie ramki, wpisywać je w gotowy szablon i dalej wysyłać po USARCie na kompa w kodzie ASCII. Czegoś mi brakuje w tym kodzie i za każdą wskazówkę będę wdzięczny. Z góry dzięki:) To mój main: [syntax=c] unsigned char tx_uart[]=" ID: DL: F: T: DATA: ";//54 char ramka[55]; unsigned...
Witam Odbierając dane w stm32 nie udało mi się zgubić żadnej danej nawet jak dam po każdym odebranej ramce 50ms Delay na testy. Max Transmisja jaką miałem to 4Mbit Akurat używam TCP to przesyłania programu wykonywalnego do STM32. Mam telegramy które wysyłam z PC do STM32 a on na nie odpowiada. Zapytania i odwiedź mam na jednym porcie Chciałem teraz...
Dużo prościej będzie zakup kamery bezprzewodowej z allegro za około 70-100 zł, na komputerze można obejrzeć obraz za pomocą karty video. Nie musisz się wtedy martwic o protokół transmisji, kodowanie i dekodowanie obrazu itd. Chyba że bardzo ambitnie chcesz do tego podejść z tym ze nie wiem czy jest sens.
Czy jest powiedzmy jakiś tańszy stm bądź inny mikrokontroler (na studencką kieszeń) który powienien bez problemu sobie z tym poradzić? Ja osobiście polecałbym nowość z TI, układ CC3200 http://www.ti.com/product/cc3200 jest to taki, powiedzmy, STM (Cortex M4) z już wbudowanym WiFi. Posiada DCMI, także wybrana przez Ciebie kamerka może być użyta, taktowanie...
EDIT: poprawiłam lekko kod, bo widzę z innych przykładów ze funkcja I2C_CheckEvent powinna być wywoływana wewnątrz while nie działa transmisja... a konkretnie zatrzymuje się w momencie: while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECT...
Możliwe jest, że czytam te śmieci ponieważ STM32 jest zasilany 3.3V natomiast kontroler wyświetlacza jest zasilany 3V czyli kiedy on wysyła to podaje mniejsze napięcie w stanie wysokim na linii
Szanowny Państwo, zwracam się z uprzejmą prośbą o pomoc z pewnym zagadnieniem. Piszę program do układu sterowania zgrzewarką punktową o wysokiej częstotliwości przekształtnika. Korzystam ze sterownika XL7 firmy Horner oraz płytki STM32. Moją koncepcją na stworzenie układu sterowania jest transmisja danych poprzez protokół MODBUS RTU po kablu RS-485....
stm32 transmisja szeregowy transmisja szyfrowanie transmisja asynchroniczna
otwieranie centralnego zamka awaryjne blokada regulacji głośności toshiba reset hasła
silnik kohler teltonika konfiguracja
Schemat podłączenia czujnika poziomu wody w pralce Beko HTE8614YBST Ekspres do kawy - wszystkie diody świecą, nie włącza się