SD+S5230
Добавлено: Вт авг 11, 2015 20:28:14
Здравствуйте, мучаюсь уже 2 день с картой sd и изображением, голова кипит. Пишу в CVAvr, задача такая, вывести изображения с карты на дисплей от S5230. С памяти мк, выводит замечательно и быстро. А вот с карты никак не пойму как это сделать. Конвертирую bmp в массив flash char pic[ 0x00,0x23....] программой Img2LCD. С карты удается считывать с txt файлов числа и прочие символы.
disk_initialize(0); //инициализируем флешку
f_mount(0, &fs); //монтируем файловую систему
f_open(&fp, "0:/33.txt", FA_OPEN_EXISTING | FA_READ); //открываем файл 1.txt только для чтения
f_read(&fp, buffer,20, &br); //читаем в буфер 2 символа
f_close(&fp); //закрываем файл
Если представить buffer как набор чисел, и записать в функцию вывода изображения, получается бред какойто, вверху разноцветная полоска и все.
Я так понимаю нужно считывать по 512байт и склеивать их, но где взять столько памяти? Рыл в инете, но кроме плееров, народ ничего не делает, да и не особо они используют библиотеку ff.h в CVAvr.
и еще, есть такое прерывание:
interrupt [TIM1_OVF] void timer_comp_isr(void)
{
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
disk_timerproc(); }
функция disk_timerproc в описание идет как прерывание через 10мс, без нее совсем нельзя, или чтоб хотябы таймер не занимала?
мне в принципе нужно около 1мб для рисунков, может стоит использовать микросхему памяти вместо флешки, скорость где лучше будет?
disk_initialize(0); //инициализируем флешку
f_mount(0, &fs); //монтируем файловую систему
f_open(&fp, "0:/33.txt", FA_OPEN_EXISTING | FA_READ); //открываем файл 1.txt только для чтения
f_read(&fp, buffer,20, &br); //читаем в буфер 2 символа
f_close(&fp); //закрываем файл
Если представить buffer как набор чисел, и записать в функцию вывода изображения, получается бред какойто, вверху разноцветная полоска и все.
Я так понимаю нужно считывать по 512байт и склеивать их, но где взять столько памяти? Рыл в инете, но кроме плееров, народ ничего не делает, да и не особо они используют библиотеку ff.h в CVAvr.
и еще, есть такое прерывание:
interrupt [TIM1_OVF] void timer_comp_isr(void)
{
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
disk_timerproc(); }
функция disk_timerproc в описание идет как прерывание через 10мс, без нее совсем нельзя, или чтоб хотябы таймер не занимала?
мне в принципе нужно около 1мб для рисунков, может стоит использовать микросхему памяти вместо флешки, скорость где лучше будет?
