Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Failed to autobaud (ISP)
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Motion
Подключаю демо плату (SK-MLPC2478) к последовательному порту, запускаю Flash Magic.

Настройки программы:
Device - LPC2478
Com1
9600
None(ISP)
12 Мгц

Пытаюсь прочитать Device Signature

Выдаёт "Operation Failed. Failed to autobaud - step 1. See http...." Захожу по ссылке. Читаю в чём могут быть проблемы.

Схема платы. Посмотрел осцилографом сигналы.
Что получил:

На разъём платы DB-9 поступают 3 сигнала - RD, DTR и RTS. DTR и RTS меняют свои значения на противоположные (из -10В в +10В). И доходят непосредственно до ножек RST и KEY_1_BOOT (по-моему, с 3.3В напряжение падает до 0В). Всё как и должно быть.

А вот с RD не могу разобраться. При попытке считать сигнатуру устройства - на разъём X9(DB-9) контакт RD поступают импульсы. Дальше они поступают на вход микросхемы DA3 (ножка 13). По логике этот же сигнал, но немного видоизменённый (микросхема вроде бы преобразовывает уровни) должен появиться на контакте 12 микросхемы и дальше пойти на соответствующую ножку МК. Но его там нет. Зато присутствует сигнал (пачка импульсов) на 11 ножке (сигнал на которую идёт с МК как ответ). Эта же пачка должна была бы выйти 14-ой ножке. Но её там тоже нет.

Подскажите, в чём может быть проблема.
DpInRock
Цитата
На разъём платы DB-9 поступают 3 сигнала -

C чего вдруг 3? 5 сигналов.

Если плата исправна, то проблема в кабеле. Есть модемный, есть нуль-модемный. При этом разъемы могут быть самыми разными.
Сделать свой собственный кабель - решение всех проблем.
Motion
Цитата
Если плата исправна, то проблема в кабеле. Есть модемный, есть нуль-модемный. При этом разъемы могут быть самыми разными.
Сделать свой собственный кабель - решение всех проблем.

Проблема явно не в кабеле. Нужные сигналы поступают с ПК через кабель на плату, но не доходят до самого МК. Всё упирается в микросхему MAX3232.
i.cf
Перемычки для программирование поставлены?
Цитата
J6,J7 - используются для программирования внутренней флешки через UART0

Боле подробно про джамперы есть тут

Пользовался когда-то еще первой версией этой платы (когда еще не продавали 2478 - стоял 2468). Через Flash Magic не программировал - только стирал. Распайка шнурка - обычный "удлинитель". Ставил параметры как у Вас, только проц 2468 и скорость 38400 - работало smile.gif
DpInRock
Не верю в существование неисправных плат.
Motion
Цитата
Перемычки для программирование поставлены?


Да, поставлены. "DTR и RTS меняют свои значения на противоположные (из -10В в +10В). И доходят непосредственно до ножек RST и KEY_1_BOOT (по-моему, с 3.3В напряжение падает до 0В). Всё как и должно быть."

Цитата
Не верю в существование неисправных плат.

Пробовал 2 разных кабеля, один из которых шёл в комплекте с платой.

Цитата
In 99.9% of cases the error you are getting is caused by Flash Magic not receiving a response from the microcontroller.

What is autobauding? When the ISP bootloader in the microcontroller is started it waits for a special character (called the autobaud character) to be received on UART0. The character used varies depending on the device. Generally 8051 and XA devices use a 'U' while ARM devices use a '?'.


Мне кажеться, как раз этот сигнал ( "?" ) и не доходит до МК (что следует из осцилограм). На 12 ножке микросхемы DA3 присутствует +3.3В вместо того самого "autobaud character" в виде последовательности импульсов.
toweroff
А проводник U_RX вообще доходит с 12 ноги макса до лпц? не закорочен никуда (все бывает)? Опорные напряжения у макса в порядке?
DpInRock
Цитата
что следует из осцилограм

