реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> LPC2478 программирование ISP, Не работает Flash Magic и др.
Cosmojam
сообщение Oct 25 2013, 11:37
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



LPC2478 на плате от стартеркита http://www.starterkit.ru/html/index.php?na...p=view&id=5
Пытаюсь прошить hex. Для LPC17xx использовал lps21isp, но не заработало тут.
Flash Magic тоже не работает. Если не указывать тактовую частоту (для LPC17 никогда этого не делал в нём), то выдаётся ошибка:
Цитата
Failed to read the device signature (Unable to communicate. (transmit/receive)). Accessing a device using the wrong protocol could render the device unusable. Do you want to continue?

Если нажать "да", то потупит ещё немного и снова вывалится с ошибкой.
Если указать частоту (14.748 МГц), то получаю:
Цитата
Unable to communicate. (transmit/receive) Ensure no other applications are using the COM Port. Try raising or lowering the baud rate.

Тип проца естественно выбран верный. Скорость пробовал разную указывать - никаких изменений.

Если придавить P[2]10 на землю, подать питание и отправить через терминал запрос автосинхронизации ('?'), то в ответ получаю как положено Syncronized на любых скоростях. Дальше команды ISP не проверял (и судя по беглому взгляду в даташиты они не отличаются от LPC17). А Flash Magic ни на какой скорости не работает. Одинаково не работает если вручную перевести проц в ISP перед попыткой прошивки, ни автоматически по RTS/DTR. С LPC17xx таких проблем никогда не было.
Подскажите в чём может быть проблема?


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
megajohn
сообщение Oct 25 2013, 12:02
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(Cosmojam @ Oct 25 2013, 15:37) *
Подскажите в чём может быть проблема?


А каая температура ?!

4.1 IRC.1: Accuracy of the Internal RC oscillator (IRC) frequency may be
outside of the 4 MHz +/ 1 % specification only at extreme
temperatures

Introduction:
The device has a 4 MHz internal RC oscillator (IRC) which can be optionally used as the
clock source for the Watch Dog Timer (WDT), and/or as the clock that drives the PLL and
subsequently the CPU. The IRC frequency spec is 4 MHz +/ 1 % accuracy over the
entire voltage and temperature range. During In-System Programming (ISP), the
auto-baud routine is expecting the IRC frequency to be 4 MHz +/ 1 % and is used to
synchronize with the host via serial port 0.

Problem:
On the LPC2478 Rev D device (only with date codes 0949 and before), the accuracy of
internal RC oscillator (IRC) frequency does not meet the 4 MHz +/ 1 % specification for
temperatures between 20 C and 40 C and the accuracy of internal RC oscillator (IRC)
frequency is 4 MHz +/ 5 % instead. As a result, only at these temperatures, this may
affect the auto-baud routine's ability to synchronize with the host via serial port 0 during
In-System Programming (ISP) at higher baud rates. For temperatures above 20 C, the
accuracy of internal RC oscillator (IRC) frequency meets the 4 MHz +/ 1 % specification.

Work-around:
None

ERRATA


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Oct 25 2013, 12:54
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



Прикольно sm.gif
Температура 24 гр.Ц. Попробовал слегка подогреть феном - без изменений.


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
megajohn
сообщение Oct 25 2013, 13:07
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



зашейте через JTAG софтину. которая выводит наружу IRC на CLKOUT и померяйте частотомером. Чисто ради эксперимента.


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 25 2013, 14:32
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (megajohn @ Oct 25 2013, 15:02) *
А каая температура ?!
Да какая разница, если при посылке тех же байтов через терминал все синхронизируется?

Остается только посоветовать соединить выход COM-порта с каким-нибудь другим портом и терминалкой проверить - а в этот ли порт посылает FlashMagic и еще посмотреть - не мешает ли плате шевеление FlashMagic-ом сигналов DTR и RTS. Ну не бывает же чудес. В каком состоянии держит эти сигналы ваша терминалка и в каком они во время работы FlashMagic-а?

P.S. Конечно мы надеемся что на компе у вас винда а не линух, позволяющий повесить на один порт несколько программ и раздающий пришедшие байты всем им по очереди в случайном порядке. В последнем случае надо действительно убедиться, что никакая другая программа (забытая терминалка) не висит на этом порту.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 26 2013, 08:27
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Работаете через USB-COM?
Попробуйте найти железный RS232 (на материнках часто бывает внутри на штырьках не выведенным на заднюю панель).
Если нету - хотя-бы попробуйте найти другой USB-COM (другого типа).
У меня у самого несколько разных USB-COM (на разных чипах). С одними flashmagic работает, с другими - нет. С одним и тем-же устройством.
Так же (как вам уже советовали) проверьте как у вас используются DTR, RTS на плате? Не подцеплен-ли к ним сброс или P2.10?
Ещё иногда помогает изменение опции "High Speed Communications" в меню flashmagic-а.

Ещё бывает, что определённые CPU у NXP работают только на определённых скоростях - не выше и не ниже.
Например сейчас у нас такая проблема с LPC1778 - стабильно работает на 38400, некоторые экземпляры - на 57600. На других скоростях - никак.
Раньше похожая проблема была с LPC2378. Но в более поздних партиях что-то видно поправили и проблема пропала - стали работать все CPU на всех скоростях до 230400.
LPC1758, LPC1768 работают без проблем до 230400.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Oct 26 2013, 10:21
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(jcxz @ Oct 26 2013, 12:27) *
Ещё бывает, что определённые CPU у NXP работают только на определённых скоростях - не выше и не ниже.
Например сейчас у нас такая проблема с LPC1778 - стабильно работает на 38400, некоторые экземпляры - на 57600. На других скоростях - никак.


