Загрузка и конфигурирование микросхемы CH341 с ПЗУ 24C01
Для этого нам понадобятся:
- отладочная плата с микросхемой CH341A (например, вот отличный вариант);
- микросхема памяти 24C01 (например, такая);
- если применяется ПЗУ в корпусе типа SOP8 или SOIC8 – панель с нулевым усилением (вот такая);
- программатор для ПЗУ типа 24C01 (подойдёт, к примеру, недорогой программатор SP200S);
- компьютер с программой управления программатором.
1Схема подключения CH341 к ПЗУ типа 24C01
Микросхема CH341A поддерживает различные варианты конфигурации. Так, её можно конфигурировать аппаратно, с помощью перемычек, программно, управляя с компьютера, а также с помощью конфигурационной памяти, которая хранит настройки микросхемы. Именно этот способ конфигурирования мы и рассмотрим в статье.
Микросхема CH341A поддерживает конфигурационную память типа 24C01A и другие из того же семейства. Например, я буду использовать память 24C04N фирмы Atmel. ПЗУшки данной серии, в разных типах корпусов, имеют следующие выводы:
Согласно техническому описанию CH341, подключение конфигурационной памяти осуществляется таким образом:
Как видно, данное ПЗУ использует интерфейс I2C, для которого требуется всего два провода SCL (линия синхронизации) и SDA (линия данных). VCC микросхемы подключается к 3,3 В питания, а остальные выводы микросхемы – на землю.
2Запись конфигурационных данных в ПЗУ 24C01
Но прежде чем подключать ПЗУ к микросхеме CH341, необходимо записать в него конфигурационные данные. Структура данных приводится в техническом описании (datasheet) для микросхемы CH341:
Ячейка памяти, расположенная по адресу 0x02, с псевдонимом CFG, расписана отдельно:
Для того чтобы записать данные в EEPROM (название ПЗУ по-английски), нам понадобится программатор.
Можно воспользоваться другим способом записи ПЗУ, например, использовать в качестве программатора Arduino, благо он также имеет интерфейс I2C. Но это путь более длинный, ибо придётся подробно изучать документацию, циклограмму записи ПЗУ 24C01 и т.д.
Каждый программатор поддерживает свои типы микросхем, поэтому необходимо убедиться, что используемый вами программатор поддерживает именно серию ПЗУ 24C01. Программатор SP200S относится как раз к таким, его и будем использовать.
С помощью панели с нулевым усилением (ZIF-панели) или другим доступным способом подключаем ПЗУ к программатору:
Для данного программатора имеется софт, который позволяет редактировать данные, которые мы собираемся записать в ПЗУ. Программа называется Willar Programmer или WLPro. Скачать WlPro можно в конце статьи. Запустим её и отредактируем конфигурационные данные. Зададим, к примеру, вот такой массив:
Теперь запишем в ПЗУ эти конфигурационные данные. Для того чтобы понять, что здесь что, смотрим на рисунок выше, где приведена структура ячеек конфигурационной памяти. Как видите, мы заняли все 0x7F ячеек памяти, которые используются для конфигурирования микросхемы CH341.
Бывает так, что программатор SP200 не определяется программой WLPro, и она постоянно выдаёт ошибку подключения к программатору (Failed to connect programmer). Не торопитесь паниковать. Скорее всего дело окажется в имени COM-порта, которое операционная система назначила программатору. Программа поддерживает имена COM-портов, начиная с COM1 и заканчивая COM9. Если номер порта окажется больше, то программа не сможет подключиться к программатору SP200. В этом случае просто идём в диспетчер устройств, находим в разделе COM-портов тот порт, под которым программатор определился в системе, и в дополнительных свойствах меняем номер на любой в диапазоне от 1 до 9.
Обратите внимание, что в логически объединённые группы ячеек (где данных больше одного байта), данные записываются как бы «задом наперёд». Например, идентификатор устройства PID, равный в данном случае 0x5501, записывается так: в ячейку 0x06 – 0x01, а в ячейку 0x07 – 0x55.
Кстати, об идентификаторах. Стандартные идентификаторы PID для микросхемы CH341, присущие разным режимы её работы, такие:
Если вы планируете использовать микросхему CH341 в роли порта принтера, то вам понадобится описание стандарта IEEE-1284 для того, чтобы корректно заполнить ячейки DID (0x07…0x20) конфигурационной памяти.
3Загрузка микросхемы CH341 из конфигурационной памяти
Теперь подключаем ПЗУ с записанными конфигурационными данными, к отладочной плате с микросхемой CH341, согласно приведённой выше схеме. Питание, естественно, пока должно быть отключено. (Не обращайте внимания, у меня на монтажке была собрана другая схема, ПЗУ находится на ближней стороне, и только оно относится к нашей теме).
При подаче питания микросхема CH341 проверяет, не подключено ли к ней ПЗУ. Если ПЗУ подключено, то микросхема пытается прочитать конфигурационные данные и установить режим работы в соответствии с данными в ПЗУ. В зависимости от режима работы, микросхема CH341 определится в диспетчере устройств операционной системы либо как порт принтера, либо как COM-порт, либо как-то ещё. Например, в моём случае, в первый раз как преобразователь в параллельный интерфейс USB-EPP, а второй раз как стандартный порт принтера:
Кстати, в режиме принтера используются именно те конфигурационные данные с рисунка выше. Как видно, вендор 0x1A86 (ячейки 0x04 и 0x05 конфигурационного массива), идентификатор устройства 0x5501 (ячейки 0x06 и 0x07), ревизия 0x1234 (ячейки 0x08 и 0x09).
В приложении к статье можно скачать несколько полезностей:
- скачать datasheet на CH341;
- скачать datasheet на EEPROM 24C01;
- скачать драйвер для CH341;
- скачать программу WLPro (версия 2.20) для программатора SP200S.
Download attachments:
- Программа WLPro (версия 2.20) для программатора SP200S (2202 Downloads)
- Техническое описание CH341 и EEPROM 24C01, а также драйвер для CH341 (1728 Downloads)
Поблагодарить автора:
Поделиться
Related items
2 comments
-
Александр Воскреснье, 18 Апрель 2021 05:21 Ссылка на комментарий
Если использовать CH341A модуль как преобразователь интерфейса , переключение от режима EPP\USB к SPI\USB можно ли организовать из внешнего устройства (на пример микроконтроллера) и как на это отреагирует ПК?
Этот вариант очень интересен потому, что отзывы о CH376S модуле весьма отрицательные. -
aave1 Понедельник, 19 Апрель 2021 20:20 Ссылка на комментарий
Александр! На первой странице технического описания (datasheet) приведена схема подобной реализации. Микросхема CH341 может работать как с ПК, так и с другим USB хостом, в т.ч. микроконтроллером.