logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

STM32+Attiny2313 - Nie mogą skomunikować się po RS232

mikmas 12 Maj 2016 21:50 1527 4
REKLAMA
  • #1 15669105
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Posiadam 2 układy:
    - hy-smart stm32 na STM32F103
    - urządzenie na attiny2313

    oba udało mi się ładnie dotychczas ogarnąć, oba pracują poprawnie, jednak pozostaje ostatni krok - połączyć je. Jako, że hy-smart oraz attiny mają uart to na ten protokół padł wybór. Niestety mimo wielu podejść nie udało mi się wysłać poprawnie pakietu. Gdzie robię błąd?

    Tak wygląda połączenie (skoncentruję się na razie jedynie na kierunku 2313->stm):
    STM32+Attiny2313 - Nie mogą skomunikować się po RS232
    co dziwne, gdy na T2in dam 0v to na T2out mam 10v, a jak dam 5v to jest -10v (nie powinno być odwrotnie?)

    Jak widać proste jak budowa radzieckiego czołgu, jednak dla pewności dam cały obraz układu z attiny (niestety budowalem od razu płytkę, bez schematu):
    STM32+Attiny2313 - Nie mogą skomunikować się po RS232

    Dodatkowo daję w załączniku schemat budowy tego HY-Smarta.
    Jeżeli chodzi o USART1 (przez niego jest programowany za pośrednictwem bootloadera) to udało mi się bez większych problemów porozumieć z moim programem na komputerze, więc kod to tak naprawdę przerobiony z USART1 na wyjście USART2 (może tu zrobiłem gdzieś błąd?).

    Kod attiny2313:
    UART.cpp
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    main.cpp
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    F_CPU=20 000 000 //20MHz

    Oraz kod po stronie stm-a:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Efekt jest taki, że dioda miga, a na wyświetlaczu jest jedynie "Ready...".
    Płacę jak za prezydenta. Nie mam już pomysłów, a to właściwie ostatni kroczek
    Załączniki:
    • HY-SmartSTM32_SCH.pdf (111.02 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • REKLAMA
  • #3 15669745
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    "Nie wydaje mnie się". Przyjrzyj się układowi (załącznik). Projektant miał po prostu duże poczucie humoru i tak oznaczył na plytce TxD, ale mu chyba chodziło o TxD układu nadającego (czyli RxD). Chińczycy lubią czasem utrudnić
    Załączniki:
    • STM32+Attiny2313 - Nie mogą skomunikować się po RS232 dobrze.png (43.86 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #4 15670110
    Konto nie istnieje
    Konto nie istnieje  
  • #5 15670292
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Przepisywany był z przykładu, gdzie był użyty USART1 (PA9). USART2 jest na PA2, niestety komentarz zostawiłem

    Dodano po 2 [godziny] 19 [minuty]:

    OK, znalazłem błąd:
    zamiast
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB1Periph_USART2, ENABLE);
    powinno być
    RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2, ENABLE);
REKLAMA