Акции
Блог
О 3DiY
  • О компании
  • Реквизиты
  • Партнеры
  • Клиенты
  • Вакансии
Оплата
Доставка
Гос. закупки
Товары под заказ
ВК Видео
Отзывы
Услуги
  • 3D печать
    • 3D печать пластиком FDM/FFF
    • 3D печать фотополимером
Контакты
  • Как до нас добраться
    8 (800) 500-45-93
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail

    info@3d-diy.ru — отдел продаж

    support@3d-diy.ru — тех. поддержка

    Адрес
    Москва, Павловская улица, 27с7
    м. Тульская
    Режим работы
    пн – пт 11:00—19:00
    8.05 – 11.05 не работаем
    3DIY
    3D принтеры
    Материалы для 3D печати
    Комплектующие 3D принтера
    Arduino и робототехника
    Комплектующие ЧПУ станка
    Инструменты
    Запчасти для 3D принтеров по брендам
    Товары снятые с продажи
    • 3D принтеры
      • Печать пластиком (FDM/FFF)
        Печать пластиком (FDM/FFF)
      • Печать фотополимером (SLA/DLP/LCD)
        Печать фотополимером (SLA/DLP/LCD)
      • Печать воском (MJP)
        Печать воском (MJP)
      • Для дома
        Для дома
      • Для бизнеса
        Для бизнеса
      • Для производства
        Для производства
      • Наборы для сборки
        Наборы для сборки
      • Промышленные
        Промышленные
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Материалы для 3D печати
      • Пластики
        Пластики
        • ABS
        • PLA
        • PETG
        • HIPS
        • PVA
        • FLEX (TPU)
        • Nylon/PA (Нейлон)
        • PC (Поликарбонат)
        • PEEK
        • POM (Полиацеталь)
        • PP (Полипропилен)
        • Резина
        • Стеклонаполненные
        • Термочувствительные
        • Угленаполненные
        • SBS
        • Светящиеся
        • Металлические
        • Спец. пластик
        • Пластик для 3D ручек
      • Фотополимеры
        Фотополимеры
        • Стандартные
        • ABS-типа
        • Гибкие
        • Водосмываемые
        • Выжигаемые
        • Инженерные
        • Стоматологические
        • Для хобби
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Комплектующие 3D принтера
      • Электроника
        Электроника
        • Платы управления
        • Шаговые двигатели (ШД)
        • Драйверы ШД 3D принтеров
        • Драйверы шаговых двигателей ЧПУ
        • Дисплеи
        • Датчики и модули
        • Блоки питания
        • Реле
        • Концевые выключатели
        • Вентиляторы      
          • Вентиляторы осевые
          • Вентиляторы радиальные (улитки)
          • Решетки и фильтры для вентиляторов
        • Провода, кабели и разъемы
      • Механика
        Механика
        • Зубчатые шкивы
        • Зубчатые ремни
        • Трапецеидальные винт-гайки
        • Шарико-винтовые передачи (ШВП)      
          • Гайки ШВП
          • Модули крепления гаек ШВП
          • Обратотанные ШВП
          • Опоры ШВП
        • Соединительные муфты
        • Ролики для зубчатых ремней
        • Цилиндрические направляющие
        • Рельсовые направляющие      
          • Профильные направляющие HIWIN
          • Профильные направляющие КИТАЙ
        • Держатели вала
        • Корпусные детали      
          • Корпуса
          • Апгрейды
          • Комплектующие для корпусов
        • Запчасти OpenBuilds
        • Подшипники качения
        • Пружины
      • Нагревательные столы и сопутствующие
        Нагревательные столы и сопутствующие
        • Нагревательные платформы
        • PEI пластины
        • Стекла и Зеркала
        • Теплоизоляция
        • Основания для столов
        • Силиконовые проставки (пружины)
        • Термисторы
        • Зажимы-фиксаторы
        • Пружины
      • Экструдеры
        Экструдеры
        • Экструдеры и механизмы подачи
        • Хотэнды
        • Сопла
        • Термобарьеры
        • Термисторы
        • Нагревательные блоки
        • Теплоизоляция нагревательных блоков
        • Тефлоновые трубки
        • Радиаторы
        • Нагревательные элементы
        • Шестерни
        • Фитинги
        • Сопутствующие товары
      • Сушилки для пластика
        Сушилки для пластика
      • УФ-камеры
        УФ-камеры
      • Мойки
        Мойки
      • Ультразвуковые ванны (мойки)
        Ультразвуковые ванны (мойки)
      • 3D ручки
        3D ручки
      • 3D-сканеры
        3D-сканеры
      • Расходные материалы для SLA / LCD
        Расходные материалы для SLA / LCD
      • Сопутствующие
        Сопутствующие
      • Наборы для мейкеров
        Наборы для мейкеров
      • Инструменты для 3D печатника
        Инструменты для 3D печатника
      • Постобработка
        Постобработка
      • Адгезивы
        Адгезивы
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Arduino и робототехника
      • Arduino
        Arduino
      • Raspberry Pi
        Raspberry Pi
        • Микрокомпьютеры
        • Дисплеи      
          • TFT-LCD дисплеи Raspberry Pi
          • IPS-LCD дисплеи Raspberry Pi
          • AMOLED дисплеи Raspberry Pi
        • Корпуса
        • Шилды
        • Камеры
        • Питание
        • Охлаждение
      • Обучающие наборы
        Обучающие наборы
      • Orange Pi
        Orange Pi
      • Одноплатники
        Одноплатники
      • Модули
        Модули
        • Платы расширения
        • Беспроводные модули
        • Интерфейсы
        • Релейные модули
        • Преобразователи питания
        • Лазерные модули
        • Аудио
        • Видео
        • Клавиатура
        • Драйверы моторов
        • Измерительные
        • Другие
      • Датчики
        Датчики
        • Аудио
        • Газа
        • Инфракрасные
        • Климатические
        • Жидкостные
        • Механического воздействия
        • Положения (акселерометры/компасы/гироскопы)
        • Пространства
        • Света и цвета
        • Тактильные
        • Тока и напряжения
      • Дисплеи
        Дисплеи
        • TFT-LCD дисплеи
        • STN-LCD дисплеи
        • LED дисплеи
        • OLED дисплеи
        • Дисплеи DWIN
        • E-Paper дисплеи
      • Механика
        Механика
        • Колёса
        • Коллекторные двигатели
        • Сервоприводы
        • Шаговые двигатели
        • Другие
        • Линейные актуаторы (приводы)
      • Макетные платы
        Макетные платы
      • Светодиоды
        Светодиоды
        • Светодиодные кольца
        • Светодиодные матрицы
        • Сегментные индикаторы
        • Светодиоды круглые
        • Другие
      • Провода и кабели
        Провода и кабели
      • Источники питания
        Источники питания
      • Радиодетали
        Радиодетали
        • Кварц
        • Кнопки
        • Конденсаторы
        • Резисторы
        • Транзисторы
        • Другие
        • Стабилизаторы
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Комплектующие ЧПУ станка
      • Шаговые двигатели и аксессуары
        Шаговые двигатели и аксессуары
        • NEMA 8
        • NEMA 11
        • NEMA 14
        • NEMA 17
        • NEMA 23
        • NEMA 34
        • NEMA 42
        • NEMA 52
        • Шаговые актуаторы
        • Шаговые двигатели с редуктором      
          • C планетарным редуктором
          • C цилиндрическим редуктором
        • Шаговые двигатели с тормозом
        • Круглые шаговые двигатели
        • Сопутствующие
      • Зубчатые ременные передачи
        Зубчатые ременные передачи
        • Зубчатые ремни      
          • Зубчатые ремни GT2
          • Зубчатые ремни HTD 3M
          • Зубчатые ремни HTD 5M
          • Зубчатые ремни T2.5
          • Зубчатые ремни T5
        • Зубчатые шкивы      
          • Зубчатые шкивы GT2
          • Зубчатые шкивы HTD 3M
        • Ролики
      • Шарико-винтовые передачи (ШВП)
        Шарико-винтовые передачи (ШВП)
        • Готовые ШВП, обработанные
        • Гайки ШВП
        • Опоры ШВП
        • Модули крепления гаек ШВП
        • Кронштейны-опоры ШВП
      • Трапецеидальные передачи винт-гайка
        Трапецеидальные передачи винт-гайка
        • Винты трапецеидальные
        • Гайки трапецеидальные
        • Муфты Oldham
        • Сопутствующие
      • Цилиндрические направляющие
        Цилиндрические направляющие
        • Полированные валы
        • Цилиндрические рельсы
        • Линейные подшипники
        • Модули с линейным подшипником
        • Втулки скольжения
        • Держатели вала
        • Пластиковые втулки скольжения
      • Профильные направляющие
        Профильные направляющие
        • Профильные направляющие HIWIN      
          • Каретки HIWIN
          • Рельсы HIWIN
        • Профильные направляющие      
          • Каретки
          • Рельсы
        • Роликовые направляющие
      • Муфты соединительные
        Муфты соединительные
        • Жесткие
        • Кулачковые
        • Спиральные
        • Мембрнные
        • Сильфонные
        • Пружинные
        • Гибкие
      • Электроника
        Электроника
        • Блоки питания
        • Вентиляторы электрические и аксессуары      
          • Вентиляторы осевые
          • Вентиляторы радиальные (улитки)
          • Решетки и фильтры для вентиляторов
        • Драйверы шаговых двигателей
        • Микропереключатели и концевики
        • Датчики касания инструмента
        • Кнопки и индикаторы
      • Фрезы
        Фрезы
        • Спиральные фрезы      
          • Стружка вверх
          • Стружка вниз
        • Компрессионные фрезы
        • Прямые фрезы
        • Конусные фрезы
        • Сферические фрезы
        • Фрезы рашпильные (кукуруза)
        • Цанги
        • Сопутствующие
      • Карбоновый профиль / трубки
        Карбоновый профиль / трубки
      • Пневматическое оборудование
        Пневматическое оборудование
        • Регуляторы давления, фильтры, лубрикаторы
      • Системы подачи смазки
        Системы подачи смазки
        • Автоматические смазочные насосы
        • Ручные смазочные насосы
        • Маслораспределительные аксессуары
      • Сопутствующие
        Сопутствующие
      • Шпиндели и сопутствующие
        Шпиндели и сопутствующие
        • Шпиндели воздушного охлаждения
        • Шпиндели жидкостного охлаждения
        • Частотные преобразователи
        • Крепления для шпинделей
        • Системы охлаждения шпинделей
        • Подведение СОЖ
        • Прижимы для шпинделей
        • Распылители масляного тумана
        • Щетка-насадка для шпинделя
        • Сопутствующие для шпинделей
      • Механика
        Механика
        • Кабель-каналы гибкие
        • Подшипники качения
        • Подшипниковые узлы
      • Конструкционный профиль
        Конструкционный профиль
        • Сухари пазовые
        • Т-болты
        • Т-гайки
        • Серия 15      
          • Анодированный
          • Без покрытия
        • Серия 20      
          • Анодированный
          • Без покрытия
        • Серия 20 (V-паз)      
          • Анодированный
          • Без покрытия
        • Серия 30      
          • Анодированный
          • Без покрытия
        • Серия 40      
          • Анодированный
          • Без покрытия
        • Серия 45      
          • Анодированный
          • Без покрытия
        • Серия 50      
          • Анодированный
          • Без покрытия
      • Комплектующие OpenBuilds
        Комплектующие OpenBuilds
        • Ролики OpenBuilds
      • Лазерные станки
        Лазерные станки
      • Лазерная резка и аксессуары
        Лазерная резка и аксессуары
        • Блоки розжига
        • Воздушные компрессоры
        • Датчики
        • Крепление лазерной трубки
        • Лазерные головки и держатели зеркал
        • Полупроводниковые лазерные модули
        • Системы охлаждения
        • Системы управления (Контроллеры)      
          • Контроллеры RuiDa
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Инструменты
      • Зачистка и обрезка кабеля
        Зачистка и обрезка кабеля
      • Измерительный инструмент
        Измерительный инструмент
        • Мультиметры
      • Кабель и провода
        Кабель и провода
        • Акустический кабель
        • Высоковольтный кабель
      • Клеевые пистолеты (термопистолеты)
        Клеевые пистолеты (термопистолеты)
      • Напильники и надфили
        Напильники и надфили
      • Обжимной инструмент
        Обжимной инструмент
      • Отвертки
        Отвертки
      • Паяльное оборудование
        Паяльное оборудование
        • Наборы для паяльных работ
        • Отсосы припоя
        • Паяльные принадлежности
        • Паяльные станции
        • Припой
        • Электрические паяльники
      • Пинцеты
        Пинцеты
      • Расходные материалы
        Расходные материалы
        • Изолента
        • Клеевые стержни
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Запчасти для 3D принтеров по брендам
      • 3DIY printers
        3DIY printers
        • Bizon 3
        • STRATEX 350
        • STRATEX 500
        • REX 6K Mono
        • P3 Steel 200 PRO
        • P3 Steel 300 PRO
        • P3 Steel 300 DUAL PRO
      • Bambu Lab
        Bambu Lab
        • Bambu Lab A1 mini
        • Bambu Lab A1
        • Bambu Lab P1 Series
        • Bambu Lab X1 Series
      • Creality
        Creality
        • Creality K1
        • Creality K1 MAX
        • Creality K1C
        • Creality K2 plus
      • Flashforge
        Flashforge
        • Adventurer 5M / 5M Pro
      • Qidi
        Qidi
        • Qidi Tech X-Plus 3
        • Qidi Tech X-Max 3
        • QIDI Plus 4
        • Qidi Q1 Pro
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Товары снятые с продажи
        Phrozen
        FlyingBear
        QIDI
        CreatBot
        FlashForge
        Bambu Lab
        ERYONE
        Elegoo
        eSUN
        Creality
        BIGTREETECH
        Anycubic
      Войти
      0Избранное
      0Корзина
      3D принтерыПластик для 3D принтераФотополимерыКомплектующие 3DКомплектующие ЧПУРобототехникаЗапчасти 3D принтеров по брендам
      3DIY
      Войти
      0Избранное
      0Корзина
      3DIY
      Телефоны
      8 (800) 500-45-93отдел продаж Россия
      8 (495) 565-35-93отдел продаж Москва
      E-mail

      info@3d-diy.ru — отдел продаж

      support@3d-diy.ru — тех. поддержка

      Адрес
      Москва, Павловская улица, 27с7
      м. Тульская
      Режим работы
      пн – пт 11:00—19:00
      8.05 – 11.05 не работаем
      0
      0
      • Кабинет
      • 0Избранное
      • 0Корзина
      • Бренды
      • Акции
      • Услуги
        • Услуги
        • 3D печать
          • 3D печать
          • 3D печать пластиком FDM/FFF
          • 3D печать фотополимером
      • Компания
        • Компания
        • О компании
        • Реквизиты
        • Партнеры
        • Клиенты
        • Вакансии
      • Блог
      • Информация
        • Информация
        • Гарантия на товар
        • Возврат товара
        • Политика конфиденциальности
        • Договор-оферта
        • FAQ
      • Контакты
        • Контакты
        • Как до нас добраться
      8 (800) 500-45-93отдел продаж Россия
      • Телефоны
      • 8 (800) 500-45-93 отдел продаж Россия
      • 8 (495) 565-35-93 отдел продаж Москва
      • info@3d-diy.ru — отдел продаж

        support@3d-diy.ru — тех. поддержка

      • Москва, Павловская улица, 27с7
        м. Тульская
      • пн – пт 11:00—19:00
        8.05 – 11.05 не работаем
      Главная
      Блог
      Модули
      Внешняя память FRAM. Преимущества и недостатки

      Внешняя память FRAM. Преимущества и недостатки

      Внешняя память FRAM. Преимущества и недостатки
      Модули 1 января 2024

      Содержание

      • Назначение внешней памяти для Ардуино,
      • Разновидности, назначения, плюсы и минусы,
      • Пример использования FRAM,
      • Вывод,
      • FAQ.


      Назначение внешней памяти для Arduino

      Несмотря на простоту вопроса, кроме очевидного ответа “для увеличения размера собственной памяти контроллера”, у нее существуют и другие предназначения. Да, в большинстве случаев ее используют как дополнительный “внешний диск”, куда можно скидывать информацию и/или считывать ее кроме как на собственный EEPROM. Это не только расширяет объем, но и экономит ресурс встроенного ПЗУ, который, как известно, не вечен. По слухам, для восьмибитных контроллеров AVR он составляет до полумиллиона операций записи, но уже на третьей сотне тысяч производитель уже опасается за износ и гарантию на стабильность не дает.

      Второе применение, которое особенно ценно для съемных видов памяти - запись лога, то есть последовательность информации, собираемой контроллером в течение какого-то времени. После чего полученные данные легко извлечь и обработать.

      Третье, тоже более применимое для памяти, которую просто снять и поставить - конфигурационные данные. Программа контроллера может работать сильно по-разному с разными настройками. Настройки же можно передать в программу разными способами, ввести при помощи клавиатуры, энкодера, потенциометра и так далее или залить в составе новой прошивки. А еще можно записать на устройство внешней памяти и подключить его к контроллеру, что гораздо проще и оперативней прошивки и быстрее ручного ввода, к тому же в ряде случаев позволяет вообще отказаться от дополнительных устройств для этого самого ввода, значительно упростив схему и программу.


      Разновидности, назначения, плюсы и минусы

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

      SD-карта

      sd-card.jpg

      К главному плюсу хранения на SD-картах отнесем огромный размер памяти, просто неприлично гигантский, особенно по меркам контроллера. При некоторой ловкости можно оперировать с массивами данных из многих мега- и даже гигабайт, что практически снимает ограничение на этот параметр. Другим важным преимуществом является простота установки и извлечения из устройства чтения - то и другое одним легким движением. Быстро и безопасно. И, наконец, достаточно вставить ее в компьютер и можно сразу видеть, обрабатывать и редактировать полученные данные, а также записывать новые. Никаких дополнительных устройств, вроде программатора, для этого не понадобится.

      Небольшим минусом можно назвать относительно невысокую скорость записи, порядка 4-5 килобайт в секунду. Ограничения вызваны даже не самой картой, а библиотекой и интерфейсом Ардуино. Для подавляющего большинства задач этого более чем достаточно, но не для всех, к сожалению. Большим минусом назовем ограниченный ресурс по циклам перезаписи, для разных карт от 10 до 50 тысяч, что даже  меньше, чем у EEPROM, причем раз в 10. Относительно высокая цена одного устройства, по сравнению с другими, хотя в пересчете на каждый байт она ничтожно мала. Необходимость закрывать рабочий файл перед извлечением или отключением питания, что может ограничить использование для устройств с нестабильным питанием.

      Таким образом, применять SD-карту в качестве внешнего диска целесообразнее всего для ведения лога событий, записи конфигурационных данных, хранения больших объемов данных, например картинок для дисплея, HTML-страниц или, применительно к специфике нашего сайта, G-кода для печати 3D моделей.

      Внешний EEPROM

      EEPROM.jpg

      Практически ничем не отличается от встроенного, ни по порядку объема, ни по ресурсу, ни по скорости - микросхема типа 24C32N. Даже разработчик у нее тот же, что и у наших любимых контроллеров - ATMEL.

      Представляет собой восьминогую микросхему. Интерфейс обмена данными - I2C. Объем памяти, в зависимости от модели, от 8 до 64 кбит. Для простоты эксплуатации имеется библиотека, но можно обращаться по встроенному методу Wire, что ускоряет работу и уменьшает размер кода.

      Используется как расширение собственной памяти или ее замены после износа. Можно применять в качестве съемного носителя, например как конфигурационного, но установка и снятие потребует большей аккуратности, чем с SD-картой, плюс частая установка быстро изнашивает как ножки самой микросхемы, так и панельки для ее удержания. Только если несколько раз попробовать, и оставить правильный вариант на год-другой, а лучше навсегда.

      FRAM

      FRAM.jpg

      Главный герой нашей статьи - ферритовая память, на которой мы остановимся чуть подробнее. В природе встречается в виде восьминогой микросхемы SOP-формата. Для приведения ее к привычному виду DIP потребуется адаптер, подобный такому.

      FRAM-1.jpg

      Заботливые китайцы выпускают и продают ее в виде удобных для экспериментов и эксплуатации модулей, но цена памяти в таком обвесе сразу увеличивается раз в десять и более. Да и размер становится куда менее компактным.

      FRAM-module.jpg

      В чем же ее преимущества? Первое и самое главное - количество циклов перезаписи. Не сотни тысяч, не миллионы и даже не миллиарды раз, а такое число, которому еще не придумали названия - 1014! Для понимания масштаба приведу пример: если записывать информацию на FRAM раз в секунду, ресурс ее исчерпается всего лишь через 3 с хвостиком миллиона лет. Вполне хватит на весь гарантийный срок эксплуатации любого изделия, поэтому, принято считать такой вид памяти вечным.

      FRAM работает сильно быстрее, чем EEPROM, особенно на запись. При этом протокол работы гораздо проще, а значит занимает меньше памяти для кода. Интерфейс I2C, задействуется всего два пина Ардуино.

      Рекомендуется для хранения часто меняющихся значений, требующих частой перезаписи. Например показаний различных счетчиков, положения стрелок на часах, сервомоторов на роботах, направления камеры и тому подобного. В 3D принтерах хваленая функция продолжения печати после аварийного отключения питания основана на записи текущего положения в G-коде. Разумеется, у большинства принтеров запись осуществляется в обычный EEPROM со всеми вытекающими последствиями, то есть стабильно функция будет работать очень недолго, от нескольких месяцев, до года. А в том редком принтере, где установлена FRAM-память (если такие вообще существуют), работать эта функция будет всегда, при этом ощутимо меньше потребляя ресурсов процессора и не тормозя работу программы. Запись осуществляется мгновенно, за считанные наносекунды, что позволяет производить ее с высокой частотой, при этом опасность потери данных минимизируется.

      Таким образом этот недооцененный вид внешней памяти можно смело назвать лучшим и даже незаменимым вариантом для большинства задач. Рассмотрим как с ним работать на небольшом примере.

      Где приобрести платы Arduino?

      Arduino купить можно в нашем магазине 3DIY с доставкой по России!


      Пример использования FRAM

      Нам в руки попалась микросхема FM24CL16, где 16 - размер в килобайт, будем работать с ней. В продаже можно найти чипы объемом от 4 до 256 килобит, которые подключаются точно так же, отличаются друг от друга только размером, что легко можно учесть в программе.

      Распиновка всех FM24 выглядит так:

      raspinovka-fram.jpg

      adapter.jpg

      Где:

      • VDD - +5В,
      • VSS - GND,
      • С - SCL (пин А5 Arduino UNO),
      • D - SDA (пин А4 Arduino UNO),
      • HOLD - запрет записи (при высоком уровне),
      • A0, A1, A2 - комбинируя высокие и низкие уровни, формируют адрес микросхемы при использовании нескольких (до 8) микросхем одновременно.
      Припаиваем чип к адаптеру с “ногами”.Собираем нехитрую схему.

      shema.jpg

      Устройство готово к работе, осталось написать программу и проверить. Но сперва давайте разберемся, как все происходит с программной точки зрения.
      Первое - узнаем адрес чипа памяти. Вычисляется из комбинации состояния пинов A0, A1 и A2 по формуле 1010(А2)(А1)(А0), например, у нас все эти пины притянуты к нулю, а значит адрес выглядит так: 1010000, что в шестнадцатеричной системе выглядит как 0x50. Именно это и есть адрес нашего чипа, по которому мы будем к нему обращаться.

      Запись и чтение данных происходит очень просто, буквально в несколько строк.
      Рассмотрим порядок записи. Запускаем сессию передачи данных. В качестве атрибута указываем адрес микросхемы, в нашем случае 0x50:

      Wire.beginTransmission(0x50);

      Отправляем два байта адреса, в который намерены записать или из которого желаем считать данные. Сделать это можно разными способами, это лишь один из них, на наш взгляд самый короткий:

      Wire.write((byte*)&startAddress,2);

      где startAddress - переменная типа unsigned int, она разбивается на два байта, которые по очереди отправляются в чип.
      Далее следует собственно запись данных:

      Wire.write((byte*)data, len);

      где data - указатель на первый байт данных любого типа, len - количество байт в данных. Конечно, можно записывать по одному байту при помощи цикла, но если функция Wire.write может это сделать сама, надо с благодарностью пользоваться возможностью, тем более что это быстрее и выглядит аккуратнее.
      Наконец, заканчиваем процедуру остановкой сессии передачи данных:

      Wire.endTransmission(true);

      После чего настоятельно рекомендуется дать памяти немного времени для усвоения информации, хотя бы самым простым путем:

      delay(1);

      Да, паузу можно усовершенствовать, но предоставим это вам сделать самостоятельно, а для примера и для 99% реальных задач вполне сгодится и простой delay.
      Вот и все, данные записаны.
      Теперь рассмотрим порядок чтения. Аналогично запускаем сессию, указываем адрес и завершаем сессию:

      Wire.beginTransmission(0x50);
      Wire.write((byte*)&startAddress,2);
      Wire.endTransmission();

      И сразу после этого начинаем читать данные:

      Wire.requestFrom(0x50, len);
      for (rdata = 0, p = (byte*)data; Wire.available() && rdata < len; rdata++, p++) {
       *p = Wire.read();
      }

      где len - количество байт, которые мы желаем считать. В первой строке мы даем понять, что будем извлекать данные с чипа, имеющего адрес 0x50, в количестве len байт. В следующем цикле делаем это, побайтно принимая информацию и выкладывая ее в заранее приготовленное место того же типа данных (data). На этом все, данные приняты и готовы к употреблению.

      Теперь приведем пример готовых функций для записи во FRAM и чтения из него любых типов данных, включая массивы и структуры. По сути, это уже готовый инструмент для работы с этим типом памяти, им можно смело пользоваться в своих проектах. Нужно лишь учитывать размер памяти каждого конкретного чипа, чтобы не выйти за ее пределы. Напомню, объем ее может варьироваться очень значительно, от 4 до 256 килобайт.

      // пример использования FRAM FM24Cxx для любых типов данных включая массивы и структуры // проверено на FM24CL16 #include <Wire.h> #define disk 0x50 //адрес чипа FM24C struct vvv { byte a; int b; long c; }; struct vvv abc; struct vvv cab; void setup(void) { Wire.begin(); Serial.begin(9600); // пишем данные (раскомментировать для первого запуска) /* int a = -5432; FM24C_write(10, &a, sizeof(a)); // адрес 10 unsigned long aa = 12345678; FM24C_write(100, &aa, sizeof(aa)); // адрес 100 abc.a = 10; abc.b = 100; abc.c = 1000; FM24C_write(300, &abc, sizeof(abc)); // адрес 300*/ // читаем данные int b; FM24C_read(10, &b, sizeof(b)); // из тех же адресов, что записывали! Serial.println(b); unsigned long bb; FM24C_read(100, &bb, sizeof(bb)); Serial.println(bb); FM24C_read(300, &cab, sizeof(cab)); Serial.println(cab.a); Serial.println(cab.b); Serial.println(cab.c); // пишем массив (раскомментировать для первого запуска) /* char hello[] = "hello, 3d-diy.ru"; FM24C_write(1500, &hello, sizeof(hello) + 1); // записываем по адресу 1500*/ // читаем массив char hhh[16]; FM24C_read(1500, &hhh, sizeof(hhh) + 1); // считываем из того же адреса Serial.println(hhh); } void loop() {} // -------------- функции чтение-запись ------------ void FM24C_write(unsigned int startAddress, void *data, unsigned int len) { // адрес, указатель на первый байт, длина в байтах Wire.beginTransmission(disk); Wire.write((byte*)&startAddress,2); Wire.write((byte*)data, len); Wire.endTransmission(true); delay(1); } int FM24C_read(unsigned int startAddress, void *data, unsigned int len) { // возвращаем кол-во считанных байт byte rdata; byte *p; Wire.beginTransmission(disk); Wire.write((byte*)&startAddress,2); Wire.endTransmission(); //Wire.beginTransmission(disk); Wire.requestFrom(disk, len); for (rdata = 0, p = (byte*)data; Wire.available() && rdata < len; rdata++, p++) { *p = Wire.read(); } return (rdata); } 
      В примере все достаточно понятно. Сперва мы записываем данные в память, для чего раскомментируем соответствующие участки кода и запускаем программу. После чего, закомментируем их обратно, снова запускаем программу, убеждаемся, что данные считываются верно. Для чистоты эксперимента отключаем питание Ардуины на какое-то время, от нескольких секунд до нескольких лет, подключаемся и наблюдаем ту же самую картину, данные считываются из памяти правильно и точно.

      text.jpg


      Вывод

      Внешняя память для Ардуино опция нужная, а в ряде случаев обязательная. Каждый вид памяти имеет свои достоинства и недостатки, от чего зависит ее назначение и область применения. Память FRAM, рассмотренная в этой статье, резко выделяется на фоне остальных высокой скоростью работы и, конечно же, практически бесконечным ресурсом, что делает ее незаменимой для очень многих задач. Знать о ней и уметь пользоваться должен каждый уважающий себя DIY-мастер.

      Необходимы датчики?

      Arduino датчики купить можно в нашем онлайн магазине


      FAQ

      Есть ли разница между “голой” микросхемой и модулем на ее базе с точки зрения эксплуатации?
      С программной точки зрения разницы нет. Отличается лишь подключение, к примеру, для выбора адреса на модуле имеются джампера и уже припаяны резисторы для подтягивания пинов к плюсу. На “голом” чипе надо будет все это сделать самостоятельно. Модуль удобен для тестов и отработки программы, для реального же использования, особенно при большом количестве устройств, лучше сделать разводку под "голые" чипы. Они имеют малый размер и гораздо дешевле модулей.

      Существуют ли в природе 3D-принтеры с FRAM?
      Возможно, но нам такие найти не удалось. Для дорогих моделей проще и правильнее обеспечить бесперебойное питание, а для дешевых функция возобновления носит чисто рекламный характер, чтобы можно было заявить о ее наличии.

      Как использовать более одной микросхемы FRAM-памяти?
      При помощи перемычек и резисторов выставить на пинах A0-A2 разные комбинации и обращаться к чипам по полученным таким образом адресам. Например, если подтянуть A0 к плюсу, а остальные оставить на минусе, получим адрес 1010001 = 0x51. В результате получаем 8 комбинаций, имея возможность подключить параллельно 8 микросхем к одному контроллеру. Максимальная емкость такой связки может достигать 256*8 =  2048 Кб, а это уже очень приличный объем, достаточный для многих задач, даже самых сложных.

      Это интересно

      Драйвер шагового двигателя A4988
      Модули
      Драйвер шагового двигателя A4988
      1 января 2024
      RFID-модуль RC522
      Модули
      RFID-модуль RC522
      1 января 2024
      Реле электромеханическое 10А 5В
      Модули
      Реле электромеханическое 10А 5В
      1 января 2024
      Драйвер двигателя L9110S
      Модули
      Драйвер двигателя L9110S
      1 января 2024
      Nodemcu Lua Wi-Fi на Esp8266
      Модули
      Nodemcu Lua Wi-Fi на Esp8266
      1 января 2024
      Wi-Fi модуль ESP-01
      Модули
      Wi-Fi модуль ESP-01
      1 января 2024
      • Комментарии
      Загрузка комментариев...
      Назад к списку
      • Все публикации248
        • 3D принтеры38
        • 3D печать57
        • ЧПУ10
        • Датчики27
        • Модули38
        • Arduino механика6
        • Arduino платы8
        • Дисплеи6
        • Кейсы1
        • Компоненты13
        • Мировые новости35
        • Проекты7
        • Сопутствующие2
      Связаться с нами
      8 (800) 500-45-93
      8 (800) 500-45-93отдел продаж Россия
      8 (495) 565-35-93отдел продаж Москва
      E-mail

      info@3d-diy.ru — отдел продаж

      support@3d-diy.ru — тех. поддержка

      Адрес
      Москва, Павловская улица, 27с7
      м. Тульская
      Режим работы
      пн – пт 11:00—19:00
      8.05 – 11.05 не работаем

      info@3d-diy.ru — отдел продаж

      support@3d-diy.ru — тех. поддержка

      Москва, Павловская улица, 27с7
      м. Тульская
      Магазин
      Бренды
      Акции
      Каталог
      Услуги
      Компания
      О компании
      Реквизиты
      Партнеры
      Клиенты
      Вакансии
      Информация
      Гарантия на товар
      Возврат товара
      Политика конфиденциальности
      Договор-оферта
      FAQ
      Помощь
      Условия оплаты
      Условия доставки
      Товары под заказ
      Гос. закупки
      Как сделать заказ
      Вопрос-ответ
      2013 - 2025 © 3DiY (Тридиай) - интернет-магазин комплектующих для 3D принтеров, ЧПУ станков и робототехники
      Конфиденциальность
      Оферта
      ГлавнаяКаталог0Корзина0ИзбранныеКабинет
      Уважаемые клиенты
      8-9 мая - выходные
      С праздником!