Я использую atmega1284p, и мне нужно прочитать данные с SD-карты и отправить чип аудиодекодера. Я могу сделать это с низким битрейтом, с более высоким битрейтом. MCU изо всех сил пытается отправить данные вовремя. С уважением к моим исследованиям по достижению высоких битрейтов, файлы могут быть прочитаны несколькими блоками, и после чтения первого блока нет задержки. Я выделил свой многоблочный буфер, но не знаю, как читать блоки несколькими способами с помощью библиотеки ELM Chans FATFS. Может F_read сделай это или любое другое предложение.
AVR и FATFS Многоблочное чтение
Ответы (1)
Вы должны сказать f_read()
, что хотите прочитать больше байтов, чем размер блока.
sect = clst2sect(fs, fp->clust); /* Get current sector */
if (sect == 0) ABORT(fs, FR_INT_ERR);
sect += csect;
cc = btr / SS(fs); /* When remaining bytes >= sector size, */
if (cc > 0) { /* Read maximum contiguous sectors directly */
if (csect + cc > fs->csize) { /* Clip at cluster boundary */
cc = fs->csize - csect;
}
if (disk_read(fs->pdrv, rbuff, sect, cc) != RES_OK) ABORT(fs, FR_DISK_ERR);
...
}
Это говорит о том, что если f_read()
дано количество байтов для чтения [btr
], которое больше, чем размер сектора файловой системы [SS(fs)
], тогда выполните многоблочное чтение cc
блоков, начинающихся с блока sect
.
Примечание. Сектор на диске аналогичен блоку на SD-карте.
person
JettJ
schedule
26.01.2021