Приключения с ESP8266 и PL2303HX

Как наверное видно по моему бложику, я заюзал PL2303HX в нескольких проектах. Первой пташкой была та отладочная платка для esp8266 модулей. Я планирую поднырнуть в кишки этого esp8266, ибо очень хочется сделать из него mysql клиента и отправлять запросы в БД через UART. Единственная проблема (кроме того, что EEPROM подцепленный к PL2303 так и не завелся, а зависоны пришлось чинить 10uF конденсатором припаянным на соплях) — Для перехода в режим загрузчика надо было нажимать кнопки. А это мне делать лень. Так что пришлось той красной платке забубенить ‘темно-зеленую злую сестренку’ с немного обновленной схематикой:

  • GP0 и GP1 линии теперь заведены на reset и LDR, кнопки сохранены для совместимости.
  • EEPROM вывкинут нафиг — все равно at24c64 прошивальщик от пролифика не увидел
  • Правильная развязка внутреннего LDO — теперь нет зависонов!
  • SMD диодики на GP0 и GP1.
  • Модный темно-зеленый дизайн и лакированое полиуретановое покрытие

IMG_2486

IMG_2489
Для reset/bootload я не стал использовать ноги RTS/DTR. Главным образом потому, что пока не решили как их задействовать в esptool, да и давно хотелось заюзать GPIO которые есть на PL2303HXA. В том числе идля других проектов. GPIO вообще штука полезная. Но вот модулем pl2303 в линуксах эти GPIO не поддерживались. В апстриме было несколько патчей, но пока ни один из них не вмержили. Потому я решил запилить костыль в пространстве пользователя! По счастью, от того что мы из юзерспейса отправим пару контрол трансферов драйверу PL2303 не сорвет крышу. Результат моих ковыряний можно забрать на github‘е.

Утилитка получилась крайне простая, меньше 500 строк кода. Вот ее хелп

1 ✗ necromant @ sylwer ~/Dev/software/pl2303ctl $ pl2303gpio --help
PL2303HXA userspace GPIO control tool
(c) Andrew 'Necromant' Andrianov 2014, License: GPLv3
Usage: pl2303gpio [action1] [action2] ...
Options are: 
         -g/--gpio  n  - select GPIO, n=0, 1
         -i/--in       - configure GPIO as input
         -o/--out v    - configure GPIO as output with value v
         -r/--read v   - Read current GPIO value

Examples: 
        pl2303gpio --gpio=1 --out 1
        pl2303gpio --gpio=0 --out 0 --gpio=1 --in

Ну и наконец краткий список самых неприятных граблей с PL2303 по которым я прошелся:

  • Ногу с выходом от встроенного линейника на 3.3в надо развязывать конденсатором. Не менее 10uF. Или будет рандомно зависать. Даже если этот линейник нигде не используется — от него питается кусок внутренней логики
  • Хотя шит-о-дат на PL2303HXA говорит нам, что напряжение на ногах уарта МОЖЕТ БЫТЬ И 1.8V — это все брехня. Когда я решил сделать для odroid-x2 UART переходничок (у odroid как раз 1.8 вольт сигналлинг) я матерился и тыкался очциллографом очень и очень и очень долго. TX работает, а RX — нет
  • Внешний EEPROM для конфигурации так и не заработал. (Я пытался ставить at24c64). Хотя они там даже не написали адрес слейва. Не великая потеря — все равно в новых ревизиях уже OTP ROM.

Добавить комментарий