SD Card SDIO

Rogerclark
Солнце 07 июня 2015 12:21
На случай, если это удобно,

Я нашел какой -то код, который мы можем получить порт на клен, чтобы сделать SD -карту SDIO

https: // bitbucket.org/antlabs_dev/fatfs ... 32F103/SRC

Но мне лучше проверить, что это работает первым.

Одна вещь, чтобы отметить, в серии F103C нет SDIO E.глин. Maple Mini, или синяя таблетка и т. Д. Не обладает этой способностью, и при этом Maple Rev 3 (который использует F103RB)
Минимальное оборудование - это кленовый ret6 или с точки зрения общих плат, F103RC - минимальное требование оборудования.

Меня интересует это, так как у меня есть платы F103V и F103Z, оба с SD -картами, которые, как я подозреваю, подключены через SDIO (но мне нужно проверить соединения)

Если у меня появится шанс, я посмотрю, смогу ли я получить код (см. Ссылку выше) для компиляции в EM: блоки или Coocox, просто чтобы посмотреть, действительно ли он работает

Пса. Я уверен, что есть другой код, который делает это.

Ппс. Я знаю, что он использует периферийную LIB STD, но периферийная либера.

Робка
Sun 27 декабря 2015 г. 11:55 утра
Был ли какой -либо тест на это?

Я только что узнал хорошую доску STM32F103VET6 и ее схема: http: // www.STM32duino.com/viewtopic.PHP?F = 28&t = 821 и хотел бы знать, смогу ли я использовать порт SDIO или лучше полагаться на SPI SD

РЕДАКТИРОВАТЬ: Нашел другую реализацию (для F4, но эта, кажется, более полная, поддерживает SPI и SDIO 1 и 4 бит и реализует полную функциональность) http: // stm32f4-discovery.com/2014/07/li ... X-Devices/

ZMEMW16
Sun 27 декабря 2015 г. 15:31
Этот сайт стоит посетить его для получения информации на этой странице!

Библиотеки, перечисленные в списке GPLV3 для STM32F4, также выглядит довольно полезным для клея.

Стивен

Sheepdoll
Солнце 27 декабря 2015 г. 18:35
Ах, хорошие надежные жирные жилы

Я много лет использую это в AVR, есть версия, которая работает на Tiny88! Я подозреваю, что есть много либеров Arduino, которые также включают Fatfs.

FATFS также является включенным наложением SDIO, которое CubeMX включает в себя, когда раздел файловой системы нажимается на. Все, что нужно сделать, это создать мост между аппаратным/программным SPI и остальной частью библиотеки. Когда я играл с примером Nucleo и Discovery, даже этот код моста был включен.

Все кусочки головоломки здесь, они просто должны быть собраны в правильном порядке.

Рагнарок
Ср 21 сентября 2016 12:12
Привет, ребята,

