
18F4525 + STA 013 + SD Card = проблем с SPI
Здравейте, стигнах до една задънена улица и искам да се допитам до вас за решение на проблема ми.
Правя проект с изброените в заглавието на темата чаркалаци.
Идеята на проекта е да стане MP3 плеър, който да работи с SD карти форматирани с FAT16.
Проблемите с SD картата успях да ги преборя и всичко е наред, файловете се четат.
MP3 декодера също съм го подкарал имам звук на изхода.
Проблема ми е следния: как най-оптимално да чета данни от картата и да ги пращам на декодера?
И двете устройства са свързани към SPI. Честотата на SPI при нормална работа ми е 6,25Mhz.
Първоначалната ми идея беше да чета един сектор от паметта (512 байта) да го запиша в масив след, което да изпращам масива към декодера.
Получи се нещо... имаше звук на изхода но беше накъсан.
Тестов фаил от около 2секунди с битрет 40Kbit/s се просвирваше за около 5-6секунди на пресекулки.
Втори вариант: При всяко четене на байт от SD-картата да използвам предходния прочетен байт за да инициирам транфера по шината вместо стандартоното изпращане на 0хFF. Eдновременно съм селектирал и SD картата и MP3 декодера. По този начин всеки прочетен от SD картата байт при следващото четене го пращам към MP3 декодера и към SD картата. На теория ми се стори добре но на практика зле... данните, които чета от SD и после ги пращам по шината объркват картата и почва да ми връща различни данни.
Дайте съвет как мога да си реша проблема с препращането на информацията към декодера.
Един от вариантите е да свържа CLOCK и SDI на декодера към два произволни крака на процесора и да емулирам тактуването и пращането на данни по SPI. Но на първо време не искам да правя такива тарикатлъци

.