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

 
 
> 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
 
Start new topic
Ответов
romas2010
сообщение Apr 23 2017, 12:26
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 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



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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 10:25
Рейтинг@Mail.ru


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