Когда вы говорите, что у F103C нет SDIO, D'Вы имеете в виду, что я вообще не могу использовать SD -карту? SDIO - это просто интерфейс для SD -карты, не так ли? Если это так, то разве я не смогу использовать серию F103C (чтобы быть конкретным, «синяя таблетка») для хранения значений, которые я получаю от ADC?
В настоящее время я получаю около 130 000 образцов в секунду, но у меня нет средств для их хранения. :(

Zoomx
Ср 21 сентября 2016 12:33
Библиотека SD использует SPI, но я не уверен, очень бывает очень быстро для 130.000 образцов в секунду.

Ахулл
Ср 21 сентября 2016 г., 19:06
Теоретически вы должны иметь возможность подтолкнуть 130 000 образцов на внешнее вспышку с помощью SPI, особенно из вас, вы можете взломать DMA в микс, но я не настолько уверен, что вы так легко получите на SD -карту. Не потому, что теоретическая скорость карты является узкой личкой, больше потому, что я подозреваю, что накладные расходы на написание в Fatfs с процессором 72 МГц могут быть растяжкой. Все зависит от того, насколько хорошо оптимизирована Arduino Lib. Я думаю, что это задача, которую стоит принять, в интересах обучения невежества, такого как я, если по какой -то другой причине. : D

Zoomx
Чт 22 сентября 2016 12:51
Среди примеров SDFAT на Arduino есть один из быстрых данных Datalogger, LowlatencyLogger, но почитается, что он достигает всего 4000 образцов в секунду в секунду в секунду в секунду.

Я считаю, что лучше использовать Raspberrypi в одиночку или в качестве сборщика данных.

Пито
Пт 23 сентября 2016 г. 10:36
Речь идет не о необработанном узком месте SPI или SDIO Speed - Это все о задержке записи SDCARD.
Вы можете легко написать 3 мегабайта/сек через SPI (или SDIO), но, SDCARD Написать задержку wl Может попасть в любое время (каждые несколько MSEC и случайным образом), а сам WL может длиться до 250 мс.

WL - это время, когда ваш SDCARD не принимает никаких входящих данных, поскольку он делает свое внутреннее домашнее хозяйство.
Хиты WL очень часто, случайные по происхождению и случайные по продолжительности.


Таким образом, чтобы написать в SDCARD устойчивый поток данных, вы должны каким -то образом преодолеть WL.

Не ожидайте, что написание в SDCARD работает так же, как написание серийного SRAM.

Возможным решением является использование буфера FIFO, где вы записываете из источника в FIFO (когда FIFO не заполнено) с необходимой скоростью. Устойчивый поток записей данных. И, параллельно, вы читаете данные из FIFO, и когда FIFO не пусто, вы записываете данные в SDCARD.
Когда вы соблюдаете водяной знак FIFO, вы увидите, как написание в SDCARD довольно часто прерывается случайно грядущими всплесками (из -за WL).

Размер fifo = sample_record_size * sampling_rate * max_expected_wl
Пример:
Если вы хотите сохранить 1KB данных 500x в секунду (500 КБ/с), вам нужно 500 КБ/сек. * 250 мс. = 125 КБ большой буфер FIFO, чтобы компенсировать максимальный возможный WL (здесь Max ожидается, что WL установлен на 250 мс).

Вот как я записал задержки записи попадание/события со стандартной картой MicroSDHC 4 ГБ с Nilrtos во время написания данных в прошлом.
X - время сбора данных/записи данных в MSECS, Y - продолжительность удара WL в USECS. Вы можете увидеть количество ударов WL во время 32 секунд захвата данных огромно.
Скорость выборки данных составляет 1000 Гц (период выборки 1 мс).
Напишите Latency.jpg
Написать задержку.JPG (83.31 киб) просмотрено 6449 раз

Рагнарок
Чт, 6 октября 2016 г., 14:02
Спасибо, Пито, который имеет такой смысл и очень полезен!

Вы сказали, что «параллельная» передача данных из буфера FIFO на SD -карту упростит ситуацию и увеличит скорость передачи. Как я могу это добиться? Разве STM не однопоточный?
Чтобы быть более конкретным, я могу записать данные из буфера на SD -карту после хранения ее в буфере, и в течение времени, необходимых для перемещения данных из буфера на SD -карту, я не могу получить новые значения ADC. Будет ли это не так, как написание непосредственно на SD -карту?

Пито
Чт, 6 октября 2016 г., 16:11
Параллельно означает, что вы используете RTO - выше было сделано с помощью Nilrtos, но это может быть любые RTO, которые вы получили под рукой.
(Вы можете использовать стандартное кодирование, но я никогда не делал этого таким образом.)

Задача 1 - Производитель - датчики образца и записи данных на FIFO при необходимой скорости отбора проб (т.е. 100bytes 500x в секунду = 50 кб/с)
Делайте это, пока FIFO не заполнено (если FIFO правильно размер, задача 2 будет опустошать его вовремя, несмотря на задержки записи, здесь худший размер корпуса FIFO будет 50 кб/с * 250 мс. = 12.5 КБ, 250msecs - это максимальная задержка записи в соответствии с спецификацией SDCARD от нескольких лет назад)

Задача 2 - Потребитель - В то время как FIFO не является пустым записями чтения данных от FIFO и записывает записи данных на SDCARD Полную скорость SDCARD (то есть 800KB/SEC).

Оба задания запускаются в «параллельном» и использование 2 семафоров для сигнала друг друга.

В Nilrtos Distro есть демонстрация, как использовать FIFO для написания в SDCARD. Nilrtos связан с Chibios или Arduino (нет порта с STM32duino еще планируется).

https: // github.com/greiman/nilrtos-ardu ... Регистратор.Ино

Когда позволит время, я создам простую демонстрацию в Freertos, так как это не совсем понятно среди людей еще :)

Пито
Пт, 07 октября 2016 г., 18:08
http: // www.STM32duino.com/viewtopic.PHP?f = 3&t = 1453

Шериннкпотеин
Вт 11 апреля 2017 г. 11:02
Rogerclark написал:На случай, если это удобно,

Я нашел какой -то код, который мы можем получить порт на клен, чтобы сделать SD -карту SDIO

https: // bitbucket.org/antlabs_dev/fatfs ... 32F103/SRC

Но мне лучше проверить, что это работает первым.

астер
Пн июня 05, 2017, 8:50 вечера
Я совершенно уверен, что хорошо известный SDFAT уже реализовал SDIO

Стивестронг
Вт, 06 июня 2017 г. 8:22 утра
Уже есть рабочая версия для ядра STM322ERIER: ViewTopic.PHP?F = 51&t = 2036

Между тем, я также пытаюсь внедрить не HAL (Libmaple) версию SDIO Driver для SDFAT LIB, Похоже на Teensy Driver.
Мой прогресс задокументирован здесь, работа продолжается (Проблемы с отладкой с затмением). Приглашается любой вклад!

RFM69