Всем привет!
Возникла следующая проблема. Может кто-нибудь тоже столкнулся с ней.
Попался в руки инженерный образец AT91SAM9XE256-QU (ревизия А, дата выпуска 0752). Распаял его на самодельной плате, изготовленной по аналогии с платой Olimex SAM9-L9260 (за исключением того, что на моей плате не разведен Ethernet, USB, NAND-flash). Изготовил две платы - на одной распаял AT91SAM9260-QU, а на другой - инженерный образец AT91SAM9XE256-QU.
Работаю в среде IAR_ARM. Для связи использую wiggler-LPT (с доработкой).
С АТ91SAM9260 все пошло сразу гладко - контроллер опознавался, коннектился на максимальной скорости, производилась отладка, в общем работал без сбоев.
С AT91SAM9XE256 возникла обратная ситуация. Напаял на плату все элементы, проверил питание, установил джамперы по аналогии с платой AT91SAM9260. Долго не мог соединиться с платой через wiggler. Прозвонил проводники на плате, проверил на замыкание между соседними проводниками - все в порядке. Вдруг в какой-то момент контроллер опознался и связался с компьютером на максимальной скорости. Запустил отладку в IARe. Поработал два вечера, потом опять перестал опознаваться на высокой скорости.
Скачал и установил программаторы c сайтов segger.com и hjtag.com. Опять же - с AT91SAM9260 опознают и связываются стабильно и на максимальной скорости. А с AT91SAM9XE256 - со скрипом - раз в 10-20 раз может определиться, может считать неверный идентификатор и т.д. и т.п.
Сейчас процессор AT91SAM9XE256 совсем перестал определяться и соединяться на максимальной скорости.
Делаю так - соединяюсь с контроллером AT91SAM9XE256 на минимальной скорости, программирую RAM (т.к. пока работаю только с ней), запускаю программу. Останавливаю выполнение программы. Постепенно увеличиваю скорость (с 8 до 1) - иногда позволяет связываться на максимальной скорости, но если произойдет разрыв, то приходится опять начинать связываться с самой медленной скорости.
Заметил еще одну особенность: вывел наружу тактовый сигнал PCK1 и проконтролировал его осциллографом - вместо периодического сигнала увидел какую-то апериодическую последовательность. После разбирательств выяснил, что при выборе источника тактирования:
Slow Clock is selected - периодический сигнал частотой ~28 кГц,
Main Clock is selected - непериодический сигнал,
PLL A Clock is selected- периодический сигнал частотой ~87 МГц,
PLL B Clock is selected - непериодический сигнал.
Так же в ходе работы обратил внимание, что частота тактирования SDRAM слишком низкая - иногда 33 иногда 47 МГц (тоже непонятно почему). Попытка изменить параметры PLLA или PLLB почему-то ни к чему не приводит - частота тактирования SDRAM не менялась.
Менялась она по своим непонятным мне законам - то 33 МГц, то 47 МГц. Выключал-включал питание, снова заливал RAM - тоже самое.
Похоже PLL не работает, или работает не так как надо. Смотрел в отладчике содержимое регистров PLL - записано то, что надо.
Читал Errata - нашел замечание, что кварц может запускаться слишком долго (вместо 200 мкс аж целых 1200 мс(!) ).
Посмотрел и учел отличия в схемотехнике AT91SAM9XE256 от AT91SAM9260, перепаивал кварцы и конденсаторы, перепаивал PLLRСА-фильтр, установку джамперов провел уже самыми разными способами, вывод NTRST задействовал - не помогает. Процессор перестал соединяться на максимальной скорости.
Извините, что собрал все в кучу. Может кто чего-нибудь подскажет в моей ситуации? Кто-нибудь сталкивался с подобным и как-то решил данную проблему?
Спасибо.