Рейтинг@Mail.ru

Загрузка и конфигурирование микросхемы CH341 с ПЗУ 24C01

2 комментарии Электроника
Print Friendly, PDF & Email
Мы рассматривали работу с микросхемой CH341 с вариантом её конфигурирования с управляющего компьютера. Теперь рассмотрим вариант управления режимом работы CH341 с помощью микросхемы конфигурационной памяти - ПЗУ 24C01. А также научимся работать с программатором SP200.

Для этого нам понадобятся:

  • отладочная плата с микросхемой CH341A (например, вот отличный вариант);
  • микросхема памяти 24C01 (например, такая);
  • если применяется ПЗУ в корпусе типа SOP8 или SOIC8 – панель с нулевым усилением (вот такая);
  • программатор для ПЗУ типа 24C01 (подойдёт, к примеру, недорогой программатор SP200S);
  • компьютер с программой управления программатором.

1Схема подключения CH341 к ПЗУ типа 24C01

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

Микросхема CH341A поддерживает конфигурационную память типа 24C01A и другие из того же семейства. Например, я буду использовать память 24C04N фирмы Atmel. ПЗУшки данной серии, в разных типах корпусов, имеют следующие выводы:

Назначение выводов микросхемы ПЗУ 24C01
Назначение выводов микросхемы ПЗУ 24C01

Согласно техническому описанию CH341, подключение конфигурационной памяти осуществляется таким образом:

Схема подключения конфигурационного ПЗУ к CH341
Схема подключения конфигурационного ПЗУ к CH341

Как видно, данное ПЗУ использует интерфейс I2C, для которого требуется всего два провода SCL (линия синхронизации) и SDA (линия данных). VCC микросхемы подключается к 3,3 В питания, а остальные выводы микросхемы – на землю.

2Запись конфигурационных данных в ПЗУ 24C01

Но прежде чем подключать ПЗУ к микросхеме CH341, необходимо записать в него конфигурационные данные. Структура данных приводится в техническом описании (datasheet) для микросхемы CH341:

Структура конфигурационной памяти для CH341
Структура конфигурационной памяти для CH341

Ячейка памяти, расположенная по адресу 0x02, с псевдонимом CFG, расписана отдельно:

Детальное описание ячейки CFG
Детальное описание ячейки CFG

Для того чтобы записать данные в EEPROM (название ПЗУ по-английски), нам понадобится программатор.

Можно воспользоваться другим способом записи ПЗУ, например, использовать в качестве программатора Arduino, благо он также имеет интерфейс I2C. Но это путь более длинный, ибо придётся подробно изучать документацию, циклограмму записи ПЗУ 24C01 и т.д.

Каждый программатор поддерживает свои типы микросхем, поэтому необходимо убедиться, что используемый вами программатор поддерживает именно серию ПЗУ 24C01. Программатор SP200S относится как раз к таким, его и будем использовать.

С помощью панели с нулевым усилением (ZIF-панели) или другим доступным способом подключаем ПЗУ к программатору:

Подключение ПЗУ 24C04 к программатору SP200S
Подключение ПЗУ 24C04 к программатору SP200S

Для данного программатора имеется софт, который позволяет редактировать данные, которые мы собираемся записать в ПЗУ. Программа называется Willar Programmer или WLPro. Скачать WlPro можно в конце статьи. Запустим её и отредактируем конфигурационные данные. Зададим, к примеру, вот такой массив:

Содержимое конфигурационной памяти 24C04
Содержимое конфигурационной памяти 24C04

Теперь запишем в ПЗУ эти конфигурационные данные. Для того чтобы понять, что здесь что, смотрим на рисунок выше, где приведена структура ячеек конфигурационной памяти. Как видите, мы заняли все 0x7F ячеек памяти, которые используются для конфигурирования микросхемы CH341.

Бывает так, что программатор SP200 не определяется программой WLPro, и она постоянно выдаёт ошибку подключения к программатору (Failed to connect programmer). Не торопитесь паниковать. Скорее всего дело окажется в имени COM-порта, которое операционная система назначила программатору. Программа поддерживает имена COM-портов, начиная с COM1 и заканчивая COM9. Если номер порта окажется больше, то программа не сможет подключиться к программатору SP200. В этом случае просто идём в диспетчер устройств, находим в разделе COM-портов тот порт, под которым программатор определился в системе, и в дополнительных свойствах меняем номер на любой в диапазоне от 1 до 9.

Обратите внимание, что в логически объединённые группы ячеек (где данных больше одного байта), данные записываются как бы «задом наперёд». Например, идентификатор устройства PID, равный в данном случае 0x5501, записывается так: в ячейку 0x06 – 0x01, а в ячейку 0x07 – 0x55.

Кстати, об идентификаторах. Стандартные идентификаторы PID для микросхемы CH341, присущие разным режимы её работы, такие:

Стандартные PID для микросхемы CH341
Стандартные PID для микросхемы CH341

Если вы планируете использовать микросхему CH341 в роли порта принтера, то вам понадобится описание стандарта IEEE-1284 для того, чтобы корректно заполнить ячейки DID (0x07…0x20) конфигурационной памяти.

3Загрузка микросхемы CH341 из конфигурационной памяти

Теперь подключаем ПЗУ с записанными конфигурационными данными, к отладочной плате с микросхемой CH341, согласно приведённой выше схеме. Питание, естественно, пока должно быть отключено. (Не обращайте внимания, у меня на монтажке была собрана другая схема, ПЗУ находится на ближней стороне, и только оно относится к нашей теме).

Конфигурационное ПЗУ подключено к отладочной плате с микросхемой 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.
Последнее изменениеПятница, 21 Январь 2022 19:02 Прочитано 11927 раз
Теги :

Поблагодарить автора:

Поделиться

Print Friendly, PDF & Email

2 комментарии

  • Александр
    Александр 18.04.2021 05:21 Комментировать

    Если использовать CH341A модуль как преобразователь интерфейса , переключение от режима EPP\USB к SPI\USB можно ли организовать из внешнего устройства (на пример микроконтроллера) и как на это отреагирует ПК?
    Этот вариант очень интересен потому, что отзывы о CH376S модуле весьма отрицательные.

  • aave1
    aave1 19.04.2021 20:20 Комментировать

    Александр! На первой странице технического описания (datasheet) приведена схема подобной реализации. Микросхема CH341 может работать как с ПК, так и с другим USB хостом, в т.ч. микроконтроллером.

Оставить комментарий