Добавляем внешнюю память I2C EEPROM
Возникла у меня необходимость добавить память EEPROM на не имеющую её плату управления (в моём случае это была SKR 2 Rev.A).
Сначала я хотел просто купить на Алиэкспрессе готовый модуль BTT EEPROM V1.0, но изучив схемы этого модуля и платы SKR-2 решил, что и проще, и правильнее, и намного быстрее будет сделать свой вариант модуля I2C EEPROM. С актуализированной, а не c унаследованной из эпохи Arduino/RAMPS, схемотехникой.
Шина I2C
Для начала посмотрим на организацию шины I2C.
Обратите внимание: линий шины I2C «подтягиваются» к питанию только в одном месте.
Плата SKR 2: разъём I2C
Здесь нужно обратить внимание на то, что на модуль, подключаемый к шине I2C, плата подаёт питание +5 В, при этом сигнальные линии шины «подтянуты» платой к источнику +3,3 В.
Формально, для шины I2C это вполне допустимо, так как она использует сигнальные порты типа открытый сток или открытый коллектор в схеме «монтажное ИЛИ»). Но подключаемые к ней устройства должны быть рассчитаны на соответствующие напряжения питания и шины I2C.
Схема модуля BTT EEPROM V1.0
Здесь сигнальные линии микросхемы U1 оказываются «подтянуты» к напряжению питания модуля (в данном случае это +5В) через резисторы R1 и R2.
При подключении модуля к плате управления, её источники питания +5 В и +3.3 В оказываются гальванически связаны (включены запараллельно) через «подтягивающие» резисторы платы и модуля. Это неправильно, так как при этом возникают уравнивающин токи (хоть и небольшой величины) между этими источниками. Такое вот эхо эпохи 3D-принтеров на Arduino/RAMPS.
Схема модуля I2C EEPROM
Напряжение питания +5 В, получаемое модулем с платы SKR 2, при помощи U1 понижается до +3.3 В. Тем самым обеспечивается более широкая (на мой взгляд) номенклатура применимых здесь микросхем EEPROM. Например, можно будет использовать Microchip AT24C32E или AT24C32E-PUM с верхней границей питающих напряжений +3.6 В. Но этот стабилизатор можно и не ставить, разумеется – китайцы так и поступают.
Устанавливать «подтягивающие» резисторы линий шины (для 5 и 6 выводов U2) не требуется, так как они уже установлены на плате управления.
В данном варианте модуля я использовал I2C EEPROM AT24C256 ёмкостью 32 КБ, но можно применять любую микросхему I2C EEPROM с объёмом от 4 КБ (AT24C32 ) до 64 КБ (AT24C512 ).
Схема модуля изначально рассчитана на подключение к плате SKR 2, поэтому для других плат управление необходимо проверять распиновку сигналов SDA и SLC на разъёме I2C.
На плате модуля (для неё был взят кусок макетной платы Vero Board/Strip Board) предусмотрены разрывы дорожек сигнальных линий SDA и SLC, позволяющие при помощи перемычек коммутировать требуемым образом эти линии между микросхемой U2 и разъёмом J1.
Настройки для Marlin 2
В файле Configuration.h необходимо раскомментировать строку
#define EEPROM_SETTINGS
а после блока стандартных настроек EEPROM требуется добавить показанный ниже блок настроек для подключаемой внешней памяти I2C EEPROM с указанием объёма (не макс. адресации) используемой микросхемы.
// Uncomment #define EXTERNAL_EEPROM_USE for external I2C EEPROM using // (c) https://3dcrafter.trengtor.com #define EXTERNAL_EEPROM_USE #ifdef EXTERNAL_EEPROM_USE #ifndef I2C_EEPROM // Check & enable external I2C EEPROM use #define I2C_EEPROM #ifdef FLASH_EEPROM_EMULATION // Check & disable FLASH EEPROM emulation #undef FLASH_EEPROM_EMULATION #undef FLASH_EEPROM_LEVELING #endif #ifdef SRAM_EEPROM_EMULATION // Check & disable SRAM EEPROM emulation #undef SRAM_EEPROM_EMULATION #endif #ifdef MARLIN_EEPROM_SIZE // Check & disable any predefined EEPROM size #undef MARLIN_EEPROM_SIZE #endif // Uncomment the size of EEPROM chip you are using //#define MARLIN_EEPROM_SIZE 0x10000 // EEPROM AT24C512 (64Kb) #define MARLIN_EEPROM_SIZE 0x8000 // EEPROM AT24C256 (32Kb) //#define MARLIN_EEPROM_SIZE 0x4000 // EEPROM AT24C128 (16Kb) //#define MARLIN_EEPROM_SIZE 0x2000 // EEPROM AT24C64 (8Kb) //#define MARLIN_EEPROM_SIZE 0x1000// EEPROM AT24C32 (4Kb) #endif #endif
Модуль BIGTREETECH EEPROM V1.0
А что же модуль BIGTREETECH EEPROM V1.0? Можно ли его использовать? Вроде бы покупают, ставят, работает.
Да, использовать его можно, но с условием, что используемая микросхема I2C EEPROM будет совместима с питанием +5 В.
Кроме того, рекомендую всё же удалять с этого модуля «подтягивающие» резисторы (отмечены на фото модуля красными крестиками): они там не нужны.
Оставлять их следует только в том случае, если у вы используете плату управления без «подтягивающих» резисторов шины I2C (но мне такие пока что не попадались).
Еще больше интересных статей
Замена нагревательного элемента на хотэнде QIDI Tech Q1 Pro
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Ещё один штрих в доработке электросушилки для продуктов MARTA MT-1956. Подсветка камеры сушки.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Blue Pill & SSD1306, ну очень маленькие.., но 32 бит!
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Решил я тут попробовать перейти с 8 бит на 32.
Готовы...
Комментарии и вопросы
Такое колесо как на картинке д...
Вот смотрю на комменты и охрен...
Это просто у тебя жена толстая...
Подскажите, где на Озоне или Я...
Всем привет. Недавно переехал...
Коллеги, не знаю из за чего, м...
Всем привет, ранее писал о том...