Помогите проверить скорость сохранения на SD карту

Тема в разделе "Arduino & Shields", создана пользователем БДмитрий, 13 мар 2017.

  1. Всё. Я понял. Так у меня действительно ничего не получится. Проверил ещё несколько карт. Быстрее 17 мс не нашёл. Да и на самом деле такая запись на карту не эффективна. Значит мне нужен контроллер с DMA. Основной контроллер будет с нужной скоростью опрашивать датчик и формировать два буфера по очереди, а контроллер DMA сбрасывать их на карту. Жаль, я думал меньшей кровью отделаюсь. Ан нет.
     
  2. Faberge

    Faberge Administrator Администратор

    Я бы советовал поступить как раз наоборот: считывать по I2C шине с помощью DMA и записывать на карточку уже в основной программе. Дело в том, что встроить поддержку DMA в уже готовую библиотеку для работы с файловой системой на флешке гораздо сложнее, чем просто считывать приходящие в контроллер значения. Плюс вам придется по ходу дела проставлять временные и разделительные метки между самими данными.

    А вообще, современные DMA в том же STM32 способны генерировать прерывания по наполнению половины буфера. То есть копируется первый Кбайт данных из периферии в ОЗУ, основной контроллер получает сигнал и начинает копировать уже из ОЗУ на флешку первый Кбайт, пока DMA заполняет второй Кбайт. Далее DMA просто перезапускается ну и т. д.
     
  3. Понял. Учту. Спасибо. А какой контроллер посоветуете? Желательно, что бы он был очень не большой и мог уходить в спящий режим и просыпаться по времени. И, само собой, под эту задачу.
     
  4. Faberge

    Faberge Administrator Администратор

    У STM подойдет F103 серия, это ядро M3. Или Arduino Due, она тоже на M3 и тоже с DMA. С Due будет проще работать, уже все настроено и масса готовых примеров, по сравнению с STM32, но сам чип больше.
     
  5. Banzay

    Banzay Нуб

    Столкнулся с такой же проблемой. Я совсем нуб и как с буфером работать не пойму. Создавать массив на 200 жлементов типа float записывать в них данные и записывать потом в файл?