Так у вас осциллограф есть? Так посмортрите им в чем дело... Только и всего.
RX TX должны существовать. Если не существуют - смотрите почему. Особое внимание обратить на уровни сигналов.
Motion
Сейчас заработало. На 14 ножке вижу импульсы (раньше не видел). А на 12-ой +3.3В постоянно, а когда что-то посылаешь - раз в 10 раз видны импульсы. Через терминал пробую - нажимаю все клавиши подряд - раз в 10-20 клавишь проскакивают импульсы (может развёртку по времени нужно было изменить).

Что было не знаю. А может ли контроллер сам периодически что-то посылать? Если нет - значит всё изначально работало и были какие-то неправильные програмные настройки.
toweroff
Цитата(Владимир_КПИ @ Sep 3 2009, 16:02) *
Сейчас заработало. На 14 ножке вижу импульсы (раньше не видел). А на 12-ой +3.3В постоянно, а когда что-то посылаешь - раз в 10 раз видны импульсы. Через терминал пробую - нажимаю все клавиши подряд - раз в 10-20 клавишь проскакивают импульсы (может развёртку по времени нужно было изменить).


так может проще осцилл поставить на тригер и в ждущем режиме смотреть? wink.gif а так можно посылку-то и не заметить
Motion
Цитата
так может проще осцилл поставить на тригер и в ждущем режиме смотреть? а так можно посылку-то и не заметить


Да, знаю такую функцию. Нужно с ней разобраться и использовать.

Всем спасибо. До новых встреч. )
skripach
Про осцил понравилось. bb-offtopic.gif
Motion
Почитал раздел datasheet'а, посвящённому ISP (LPC2478). Там описаны команды, которые можно использовать. Использую программу Flash Magic. Запускаю терминал. Предварительно очистил Flash, чтобы точно знать что нахожусь в режиме ISP. Ввожу в окне "input", например, "K". Оно мне в ответ - "ZЫяеь". Должно же какое-то число в 16-тиричном формате вывести.

Как вообще пользоваться этими командами? Как и куда их вводить? Что такое <CR> и <LF>? Если можно - пару примеров.
zltigo
Цитата(Владимир_КПИ @ Sep 15 2009, 20:04) *
Почитал раздел datasheet'а...

Так читайте его С НАЧАЛА, а не с середины.
DpInRock
Цитата
Что такое <CR> и <LF>?

Это как если бы Шумахер спросил что такое коробка передач.
СR - возврат каретки. Код 0x0D. Как бы клавиша Enter
LF - перевод строки. Код вроде 0x0A. Вроде как шифт Энтер.
goodwin
На моей материнке встроенные COM порты наотрез отказываются работать с FlashMagic. А вот через USB-COM - без проблем. На скорости 230 кбит/сек...
esaulenka
Цитата(goodwin @ Sep 16 2009, 02:10) *
встроенные COM порты наотрез отказываются работать с FlashMagic.

А можно поподробней - с какими симптомами?

Просто мы рекомендуем пользователям обновляться (хоть и нечасто) именно FlashMagic'ом... Используются rxd/txd, вход в загрузчик и перезагрузка - ручками (джампер + выключатель питания).
Dog Pawlowa
Цитата(goodwin @ Sep 16 2009, 01:10) *
На моей материнке встроенные COM порты наотрез отказываются работать с FlashMagic. А вот через USB-COM - без проблем. На скорости 230 кбит/сек...

Хм, я списывал это на некоторую "горелость" порта.
Один то точно горелый, а вторым записать 500 кБ было практически невозможна. Птица и до середины Днепра не долетала.
Motion
Цитата
Так читайте его С НАЧАЛА, а не с середины.

Почитал. В основном разобрался. Но есть кое-какие уточняющие вопросы:

1)Исходное состояние - память очищенна -> контроллер ждёт "?"

Посылаю "?" -> отвечает "Synchronized"
Посылаю "Synchronized" -> отвечает "ОК"
Посылаю "ОК" -> отвечает "ОК"

