Ошибка Arduino Clone CH340g osx (драйвер установлен и, по-видимому, работает)

Я хотел бы отметить, что устройство, о котором я говорю в этом вопросе, отлично работает с использованием avrdude на машине с Linux, проблема, похоже, связана с драйвером OSX для CH340g.

Я установил последнюю версию драйвера CH34xx с сайта www.wch.cn.

Устройство распознается как /dev/tty.wchusbserial1420.

Я могу подключиться к устройству с помощью avrdude и войти в режим терминала или попытаться выполнить загрузку, однако работа с устройством кажется очень неустойчивой.

Когда я вхожу в режим терминала (используя avrdude -t), индикаторы tx и rx мигают, указывая на то, что устройство подключено и работает, я получаю обратную связь от пользовательского интерфейса.

Reading | ################################################## | 100% 0.02s

и если я наберу «dump flash» или какую-нибудь команду на этапе подключения (пока tx и rx мигают) и нажму Enter, как только появится приглашение, команда будет выполнена, выдавая следующий вывод:

avrdude> dump flash

0000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

однако вскоре после появления подсказки индикатор «L» снова загорается. С этого момента никакая команда не дает никакого вывода, кроме

avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding

У меня создается впечатление, что после подключения avrdude что-то происходит, что приводит к сбросу соединения и выводу устройства из состояния avrdude: AVR device initialized and ready to accept instructions .

Я не могу загрузить на устройство по похожей причине, результат попытки загрузки:

avrdude: Version 6.0.1, compiled on Apr 14 2015 at 16:30:25
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/Ollie/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/tty.wchusbserial1420
         Using Programmer              : arduino
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 2000
         StabDelay                     : 10
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65     1     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256    10    25 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0

avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (H:00, E:00, L:00)

avrdude done.  Thank you.

Как видите, проблема не в том, что драйвер не установлен или avrdude не видит устройство, а просто в том, что соединение обрывается, как только оно устанавливается.

Мне не удалось найти ссылку на аналогичную ошибку с помощью Google, и я пробовал все очевидные вещи (переустановка драйверов, другая версия драйвера и т. д.)


person Ollie Hirst    schedule 09.04.2016    source источник
comment
Это может быть вызвано повреждением Arduino. Однажды у меня была похожая проблема, когда я мог запрограммировать Arduino, если я связал его с другим, но не через его собственный последовательный интерфейс. Но подробностей не помню. Учитывая специфичность вашего вопроса, вы можете получить более подробные ответы на arduino.stackexchange.com. Это может быть даже не по теме переполнения стека.   -  person GolezTrol    schedule 09.04.2016
comment
Спасибо за ответ! - Сначала я думал так же, но я думаю, что устройство должно работать как на нескольких разных Linux-машинах, оно работает нормально, я могу подключиться к нему с помощью avrdude или Arduino IDE и загрузить скетчи или использовать режим терминала без буквы «L». свет возвращается   -  person Ollie Hirst    schedule 09.04.2016
comment
использует ли он чип FTDI для USB/последовательной связи? Если да, то это законный чип FTDI?   -  person    schedule 12.04.2016
comment
У меня аналогичная проблема с моей пользовательской печатной платой. Драйвер CH340G загружается нормально, я вижу последовательный порт, но он отключается после отправки нескольких байтов данных на любой скорости передачи. Интересно, нужно ли подключать другие контакты на моей печатной плате. Под окнами я могу использовать его просто отлично, без маршрутизации каких-либо контактов управления потоком. Вы уже пробовали это под Windows?   -  person Dave    schedule 16.04.2016
comment
Это именно то, что происходит, я использовал Ubuntu (14.04), и он обнаружил это и отлично работал с помощью Arduino ide. Проблема с драйвером ch340g.   -  person Ollie Hirst    schedule 18.04.2016
comment
1. Является ли вывод dump flash действительным? Я бы ожидал jmps вместо nops в начале вспышки. 2. Что не так со вторым выводом? Я не вижу никакого сообщения о записи во флэш-память, выполнении цикла стирания (его можно отключить) и не вижу никаких сообщений об ошибках. Извините за воскрешение старого вопроса, но странно, что никто не заметил это "странности".   -  person Aleksander Z.    schedule 20.08.2016


