Hirdetés

Új hozzászólás Aktív témák

  • Janos250

    őstag

    "nem üti-e egyik a másikat mert ugyan azon a belső áramkörön van és hiába van több helyre kivezetve, egyidejűleg nem lehet mindkettőt használni."
    Nem. Mindnek külön, független belső hardvere van.
    ESP32-n bármelyik eszköz (UART,SPI, I2C, stb) lába bármelyik lábra átdefiniálható, ez csak nanosec nagyságrendű lassulást jelent.
    UART-ból van három.
    Serial, Serial1, Serial2. Feltöltés, debug az elsőn (Serial) megy, az 1, és a 2 szabadon használható nem ütik egymást, de a Serial1 default lábait át kell címezni, mert azt memória kezelésre használja az ESP32. Jól használhatóak.
    SPI-ből kettő hardware van (VSPI,HSPI), de akármelyikre rá lehet rakni egy csomó eszközt, csak akkor a chip selectet nem automatikusra kell állítani, mert akkor az mindig a D5 lesz, és összeakaszkodnak a készülékek. Minden eszközhöz el kell határozni egy CS lábat, és azt az eszköz megszólítása előtt aktiválni, majd deaktiválni. Én csak a VSPI-t használtam, de azt több eszközzel, azaz készülékenként külön CS lábbal.
    Itt egy példa:
    uint16_t readVSPI_MAX6675(uint8_t chipSelect){
    uint8_t Hbyte;
    uint8_t Lbyte;
    uint16_t readed16bit ;

    SPI.beginTransaction(SPISettings(100000, MSBFIRST, SPI_MODE1)); // Set the settings to work with SPI bus
    digitalWrite(chipSelect, LOW); // Select slave
    Hbyte = SPI.transfer(0);
    Lbyte = SPI.transfer(0);
    digitalWrite(chipSelect, HIGH); // Release slave again
    SPI.endTransaction();

    readed16bit = ((uint16_t)Hbyte)<<8 ;
    readed16bit = readed16bit + Lbyte;
    return readed16bit >> 6 ;

    } ; // end readVSPI_MAX6675

    Persze több bájtot is lehet egyszerre olvasni, de itt - már nem tudom miért - így oldottam meg.
    SPI-nél vigyázni kell arra, hogy:
    Ha több bájtot írsz/olvasol, akkor a CS-t nem lehet háborgatni amíg mindet be nem olvastad.
    Ha a default CS-t használod, akkor - általában - nem lehet a bájtokat egyesével olvasni, mert a CS aktiválása ezt-azt indít a készüléken is, ezért default CS láb esetén a több bájt olvasó függvényeket kell használni.

    I2C-t még nem használtam, most fogom használni EEPROM kezelésre.
    Mivel I2C-nél nem kell külön CS láb, ezért nem növeli a lábak számát, ha több I2C eszközt használsz, SPI-nél viszont igen, minden eszközhöz külön CS láb kell.
    Ha nem használsz sok lábú párhuzamos adatátviteli eszközt, akkor azért eléggé iparkodnod kell, ha túl akarsz futni az ESP elérhető lábain, mert elég sok az.
    Pontos ADC-re nem volt szükségem, így azt nem tudom.

    "Nextion tx, rx kell uart.
    Sd kártya spi
    Giroskóp i2c
    Vagy ugyanazokat használják lábon?
    "

    Nem. Külön lábakat használnak alapértelmezés szerint is. Ha SPI-n csak az SD kártyát használod, mehet a default D5 CS.

Új hozzászólás Aktív témák