libreria SD accaparra la spi in esclusiva.

Salve,

in un esp32 devo collegare 2 periferiche tramite spi,
una sdcard e display 8x8 comandati da max7219 .
ho collegato tutto tramite la porta spi differenziando il cs.
in pratica quando faccio partire la perifica

SD.begin(SD_CS);

il display non funziona piu'.
Di questo problema ho trovato poco sulla rete,
qualcuno suggeriva di usare la libreria SdFat, ma non ho risolto...
suggerimenti?

grazie in anticipo...
Giampaolo alias dakota.

Mah ... non so come è implemetata la cosa su ESP32, su AVR funziona correttamente. Guardando i sorgenti della libreria rilasciata con ESP32 vedo, per il metodo begin():

bool SDFS::begin(uint8_t ssPin, SPIClass &spi, uint32_t frequency, const char * mountpoint, uint8_t max_files)
{
    if(_pdrv != 0xFF) {
        return true;
    }

    spi.begin();

    _pdrv = sdcard_init(ssPin, &spi, frequency);
    if(_pdrv == 0xFF) {
        return false;
    }

    if(!sdcard_mount(_pdrv, mountpoint, max_files)){
        sdcard_unmount(_pdrv);
        sdcard_uninit(_pdrv);
        _pdrv = 0xFF;
        return false;
    }

    _impl->mountpoint(mountpoint);
    return true;
}

... che comunque chiama una spi.begin(), ovvero inizializza lui di nuovo il bus SPI ... magari questo da fastidio a come avevi inizializzato tu la SPI ...

Prova a spostare prima la SD.begin() e poi l'inizializzazione del display e vedi se cambia qualche cosa.

Guglielmo

..e magari, anche se non vuoi postare tutto il codice, almeno le definizioni delle librerie, variabili globali, e la setup() aiuterebbero.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.