Ответы (1)


Возможно, у вас проблема с оборудованием. В OSX он может не сбрасываться должным образом, поэтому загрузчик не запускается, и вы получаете сообщение об ошибке «Программист не отвечает». Чтобы исправить это, вам нужно улучшить ваше оборудование, изменив схему сброса. С CH340 сброс управляется контактами RTS и DTR.

Это также означает, что вы можете попытаться посмотреть настройки вашего последовательного порта и включить управление потоком.

person Vladimir Tsykunov    schedule 12.04.2016
comment
Знаете ли вы, если контакты RTS и DTR плавают, это проблема? Все схемы, которые я видел до сих пор в Интернете, не используют их. Но мне интересно, не в этом ли причина моей проблемы, когда драйвер перестает получать/передавать данные после нескольких символов. - person Dave; 16.04.2016
comment
Какие контакты ch340 используются для сброса управления? А какой МКУ? - person Vladimir Tsykunov; 16.04.2016
comment
Я использую процессор PICAXE. Единственные контакты, которые я подключил к CH340G, — это TX и RX. Все остальное либо плавающее, либо подключено к компонентам, которые нужны только CH340G, например кварцу и колпачкам. Нет сброса. У них есть специальный протокол, по которому они квитируют линии TX/RX, чтобы запрограммировать чип. - person Dave; 16.04.2016
comment
У меня нет опыта работы с вашим процессором. Эта тема помечена как Arduino, поэтому я полагаю, что у вас уже есть загрузчик. Вот как это работает на стандартных платах, таких как Mega, Uno и т. д. Вам нужно подключить RTS и CTS через конденсатор 0,1 мкФ, чтобы сбросить вывод MCU. Посмотрите на эту страницу как на отправную точку jarick.com.ua/ - person Vladimir Tsykunov; 16.04.2016
comment
Спасибо, да, я знаю, что я действительно не в том месте, но из-за отсутствия какой-либо информации, связанной с моей проблемой в Интернете, я действительно хватаюсь за соломинку. Спасибо за ссылку! - person Dave; 17.04.2016
comment
Кстати, к этому ответу автоматически применяется награда, однако это не отвечает на вопрос. Я указал в самом начале своего первоначального вопроса: я хотел бы упомянуть, что устройство, о котором я говорю в этом вопросе, отлично работает с использованием avrdude на машине с Linux, проблема, похоже, связана с драйвером OSX для CH340g. - person Ollie Hirst; 30.04.2016
comment
В любом случае драйвер контролирует поведение оборудования. А в случае, когда бутлоадер стартовал со сброса, важными характеристиками являются его продолжительность. По своему опыту знаю, что хороший сброс имеет длину 10-100 мс, иногда время сброса может иметь значение 10-30 мкс, а этого недостаточно. Это может быть вызвано низкоуровневым драйвером, отсутствием аппаратного управления или ошибками в схемах аппаратного сброса. Вы можете попробовать измерить длительность сброса с помощью осциллографа. - person Vladimir Tsykunov; 30.04.2016
comment
Это очень полезно - я изучу продолжительность сброса с помощью своего DSO138. - person Ollie Hirst; 30.04.2016
comment
Да, попробуйте. Я разрабатывал специальную плату, совместимую с Arduino, с драйвером ft232. И потратить два дня на борьбу с программированием. После того, как я обнаружил, что сброс длится всего 10 мкс, я просто заменил конденсаторы, и плата начала работать правильно. Это для окон. - person Vladimir Tsykunov; 30.04.2016