реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32 SDIO в режиме опроса без SPL + FatFs
Влад Р.
сообщение Oct 27 2015, 11:51
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 87
Регистрация: 9-12-10
Пользователь №: 61 511



Всем доброго дня!

Пытаюсь соединить STM32F407 и SD-карту для работы с файловой системой посредством интерфейса SDIO.
Подключение стандартное. Detect пин на PH13. На всех пинах, кроме PC12 (SDIO_CK) включена встроенная подтяжка к питанию.

Работу с файловой системой должна взять на себя FatFs. С SDIO работаю вручную в 4-битном режиме (до инициализации в 1-битном).
Пробую записать файл: файловую систему библиотека определяет, файл создается, но информация в него не записывается.
Если сделать точку останова в функции записи блока (перед возвратом из функции), то информация все-таки записывается, но не более 1023 байт.
Размер блока - 512 байт. Если попытаться таким способом записать 1024 байта, то программа виснет на функции f_closе() и файл остается пустым.
Переделанный файл diskio.c в аттаче.

Запускаю так (main.c):
CODE
#include "stm32f4xx.h"
#include "main.h"
#include "ff.h"
#include "ffconf.h"

static inline void Init_All(void);

char buf[1024];

int main()
{
for (int i = 0; i < 1024;) {
buf[i++] = '1';
buf[i++] = '2';
buf[i++] = '3';
buf[i++] = '4';
}

Init_All();

FATFS FATFS_Obj;
FIL file;
UINT nWritten;
volatile FRESULT res;

res = f_mount(&FATFS_Obj, "0:", 1);

res = f_open(&file, "Имя файла.txt", FA_CREATE_ALWAYS | FA_WRITE);

res = f_write(&file, buf, 1023, &nWritten);

res = f_close(&file);

res = f_mount(NULL, "0:", 1);

for (;;) {
Background();
}
}

static inline void Init_All(void)
{
SysTick_Config(SystemCoreClock / 1000);
}

inline void Background(void)
{
return;
}

void SysTick_Handler(void)
{
extern void disk_timerproc(void);
static uint8_t tick10 = 0;
if (++tick10 == 10) {
disk_timerproc();
tick10 = 0;
}
}


Буду благодарен за любую помощь! rolleyes.gif
Прикрепленные файлы
Прикрепленный файл  diskio.zip ( 3.63 килобайт ) Кол-во скачиваний: 35
 
Go to the top of the page
 
+Quote Post
romas2010
сообщение Nov 27 2015, 20:00
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 25-11-11
Пользователь №: 68 515



Цитата(Влад Р. @ Oct 27 2015, 14:51) *
Всем доброго дня!

Пытаюсь соединить STM32F407 и SD-карту для работы с файловой системой посредством интерфейса SDIO.
Подключение стандартное. Detect пин на PH13. На всех пинах, кроме PC12 (SDIO_CK) включена встроенная подтяжка к питанию.

Работу с файловой системой должна взять на себя FatFs. С SDIO работаю вручную в 4-битном режиме (до инициализации в 1-битном).
Пробую записать файл: файловую систему библиотека определяет, файл создается, но информация в него не записывается.
Если сделать точку останова в функции записи блока (перед возвратом из функции), то информация все-таки записывается, но не более 1023 байт.
Размер блока - 512 байт. Если попытаться таким способом записать 1024 байта, то программа виснет на функции f_closе() и файл остается пустым.
Переделанный файл diskio.c в аттаче.


Я посмотрел ваш код в аттаче. могу сказать следующее-вы просто запихнули данные в карту,а ведь надо карте еще и запрограммировать данные,поэтому нужно еще читать статус карты(cmd13 если мне память не изменяет)...более того,согласно описанию спецификации на карту,перед всеми операциями необходимо дождаться,пока карта не встанет в режим "transition state"
еще нюанс-проверьте частоту тактирования,можно даже начать работать на частоте инициализации карты,потом с каждой новой компиляцией увеличивать ее до максимально возможного
и еще нюанс-используйте DMA,причем не советую,а рекомендую это сделать. У STM несколько своеобразная периферия(касаемо не только SDIO),и когда я отлаживал пошагово свой проект,у меня постоянно было то rxoverrun,то txunderrun error.Аж до психов порой доходило..Сел,разобрался,пристегнул DMA,проблема исчезла...здесь у меня в аттаче немного проекта (keil 4.73)и спецификация на карту и программулина на винду,которя посекторно оперирует с дисками и покажет вам,что вы там туда понаписалиПрикрепленный файл  V6.ZIP ( 2.67 мегабайт ) Кол-во скачиваний: 171
если есть вопросы то email vch47062@mail.ru
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Nov 28 2015, 02:00
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Еще раз посоветую посмотреть как я сделал - работающий проект тут https://188.134.5.254/browser/hfreceiver/trunk/sdcard.c - недостающее рядом в hardware.c
Go to the top of the page
 
+Quote Post
romas2010
сообщение Apr 23 2017, 12:26
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 25-11-11
Пользователь №: 68 515



Всем доброго дня!!
Народ, делал ли кто нибудь подключение нескольких SD-карт на одну шину? Если да,то можно ли ногу CMD в контроллере SDIO STM32 сконфигурировать как OPEN_DRAIN (по типу I2C) или все-таки надо ставить внешний демультиплексор для "chip select"? ответы в стиле "возьми SSD+cortex A7" неприемлемы из-за технико-финансовых ограничений проекта...проект-типа многоканальный аудиорегистратор с хранением фраз в течении года
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 24 2017, 13:13
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(romas2010 @ Apr 23 2017, 14:26) *
SDIO STM32 сконфигурировать как OPEN_DRAIN (по типу I2C) или все-таки надо ставить внешний демультиплексор для "chip select"

Зачем? Повесить на SPI и CS-ов - вагон без всяких open drain.
Go to the top of the page
 
+Quote Post
romas2010
сообщение Apr 24 2017, 14:56
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 25-11-11
Пользователь №: 68 515



Цитата(jcxz @ Apr 24 2017, 16:13) *
Зачем? Повесить на SPI и CS-ов - вагон без всяких open drain.


Тоже склоняюсь к этому мнению....Хоть и некоторым образом некошерно,но надежно...спасибо
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 15:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016