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?