да вообще не будет работать выше 57600. ISP.1 Maximum UART ISP baud rate limited to 57,600


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Oct 26 2013, 17:13
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



Линукс и винда дают одинаковые результаты. Под линуксом lpc21isp программка всегда работала с LPC17, а сейчас с LPC24 - нет. Винда на другом компе и там FlashMagic с теми же результатами. Перетыкаю кабель в плату с LPC17, меняю тип процессора и тут же всё начинает работать, т.е. не с компьютерами дело.
На обоих компах нормальный RS232, никаких USB-конверторов. Скорость разную пробовал от 2400 до 57600 (раньше всегда на 57600 работал). RTS/DTR перемычками можно отключить от ресета. Отключал мычками, подключал кабелем у которого физически только 3 провода распаяно, без RTS/DTR.
Хардварным снифером вижу что после ответа "Syncronized" начинается белиберда:
Цитата
?Synchronized
S\0x00\0x00A0 \0x08\0x90\0x00\0x81\0x84j\0xaaH\0xf8

Цитата
?Synchronized
S b@@PdNHRd@\0x08

OK


Прошить через JTAG не имею возможности по причине временного отсутствия рабочего отладчика. Отдельная история с невезением на китайские и NXP-шные отладчики. При большом желании для проверки можно достать на недельку, но нет гарантии что это поможет решить проблему.


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 26 2013, 18:58
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Попробуйте подтянуть к высокому уровню выход Tx процессора. Сталкивался с подобным поведением как раз на каком-то из LPC. Он в паузах выключал передатчик и нога болталась в воздухе.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Oct 26 2013, 20:24
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



Цитата(Сергей Борщ @ Oct 26 2013, 21:58) *
Попробуйте подтянуть к высокому уровню выход Tx процессора. Сталкивался с подобным поведением как раз на каком-то из LPC. Он в паузах выключал передатчик и нога болталась в воздухе.

Не помогло sad.gif


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 26 2013, 21:00
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Cosmojam @ Oct 26 2013, 23:24) *
Не помогло sad.gif
Хм. А что осциллограф показывает на ногах Tx, Rx?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Oct 26 2013, 21:39
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



Осциллограф красивые прямоугольные импульсы показывает. Не докопаться. Отдельно битики вручную не считал. Длительность бита 17.2 мкс что верно соответствует скорости 57600. Это МК так отвечает, т.е. вряд ли проблема с тактовым генератором или определением скорости.

Кстати заметил что если отправить вручную '?' без \r\n, то ответ "Synchronized" приходит верный. А если отправить "?\r\n", то скорость определится не правильно (в 2 раза меньше судя по ширине бита на осцциле). У LPC1788 без разницы - и так и так работает. Затем отправляю обратно ему "Synchronized" и в ответ получаю рандомную лабуду. Лабуда приходит на верной скорости если верить осциллографу и не зависит от наличия \r\n или выбранной скорости.


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 27 2013, 06:16
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Cosmojam @ Oct 27 2013, 03:39) *
Кстати заметил что если отправить вручную '?' без \r\n, то ответ "Synchronized" приходит верный. А если отправить "?\r\n", то скорость определится не правильно (в 2 раза меньше судя по ширине бита на осцциле). У LPC1788 без разницы - и так и так работает. Затем отправляю обратно ему "Synchronized" и в ответ получаю рандомную лабуду. Лабуда приходит на верной скорости если верить осциллографу и не зависит от наличия \r\n или выбранной скорости.

Хм... странно конечно...
Т.е. - после получения правильного "Synchronized" от CPU, переключиться на в 2 раза меньшую скорость и продолжить на ней? rolleyes.gif
Под терминалкой.
У вас одна плата? Может проблема в данном конкретном экземпляре? Например - выводы TX, RX как-то хитро подгорели. Или по какой-то причине проц периодически пересбрасывается (проблема с питанием)?
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Oct 27 2013, 07:11
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



Цитата(jcxz @ Oct 27 2013, 09:16) *
Хм... странно конечно...
Т.е. - после получения правильного "Synchronized" от CPU, переключиться на в 2 раза меньшую скорость и продолжить на ней? rolleyes.gif

Не, скорость верная остаётся если не добавлять \r\n к запросу '?' (вообще-то после ? и не должно быть новых строк, это просто случайно забыл отключить в терминале), только вот на этой скорости единственный раз верно приходит Synchronized, а всё что после него коверкается, т.е. проц отвечает какой-то лабудой на верной скорости.
Другого экземпляра нет. Написал в стартеркит чтобы у себя проверили.


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 27 2013, 12:22
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



в соседней ветке
http://electronix.ru/forum/index.php?showtopic=115861

кратко автору попалась серия процов для внутреннего использования NXP с измененной процедурой программирования, он ее купил официально у поставщика. Может у вашей проблемы оттуда же ноги растут?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01551 секунд с 7
ELECTRONIX ©2004-2016