Методы программирования ардуино
Я взглянул на базовую схему Arduino. У него было три разных способа программирования чипа.
Первый интерфейс предназначен для программирования через SPI (например, с помощью "Pocket AVR Programmer" или "USBTinyISP").
Второй интерфейс предназначен для программирования через модуль FTDI to USB.
Что такое третий интерфейс программирования? В нем есть только MOSI, MISO и SCK
.
EDIT: Это изображение полной схемы. К сожалению, я не смог найти ссылку, по которой я его скачал. Я уверен, что это было с Github.
@user1584421, 👍1
Обсуждение2 ответа
Разъем JP2 2x2 подключается к процессору Atmel 16U2 или 32U2 (в зависимости от того, какой используется производителем), который обеспечивает USB-интерфейс ввода-вывода к/от Atmel 328p, который мы обычно считаем процессором Uno. Когда контакты фактически установлены на этой площадке, перемычки могут быть размещены между одной или обеими парами, чтобы соединить контакты 4 xxU2 с контактами 6 и/или контакты 5 с контактами 7, которые подключаются к прерываниям этого процессора (пронумерованы такие же, как те контакты).
Мои поиски не дали никакого ответа на вопрос, почему он был предоставлен, кроме как предположить, что они могли быть предназначены для функции, которая никогда не была реализована. Вы можете увидеть JP2 и его соединения с процессором xxU2 в центре эта схема.
Обновление:
Я смотрел на 3-контактный разъем(?) с пометкой "???" в вашем вопросе и JP4 на схеме в вашем обновлении. Поскольку на вашей схеме не показан чип xxU2, а соединения «???» помечены D11, D12 и D13, вместо этого я собираюсь предположить, что это либо вспомогательные контакты для доступа к интерфейсу SPI 328, либо показывает половину интерфейса аппаратного программирования ICSP (блок контактов 3x2 чуть выше '328 на схема, которую я связал).
Большое спасибо! Я обновил вопрос с полной схемой, если это вам поможет., @user1584421
JP2 и JP8 — это разъемы последовательных контактов, подходящие для программирования — они подключаются к одним и тем же контактам микросхемы: RXD, TXD и RST. Это программирование через UART: программное обеспечение загрузчика (которое должно быть «предварительно записано» во флэш-памяти чипа) — это первое, что запускается после сигнала сброса (RST). Он немного ждет, пока данные поступят на RXD. Если данные поступают, загрузчик переходит в режим программирования: данные записываются во флэш-память, что делает ее прошивкой для выполнения после следующего RST. (Если данные не приходят: ну тогда выполняется та прошивка, которая уже есть.)
При программировании чипа через JP4 будет использоваться "аппаратная поддержка"; интерфейс программирования через SPI, распознаваемый по контактам MISO, MOSI и SCK. Только так можно установить первый загрузчик во флэш-память. Он также предоставляет вам возможность прошивать и перепрошивать прошивку без предварительно записанного загрузчика (оставляя пространство загрузчика доступным для вашей прошивки). Этот метод описан в справочном описании ATmega328P, глава 27.8 и является основным методом, используемым "платами программатора ISP". Вы можете использовать их из Arduino IDE, используя пункт меню «Загрузить с помощью программатора».
Если этот "баребоновый Arduino" схема предназначена для использования ATmega328P с загрузчиком Arduino, однако я предполагаю, что JP4 предназначен для обеспечения контактного разъема для некоторого модуля датчика SPI (даже если вы можете запрограммировать и даже разблокировать чип с помощью этого интерфейса). < /p>
Примечание: "FTDI" это красная сельдь здесь. В одной из наиболее часто используемых программных плат ISP используется микросхема, изготовленная FTDI, поэтому этот метод можно назвать «программирование через FTDI». ... но специальный кабель USB-to-Serial, использующий микросхему производства FTDI и разъем 1x5-контактный, также называется «кабелем FTDI». (Некоторое время FTDI производила лучшие микросхемы USB-to-Serial. Просто клоны не работали так надежно. Сегодня CH340G и CP2104 достаточно надежны для хобби-проектов, но почему-то название «FTDI» прижилось.) /p>
Просто добавьте https://docs.platformio.org/en/latest/platforms/atmelavr.html#upload-using-programmer для платформы..., @Tomas
Благодарю вас! У меня есть еще один вопрос. Вы сказали, что JP4 используется для программирования через внешний программатор. Однако я использую первую распиновку (JP2) с внешним программатором (Sparkfun's Pocket AVR Programmer), который использует протокол связи SPI в качестве ISP (системный программатор). Так есть ли другой протокол/интерфейс, используемый с JP4?, @user1584421
@ user1584421 Это не соответствует опубликованным вами схемам. JP2 и JP8 имеют контакты RXD и TXD, которые указывают на интерфейс UART. JP4 имеет MISO, MOSI и SCK, что указывает на интерфейс SPI. Таким образом, либо схема не соответствует схеме, которую вы получили перед собой, либо вы использовали JP4, но помните, что использовали JP2, либо программатор PocketAVR имеет метод определения, должен ли он использовать UART или SPI, о котором я не знаю ( и не описан в его списке функций)., @orithena
- Как прошить NodeMCU (ESP8266) с помощью внешнего программатора FTDI?
- Можно ли запрограммировать чип AVR (atmega328p) через i2c?
- Как использовать SPI на Arduino?
- Как увеличить скорость записи на SD-карту в Ардуино
- Как считывать данные с помощью Arduino SPI
- Как передать более 1 байта сразу по шине SPI?
- avrdude: stk500_recv(): programmer is not responding
- Прорыв FTDI с дополнительным соединителем ISP
Пожалуйста, включите / дайте ссылку на полные схемы. Из того, что вы опубликовали, я могу только сказать, что первые два штыревых разъема подключаются к одним и тем же контактам UART (RXD / TXD, создавая один и тот же программный интерфейс UART, только с контактными разъемами разной формы), а третий подключается к SPI контакты чипа - но я думаю, что этот контактный разъем предназначен для подключения периферии / датчиков SPI, а не для ICSP (внутрисхемное последовательное программирование)., @orithena
@orithena Я обновил вопрос полной схемой., @user1584421
Хорошо, это проясняет уровень «бабербонности» :), @orithena