Дальше согласно документации нужно отправить тактовую частоту то ли платы... вообщем посылаю 12000 он мне в ответ какие-то иероглифы.
Пробую сразу команды - выполняются. Получается никакое значение частоты посылать не нужно. Непонятно. Почему так?
Цитата
...In response to this host
should send the same string ("Synchronized<CR><LF>"). The auto-baud routine looks at
the received characters to verify synchronization. If synchronization is verified then
"OK<CR><LF>" string is sent to the host. Host should respond by sending the crystal
frequency (in kHz) at which the part is running. For example, if the part is running at 10
MHz , the response from the host should be "10000<CR><LF>"
. "OK<CR><LF>" string is
sent to the host after receiving the crystal frequency. If synchronization is not verified then
the auto-baud routine waits again for a synchronization character. For auto-baud to work
correctly in case of user invoked ISP, the CCLK frequency should be greater than or equal
to 10 MHz


И ещё - если я ошибся при вводе слова Synchronized или ещё где-то - он мне в ответ какие-то иероглифы посылает и дальше никак не реагирует. Помогает только перезапуск терминала и всё сначала. Что это вообще за иероглифы? И нужно всё сначала или можно что-то ввести и он продолжит?

2)<CR><LF> - символ возврата каретки и сивмол новой строки. В документации написано, что каждая команда должна ими завершаться. Возврат каретки это при нажатии Enter, а навую строку как? У меня работает просто с одним нажатием Enter.

3)А встроеным в ОС Win XP терминалом можно тоже самое проделать? Он правда вроде не может сигналы RTS и DTS генерировать. Но если память будет очищена - контроллер будет сам ждать команд и ему не нужно будет делать ресет и P2.10 в 0 устанавливать. А будет программа - то не получиться (так как не может генерировать сигналы RTS, DTS) Я пробовал - у меня не получилось. Пишу знак вопроса - никак не реагирует. Нажимаю "правка-передать главному компьютеру" - появляется слово "Synchronized". Пишу в ответ "Synchronized" и нажимаю "правка-передать главному компьютеру" - ничего не происходит. Энтер тоже не помагает. На этом и застопорился.

4)В Flash Magic есть такие выражения - Assert RTS, Deassert DTS. Как это переводиться? В словаре смотрел (утверждать; заявлять, объявлять, декларировать, провозглашать, обеспечивать, отстаивать, защищать (свои права и т. п.); доказывать) - есть перевод, но сути выражений не понял. Больше всего подходит обеспечивать, но что имеется ввиду?
Нажмите для просмотра прикрепленного файла
zltigo
Цитата(Владимир_КПИ @ Sep 19 2009, 21:32) *
Пробую сразу команды - выполняются. Получается никакое значение частоты посылать не нужно. Непонятно. Почему так?

Именно этому контроллеру не нужно - у него есть собственный генератор, которым и пользуется загрузчик.
rezident
Цитата(Владимир_КПИ @ Sep 20 2009, 01:32) *
2)<CR><LF> - символ возврата каретки и сивмол новой строки. В документации написано, что каждая команда должна ими завершаться. Возврат каретки это при нажатии Enter, а навую строку как? У меня работает просто с одним нажатием Enter.
В настройках программы-терминала обычно есть опция дополнять <CR> кодом <LF> или не дополнять.
Цитата(Владимир_КПИ @ Sep 20 2009, 01:32) *
3)А встроеным в ОС Win XP терминалом можно тоже самое проделать?
Можно, но установить перемычку, запускающую BootLoader, и сбросить контроллер, вам придется вручную.
Цитата(Владимир_КПИ @ Sep 20 2009, 01:32) *
4)В Flash Magic есть такие выражения - Assert RTS, Deassert DTS. Как это переводиться?
Разработчики программы в Германии обитают, им простительно smile.gif Смысл Assert и Deassert - активировать сигнал и деактивировать сигнал. Причем, следует учесть, что "активировать" совсем не означает однозначно "установить в лог.1". Зависит от схемотехники преобразователя уровней. По умолчанию (после инициализации COM-порта) сигналы RTS и DTR установлены, что соответствует их неактивному состоянию.
Motion
Цитата
Именно этому контроллеру не нужно - у него есть собственный генератор, которым и пользуется загрузчик.

