Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[AVR] Konwerter I2C slave na UART.

n6210 12 Feb 2020 17:55 3408 5
  • Witam.
    W pewnej konstrukcji ARM, z którą przyszło mi pracować, logi wysyłane były przy pomocy interfejsu I2C na adres 0x22 (7bit).
    Zapewne niektórzy znają przejściówki USB-I2C z układem FTDI np.: FT201X
    [AVR] Konwerter I2C slave na UART.
    i to właśnie te układy pracują na powyższym adresie.
    Jednak koszt takiej przejściówki to ok. 30-40zł + wysyłka, a i czas również naglił,
    przez co postanowiłem wykonać samodzielnie podobną konstrukcję na TTiny85.

    Niestety, w zasobach znalazłem jedynie nieśmiertelną ATTiny13 bez wbudowanego modułu USI.
    Nie poddałem się jednak i postanowiłem spróbować wykonać w pełni programowy I2C slave + UART (gotowy kod),
    a teraz przedstawiam efekt kilku godzin pracy.
    Może się komuś przyda.

    [AVR] Konwerter I2C slave na UART.

    Kod w C, Makefile, konfiguracja do AVRDude są do pobrania z GITHUB-a: Link do projektu
    Schemat w PDF do podbrania

    Parametry pracy:
    - adres 0x22 (7-bit)
    - prędkość UART 230400 boud 8N1
    - prędkość I2C (maksymalna testowana) 100kbit

    Jako USB<->UART użyłem zwykłej przejściówki FTDI z wprowadzonymi pinami Vcc | TxD | RxD | GND


    Przejściówka sprawuje się bardzo dobrze, pracuje stabilnie, nie gubi danych i co najważniejsze jest super prosta w konstrukcji, przez co nie powinna sprawić trudności nawet początkującemu hobbyście. Dla uproszczenia diody LED można nie montować - wskazuje jedynie aktywność na magistrali I2C. Zachęcam do własnych eksperymentów i modyfikacji kodu i ulepszeń.
    Edit:
    Jako, że w kodzie są pętle bez timeout-a dodałem obsługę watchdog-a by zapewnić reset w razie zawieszenia się stanu magistrali, odłączenia konwertera itd.

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    n6210
    Level 29  
    Offline 
    Niemożliwe na jutro, na cuda trzeba poczekać do tygodnia, reszta jest w internecie.
    Has specialization in: live hackig
    n6210 wrote 1000 posts with rating 119, helped 122 times. Live in city Bielefeld. Been with us since 2008 year.
  • Computer ControlsComputer Controls
  • Computer ControlsComputer Controls
  • #4
    n6210
    Level 29  
    neo_84 wrote:
    n6210 wrote:
    prędkość UART 230400 boud 8N1
    dość szybko i to bez kwarcu zewnętrznego. Przy tej prędkości chyba działa tylko od czasu do czasu... ? ;)

    Z przejściówką FTDI FT232 działa bardzo stabilnie i nie przekłamuje znaków.
    W sumie pisałem :)

    Dodano po 8 [minuty]:

    byrrt wrote:
    Jest taki projekt jak i2c-tiny-usb - gotowiec do ściągnięcia, zaprogramowania i uruchomienia.

    Jedyny projekt jaki znam pod tą nazwą obsługuje jedynie i2c master i wymaga ATTiny45/85, a nie ATTiny13.
    Tu jest link
    A tu drugi w sumie nawet lepszy bo działa ze standardowym modułem z kernela.
    Na dniach przyjdzie mi Digispark to sobie wypróbuje, ale to jednak inne zastosowanie.
    Niemniej postaram się przerobić to na coś podobnego tylko po USB więc nie będzie potrzeby USB->UART.
    Digispark to koszt 5-7zł z wysyłką z Chin więc dalej się opłaci kombinować zamiast FT201X.

    Jak znasz jakiś projekt I2C-slave to UART na Tiny13 to podaj proszę linka.
    Może jest lepszy i komuś się przyda, a sam też chętnie zerknę.
  • #5
    djfarad02
    Level 18  
    n6210 wrote:
    Z przejściówką FTDI FT232 działa bardzo stabilnie i nie przekłamuje znaków.
    W sumie pisałem

    Mogą wystąpić problemy przy pełnym zakresie temperatur pracy bądź z innymi egzemplarzami uC.
  • #6
    n6210
    Level 29  
    djfarad02 wrote:
    n6210 wrote:
    Z przejściówką FTDI FT232 działa bardzo stabilnie i nie przekłamuje znaków.
    W sumie pisałem

    Mogą wystąpić problemy przy pełnym zakresie temperatur pracy bądź z innymi egzemplarzami uC.

    Oczywiście, że mogą jednak bez przesady... to jest konstrukcja przeznaczona do pracy na biurku :)
    Na dziś zlutowane 3 sztuki i wszystkie działają poprawnie.
    Pozdrawiam