Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega128][C] - Karta SD i DAC

Malin2000 08 Paź 2012 20:42 1782 10
  • #1 08 Paź 2012 20:42
    Malin2000
    Poziom 7  

    Witam!
    Mam pytania czy schemat połączeń uP do czytnika karty SD i do zewnętrznego DAC jest poprawny. (schemat na obrazku)
    [Atmega128][C] - Karta SD i DAC

    jako pomocy przy SD korzystałem z tego linku (SD Card Pinout), natomiast przy DAC użyłem datasheet urządzenia.

    VCC to 5V, stąd dzielnik napięcia na wejściu do SD (3,3V).

    Ale mam kilka konkretnych pytań:
    1. Czy dzielnik napięcia jest dobrze podłączony?
    2. Czy biblioteka FatFs jest dobra do obsługi kart SD? Ile może trwać zapis na kartę danych? (do zapisu mam 3 float'y za jednym cyklem, F_CPU to 16MHz)
    3. Czy do zapisu danych będzie wystarczyło tylko f_write? (oczywiście po wcześniejszym zamontowaniu dysku, stworzeniu systemu plików inicjalizacji i utworzenia pliku)
    4. DAC działa w oparciu o TWI (lub i2c), zatem teoretycznie powinno wystarczyć tylko podłączenie SDA i SCL. Czy to naprawdę wystarczy, czy potrzebne są kreskowane podłączenia ze schematu? W końcu A1..A3 maja związek z pamięcią.
    5. Czy przy wykorzystaniu tej biblioteki wysterowanie urzadzenia by dawał 2V AC potrzeba tylko:

    Code:
    i2c_write_wait(0x9a)        //0x9a = 1001 (adres tego DAC) 101 (komórka pamięci w DAC) 0 (write mode) (datasheet)
    
    i2c_write(0x40)               // 0x40 = 01000000 B - czyli właczone wyjśce analogowe (datasheet)
    i2c_write(0x66)               //0x66 - ok. 2V (wg moich obliczeń)

    6. Czy jest jakiś inny układ, poza PCF8591, który ma przetwornik DAC? (PCF8591 ma ADC, co w sumie nie musze korzystać, bo zamierzam używać tego wbudowanego w Atmegę)

    0 10
  • #2 08 Paź 2012 21:06
    sorex86
    Poziom 15  

    f_mount
    f_open
    f_lseek
    f_write
    f_close

    mniej, a wiecej takich funkcji uzywam w bibliotece FatFs aby zapisac dane pomiarowe na karcie SD. Biblioteka FatFs jest pamieciozerna. Moze i sa 'lepsze' biblioteki ale przynamniej masz gwaranacje, ze biblioteka ta jest sprawdzona i napewno poprawnie dziala.

    0
  • #3 08 Paź 2012 21:07
    mickpr
    Poziom 39  

    To co mi się rzuciło w oczy, to brak pull-up przy magistrali I2C.
    Pokaż zasilanie i cały schemat.

    sorex86 napisał:
    Moze i sa 'lepsze' biblioteki ale przynamniej masz gwaranacje, ze biblioteka ta jest sprawdzona i napewno poprawnie dziala.
    Jest np. PetitFs (młodszy brat FatFs). FatFs można też "okroić"/skonfigurować, na pewno zapotrzebowanie na pamięć spadnie.

    Malin2000 napisał:
    Czy to naprawdę wystarczy, czy potrzebne są kreskowane podłączenia ze schematu? W końcu A1..A3 maja związek z pamięcią.
    Możesz te piny układu PCF podłączyć do masy. Wybierasz nimi adres PCF-a (aby na tej samej magistrali móc podłączyć nawet do 8 takich układów).
    Jeśli używasz tylko 1 chip możesz podłączyć je do masy lub (przez pull-up) do VCC (ważne żeby były podłączone).
    Oczywiście adres i konfigurację PCF-a znajdziesz w jego datasheet, którego pewnie nie czytałeś ? :)

    0
  • Pomocny post
    #4 08 Paź 2012 21:23
    tronics
    Poziom 36  

    Cytat:
    W końcu A1..A3 maja związek z pamięcią

    To jest tylko do adresowania urządzeń na I2C - jak inicjujesz zapis/odczyt iic to wysyłasz adres urządzenia, do którego się odwołujesz. Część jest na stałe zapisana w hw i na to nie masz wpływu, część jak owe linie adresowe pozwala zmieniać ten kawałek adresu, który trwale zapisany nie jest - pozwalając na pracę kilku urządzeń z tym samym trwałym adresem.

    0
  • #5 08 Paź 2012 21:25
    mickpr
    Poziom 39  

    Zastanawia mnie jeszcze to, dlaczego tylko 1 dzielnik rezystorowy dla karty SD zastosowałeś i co to za karta?
    Z tego co wiem Atmega 128 (nawet x-A) przy 16 MHz wymaga 5V zasilania, więc upalisz kartę SD (pracującą przy zasilaniu 3,3V) jak nic (bez zmian w schemacie).

    0
  • #6 08 Paź 2012 22:56
    Malin2000
    Poziom 7  

    czyli jak podłącze A1..A3 do masy, to przy wysyłaniu pierwszego bajtu przez i2c (ten z adresem) to miałby on wyglądać tak: 10010000 by moje urządzenie odpowiedziało? czy to nie ma znaczenia?

    @mickpr - całość schematu jako tako nie istnieje. projektuje ten układ modułami, które podłączam do płytki przyłączeniowej. zatem uP i DAC będą na osobnych płytkach, ale z tą samą masą i zasilaniem (połączone przewodem).

    co do dzielnika napięcia tutaj właśnie nie wiedziałem do końca jak to zrobić. opierałem się na wiedzy z elektrotechniki, czyli na tym:
    [Atmega128][C] - Karta SD i DAC

    myślałem,ze jak podłącze zasilanie karty za 1-szym rezystorem to będzie ok.. ale chyba nie będzie.

    Tak wiem,że uP działa na 5V a SD na 3,3V.
    co to za karta? hmm.. ciężko mi odpowiedzieć.. zwykła karta SD, 9 pinów, producent: Lexar.

    i czytałem datasheet do PCF.. stąd mam np te adresy, które chce wysyłać po i2c..

    0
  • #7 08 Paź 2012 23:04
    mickpr
    Poziom 39  

    Po kolei:
    Adres 10010000 (do zapisu), zgadza się.

    Co do podłączenia SD:
    Pełno rozwiązań znajdziesz na Internecie (również na elektrodzie np.: https://www.elektroda.pl/rtvforum/topic2138695.html )
    Ogólnie rzecz biorąc - najprościej - rezystory, diody 3,3V/3,6V,... a najlepiej bufory (np 74HC125 itd...).
    Musisz zapewnić odpowiedni poziom napięć wyjściowych i wejściowych wszystkich pinów (MISO, MOSI, SCK i CS) dla karty SD i Atmegi (a nie tylko zasilania).

    0
  • #8 08 Paź 2012 23:21
    atom1477
    Poziom 43  

    No i owe dzielniki napięcia mają konwertować sygnały, a nie napięcie zasilania jak pewnie zrobiłeś :D

    0
  • #10 09 Paź 2012 12:21
    sorex86
    Poziom 15  

    Uzywam kostki CD4050 do konwersji z 5V na 3.3V. Dziala zarowno z wyswietlaczem typu Nokia LCD5100 oraz karta SD. Jak ktos nie lubi bawic sie w dzielniki to moze to byc takze pewien sposob rozwiazania tego problemu,. Troche przerost formy nad trescia no ale ...

    0
  • #11 09 Paź 2012 15:41
    Malin2000
    Poziom 7  

    skorzystałem z tego bloga, i wymyśliłem coś takiego:
    [Atmega128][C] - Karta SD i DAC

    a co do i2c to wrzuciłem rezystory pull-up 4k7 na liniach SCL i SDA. przedstawia się to tak:
    [Atmega128][C] - Karta SD i DAC

    czy coś jeszcze jest popsute? czy już wszystko gra i powinno działać?

    P.s. czy dobrze rozumiem,że ten bufor działa w ten sposób,że jak podam na odpowiedni pin 5V z uP (logiczna 1ka) to bufor przekaże to dalej jako 3,3V ( a dokładniej jako napięcie, do którego jest podłączone),tak? tak przynajmniej w dużym uproszczeniu..

    0
  Szukaj w 5mln produktów