Возможно ли для Arduino as ISP board прошить мастер-плату ISP?

У меня есть установка из 2 плат Arduino Leonardo. Давайте назовем их Платой А и Платой В.

Плата A - это основная плата SPI, которая постоянно связывается через SPI с массивом датчиков. В какой-то момент плату А нужно будет прошить новым скетчем. Вот тут-то и вступает в игру плата Б.

Я хочу использовать плату B go используйте Arduino в качестве скетча ISP, чтобы перейти и прошить новый скетч на плате A. Проблема в том, что Arduino as ISP использует SPI, что противоречит коду на плате B, поскольку плата B является главным устройством, связывающимся с другими датчиками через SPI.

Возможно ли, чтобы плата B прошивала плату A через ISP?

, 👍0

Обсуждение

перепрошивка ISP выполняется в состоянии сброса. тогда SPI не используется. но подключенный SPI slave может создавать помехи, @Juraj

Ваш код не выполняется при загрузке вашего нового кода., @Gerben


1 ответ


Лучший ответ:

2

Да, вы можете прошить MCU с помощью ISP, даже если MCU действует как SPI-устройство (будь то master или slave). Программатор переводит MCU в режим сброса, поэтому в момент загрузки скетча SPI все равно будет отключен. Еще одна вещь, о которой вам нужно думать, - это другие устройства SPI (датчики или то, что когда-либо контролирует MCU). Они могут улавливать сигналы SPI, посылаемые программатором, и иногда сами писать на шину, поэтому нарушают связь по линии МИСО, что было бы критично. Есть два варианта справиться с этим:

  1. Просто отключите все подчиненные устройства SPI во время загрузки кода
  2. Убедитесь, что на линиях CS есть подтягивания, чтобы они имели определенное состояние (они могут быть плавающими, пока MCU находится в режиме сброса). Некоторые ведомые устройства могут потребовать деактивации выпадающих списков, но это редкость.
,

Спасибо за подробный ответ! Вопросы: когда вы говорите о линиях CS, вы имеете в виду подчиненные линии выбора? И являются ли подтягивающие резисторы резисторами, один конец которых подключен к vcc, а другой - к порту выбора ведомого устройства на датчике? Прямо сейчас я представляю, что каким-то образом подтягивающий резистор удерживает линию выбора ведомого устройства на высоком уровне во время сброса. Я думаю, потому, что рабам свойственно быть активными на низком уровне. Если подтягивание удерживает SS на высоком уровне, как плата A при нормальной работе понижает уровень SS, чтобы сказать: "Эй, датчик, отправь мне данные"?, @SomeGuy

протокол SPI *** говорит, что у выбранного ведомого устройства низкий уровень SS, а ведомые устройства с ВЫСОКИМ уровнем SS не должны получать доступ к шине, @Juraj

@SomeGuy да, я имею в виду подчиненные строки выбора. да, подтягивания соединены между Vcc и линией, которую нужно подтянуть. если у всех ваших подчиненных все равно есть подтягивания, у вас не должно возникнуть проблем с загрузкой кода, @Sim Son