Writing to serial every 16 bytes was a sweet spot. Data are intact and serial speed is close to its peak. Prepare yourself
:

Code:
void odczytuj_blok(uint32_t ile_blokow) {uint32_t __attribute__((aligned(4))) i = 0;for (i = 0; i < ile_blokow; i++) {do {spi_read_blocking(SPI, jedynki, odzew, 1);} while (odzew[0] != 0xFE);dma_channel_configure(dma_tx, &c_tx, &spi_get_hw(SPI)->dr, &jedynki, 514, false);dma_channel_configure(dma_rx, &c_rx, dane + i * 512, &spi_get_hw(SPI)->dr, 514, false);dma_start_channel_mask((1u << dma_tx) | (1u << dma_rx));// dma_channel_wait_for_finish_blocking(dma_rx);write(1, dane + i * 512 + 0 * 16, 16);write(1, dane + i * 512 + 1 * 16, 16);write(1, dane + i * 512 + 2 * 16, 16);write(1, dane + i * 512 + 3 * 16, 16);write(1, dane + i * 512 + 4 * 16, 16);write(1, dane + i * 512 + 5 * 16, 16);write(1, dane + i * 512 + 6 * 16, 16);write(1, dane + i * 512 + 7 * 16, 16);write(1, dane + i * 512 + 8 * 16, 16);write(1, dane + i * 512 + 9 * 16, 16);write(1, dane + i * 512 + 10 * 16, 16);write(1, dane + i * 512 + 11 * 16, 16);write(1, dane + i * 512 + 12 * 16, 16);write(1, dane + i * 512 + 13 * 16, 16);write(1, dane + i * 512 + 14 * 16, 16);write(1, dane + i * 512 + 15 * 16, 16);write(1, dane + i * 512 + 16 * 16, 16);write(1, dane + i * 512 + 17 * 16, 16);write(1, dane + i * 512 + 18 * 16, 16);write(1, dane + i * 512 + 19 * 16, 16);write(1, dane + i * 512 + 20 * 16, 16);write(1, dane + i * 512 + 21 * 16, 16);write(1, dane + i * 512 + 22 * 16, 16);write(1, dane + i * 512 + 23 * 16, 16);write(1, dane + i * 512 + 24 * 16, 16);write(1, dane + i * 512 + 25 * 16, 16);write(1, dane + i * 512 + 26 * 16, 16);write(1, dane + i * 512 + 27 * 16, 16);write(1, dane + i * 512 + 28 * 16, 16);write(1, dane + i * 512 + 29 * 16, 16);write(1, dane + i * 512 + 30 * 16, 16);write(1, dane + i * 512 + 31 * 16, 16);}}
Statistics: Posted by MatSOBDev2 — Wed Jun 05, 2024 11:43 pm