Forum: Mikrocontroller und Digitale Elektronik PicoPi & OnlyWrite SPI blockiert


von Rudi (rudils)


Lesenswert?

Ich habe an meinem Pico den DA-MCP4922 an SPI angeschlossen.
Der DA hat nur einen Write Kanal. Der SPI_MOSO Pin ist unbeschaltet, 
aber als SPI-Pin initalisiert.
Wenn ich nun dahin Daten sende, bleibt in der API-Funktion in Zeile 12 
das Programm hängen. Da wird ja gefragt ob Readable.
1
int __not_in_flash_func(spi_write16_blocking)(spi_inst_t *spi, const uint16_t *src, size_t len) {
2
    invalid_params_if(HARDWARE_SPI, 0 > (int)len);
3
    // Deliberately overflow FIFO, then clean up afterward, to minimise amount
4
    // of APB polling required per halfword
5
    for (size_t i = 0; i < len; ++i) {
6
        while (!spi_is_writable(spi))
7
            tight_loop_contents();
8
        spi_get_hw(spi)->dr = (uint32_t)src[i];
9
    }
10
    while (spi_is_readable(spi))
11
        (void)spi_get_hw(spi)->dr;
12
    while (spi_get_hw(spi)->sr & SPI_SSPSR_BSY_BITS)
13
        tight_loop_contents();
14
    while (spi_is_readable(spi))
15
        (void)spi_get_hw(spi)->dr;
16
    // Don't leave overrun flag set
17
    spi_get_hw(spi)->icr = SPI_SSPICR_RORIC_BITS;
18
    return (int)len;
19
}
Meine DA-SPI-Ic ist aber nicht readable. Wie geht sowas trotzdem?
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Rudi schrieb:
> Meine DA-SPI-Ic ist aber nicht readable.

Uninteressant!

Rudi schrieb:
> SPI_MOSO

Du meinst MISO!
Irgendwo muss MISO als Eingang am RP definiert werden.
Dann kann man ihn mit einem Pullup oder Pulldown versehen um eindeutige 
Pegel zu erhalten.
Die µC SPI Einheit merkt nicht, dass da kein Baustein angeschlossen ist.
: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.