Это была вырезка из datasheet`а "LPC24xx User manual". Тогда получается для LPC2468 частоту задавать нужно, а для LPC2478 нет.

Цитата
В настройках программы-терминала обычно есть опция дополнять <CR> кодом <LF> или не дополнять.

Вот она:
Нажмите для просмотра прикрепленного файла
Когда наводиш на выбор пишет - "Select the characters to be send or received for a new line". Перевожу - "выбирите символы отправляемые или получаемые для новой линии". Насколько я понимаю - какие символы будут посылаться при нажатии Enter - "<CR>" или "<CR><LF>" Странно, но работает при обоих вариантах.

Цитата
Возвра́т каре́тки (англ. Carriage Return, CR) — управляющий символ ASCII 0x0D, при выводе которого курсор перемещается к левому краю поля, не меняя высоту. Этот управляющий символ вводится клавишей «Enter».

Нажимая клавишу Enter в терминале/текстовом редакторе у меня (как и большинства пользоватетей MS Word`а) происходит не просто возврат каретки, а возврат каретки + подача новой строки. Непонятно.


Цитата
Можно, но установить перемычку, запускающую BootLoader, и сбросить контроллер, вам придется вручную.

Кнопка сброса есть. А вот перемычки такой на плате нет. Схема.

Цитата
Разработчики программы в Германии обитают, им простительно Смысл Assert и Deassert - активировать сигнал и деактивировать сигнал. Причем, следует учесть, что "активировать" совсем не означает однозначно "установить в лог.1". Зависит от схемотехники преобразователя уровней. По умолчанию (после инициализации COM-порта) сигналы RTS и DTR установлены, что соответствует их неактивному состоянию.

Насколько я понял - если поставить Assert - на ножке COM-порта будет лог. 0, если - Deassert - лог. 1 Если дальше схемотехника другая - сигналы могут быть инверсными. Зачем тогда использовать понятия активный/неактивный...

Провёл эксперимент:

записал тестовую программу в МК, запустил терминал, послал "?" - > ответа не последовало. Непонятно почему так. Ведь сигналы RTS и DTR должны быть установлены по умолчанию.

Только когда я поставил галочку изменить поведение порта и выставил Deassert DTR, Assert RTS - мне в ответ выдало Synchronized (при других комбинациях Assert/Deassert - также не отвечает.)
zltigo
Цитата(Владимир_КПИ @ Sep 20 2009, 14:26) *
Это была вырезка из datasheet`а "LPC24xx User manual". Тогда получается для LPC2468 частоту задавать нужно, а для LPC2478 нет.

Никому из 24xx и 23xx не нужно. Учите язык, читайте не слова и обрывки фраз из середины а разделы целиком.
Motion
Цитата
Учите язык, читайте не слова и обрывки фраз из середины а разделы целиком.

Как раз читал раздел с самого начала. Datasheet посвящён LPC24хх. Странно было бы писать в нём не о LPC24xx. Раз написано - значит так и должно быть.
Вот datasheet на LPC21xx/22xx. Там тоже самое написано.
Было бы логичней для LPC21xx/22xx указать, что нужно указывать частоту, а для LPC23xx/24xx упустить это.
zltigo
Цитата(Владимир_КПИ @ Sep 20 2009, 16:37) *
Как раз читал раздел с самого начала.

Смотрел в книгу видел ф.....
Цитата
When ISP mode is entered after a power on reset, the IRC and PLL are used to generate
CCLK of 14.748 MHz. This may not be the case when ISP is invoked by the user
application.

Посему либо указывайте эту частоту, либо не указывайте вообще. Если изменили источник тактирования, или он неизвестен, как у LPC21xxx тогда, естественно надо задавать, если он не 10 (кажется) Mhz, как прописано в загрузчике по умолчанию. Эту цифирь в загрузчике можно поменять.
Motion
А где можно почитать как переделать файлы проэкта написанные под LPC2100 (из книги Тревора Мартина) на LPC2478?
zltigo
Цитата(Владимир_КПИ @ Sep 27 2009, 13:50) *
А где можно почитать как переделать файлы проэкта написанные под LPC2100 (из книги Тревора Мартина) на LPC2478?

Купить книгу Мартина про LPC2400 smile.gif smile.gif
Ну или найти одно отличие....
Motion
К примеру, в опциях проэкта в качестве TARGET можно изменить с LPC2129 на LPC2478... это всё или ещё что-то нужно?
Motion
Всем спасибо за помощь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.