Есть старая списанная ЭКЛЗ на LPC2146FBD64 (LQFP64 package).
Общение с ней стандартно через UART микруху MAX3221 (3-V to 5.5-V Single-Channel RS-232 Line Driver/Receiver).
все логично через MAX3221:
пин Rx на P0.0/TXD0/PWM1 19 нога контроллера
пин Tx на 0.1/RXD0/PWM3/EINT0 21 нога контроллера
Микроконтроллеры NXP LPC2xxx имеют встроенный загрузчик, позволяющий прошивать память программ (flash) через последовательный порт (UART)
Теперь как прошиваем:
по логике любой контроллер должен шиться в уже запаянном состоянии (ISP) через какие-то внешние разъемы. Т.к. это просто тупо удобнее при изготовлении - не впаивать же уже прошитый контроллер. Опять же если поменять прошивку надо срочно как быть?
Ну как я понял все контроллеры шьются через UART ,но надо как-то перевести в режим прошивки. Это тупо ножка BOOT. Также для удобства прошивки надо найти ножку RESET.
У LPC2146FBD64 BOOT это P0.14(/EINT1/SDA1) это 41 ножка контроллера!
RESET это 57 ножка контроллера!
Итак BOOT у нас подтягивается через резистор 100К к =5В. Логично, чтобы в режим прошивки не активизировался по умолчанию. Но других выводов (контактов) для подачи 0 на BOOT я не нашел, кроме 1мм круглого пятачка. В принципе к нему можно подпаяться.
На выходе ЭКЛЗ правда имеется доступ к USB ногам контроллера , а также похоже еще I2C 2 контакта.
BOOT - Note: LOW on this pin while RESET(ТУТ ИНВЕРСИЯ) is LOW forces on-chip boot loader to take over control of the part after reset.
Получается надо так :
RESET = 1
BOOT =0
или другими словами
BOOT = 0
подали питание(включили)
ждем ... (можно 1 сек)
отпускаем BOOT (далее он через резистор подтянется к 3.3В)
и все .... контроллер перешел в режим прошивки. Проверим это так :
В программе FlashMagic жмем например Read Device Signature и видим нормальный ответ :
еще вот так в инете пишут:
До включения питания замкнуть выводы P0.14 и Reset на землю. Подать питание, подождать пока оно установится в номинальное значение. Перевести Reset в высокий логический уровень, подождать как минимум несколько миллисекунд и подать высокий уровень на P0.14.
CRP is at level 2 or 3
Read Security выдает :
Вот табличка значений CRP:
Пытаемся стереть Flash ( Erase Flash)
и о чудо - пишет, что стерлась. А на самом деле это не так. Ибо дальнейшие попытки что-то записать туда ничего не дают (Failed to send data to the device ). И старая прошивка живет спокойненько и ничего с ней не делается.
Нарыл в инете , что сообщение CRP is at level 2 or 3 не так уж плохо (контроллер якобы можно еще прошить , т.е. это все-таки level 2 означает).
Изучаем дальше плату в направлении поиска JTag выводов ... И вот они родимые пятачки на плате:
Подпаялся тонкими гибкими проводками с обмоток трансформатора к пятакам.
Открыл Keil проект с LPC2146 и увидел , что возможны такие варианты программаторов использовать:
У меня STLink2 JTAG/SWD только. Поэтому ждем с али J-Link или ULINK2 (оба по 800р.)
Пробовал в LPCXpress0 найти возможность хотя бы прошивки LPC-2146 - ничего не нашел.
Пришел ULINK2 и J-Link.
Но в результате по JTAG и SWD ничего не работает. Похоже контроллер у нас залоченный по CRP3.
Оказывается есть такая фича у NXP - установил CRP3 и дальше работай как есть и ничего с ним уже не сделать.
А жаль , что добро пропадает, можно было бы для разных проектов приспособить.
Тут еще нарыл в интернете схему от доброго человека