Гудвин, волшебник (19.06.2014 18:22, просмотров: 9784)
Атас! Бьюсь с одной непоняткой в MSP430G2553. Может кто наступал на подобное? Суть: Питаю девайсы от литий-тионил-хлоридной батарейки EEMB. Свежая выдает 3.65-3.69В. Использую свой загрузчик. В пробной партии из 100 штук 7-8 во время работы загрузчика MSP раскорячиваются в непонятном состоянии. Препарирую два таких экземпляра. В первом сменил контроллер - проблема исчезла. Во втором втавил в разрыв питания 1N4148 - проблема тоже исчезла. Подключил блок питания, нашел границу - MSP глючит при напряжении 3.45В и выше. Первый экземпляр (с перепаянным контроллером) работает без проблем даже при напряжении питания 4В.
Проверить это дело под отладчиком не могу - "глюкалы" с уже прожженным фузом. Ориентировочно глюк возникает уже после стирания флэш - во время записи первого-второго 32 байтного блока данных.
Загрузчик конечно "закудрявлен слегка". После стирания прикладной области во флэш, прием 32-байтных пакетов с 2.4 ГГц радиомодуля, повышение тактовой до 16 МГц, XTEA пакета, возврат тактовой к 1 МГц, прошивка 32 байт данных.
Исключил, как возможную причину, броски напряжения (подключил в блоку питания).
Вот кусок кода:
XTEAdecode((unsigned long *)buff,32/4); // в функции тактовая частота повышается
// до 16 МГц, при выходе возвращается к 1 МГц
FCTL2 = 0x0A542; /* select MCLK/3 for flash timing = 1/3= 333 кГц*/
FCTL3 = 0x0A500; /* Lock = 0 */
for(cnt1=0;cnt1<32;cnt1++)
{
FCTL1 = 0x0A540; /* WRT = 1 */
*(ptrnum++)= buff[cnt1]; /* program Flash byte */
__no_operation();
}
FCTL3 = 0x0A518; /* Lock = 1 */
Вроде все правильно.
Каждый такой блок программируется через 10 мс.
Вот и чешу репу... Как то не верится, что TI может накосячить...