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

 
 
 
Reply to this topicStart new topic
> Проблема с USB на lpc1756, странная зависимость от Flash Accelerator-а
bseyur
сообщение May 2 2010, 06:21
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 8-01-07
Из: Томск
Пользователь №: 24 208



Здравствуйте, уважаемые!

Столкнулся вот с какой проблемой... При первой загрузке контроллера после подачи питания на LPC1756 не заводится USB. Компьютер при этом не только не определяет устройство, но и не видит его. После многочисленных экспериментов обнаружилось, что это происходит при определенных настройках штатного "ускорителя" флешки.
В общем случае параметры тактирования процессора у меня читаются из специальной структуры, но ради эксперимента прописываю настройки жестко:

FLASHCFG = (2<<12); -- вот в этом случае USB работает прекрасно

FLASHCFG = (5<<12); -- на "безопасных" настройках USB также работает

FLASHCFG = (3<<12); -- а вот в этом случае USB не работает...
FLASHCFG = (4<<12); -- аналогично...

Тактовая ядра 48 МГц, причем судя по всему от выбора источника тактирования USB (выделенный PLL1 или дополнительный делитель от PLL0) происходящее не зависит. Пробовал поднимать частоту ядра до 72 МГц, но там вариант "3 CPU clocks" для ускорителя уже не работает, т.е. приходится сидеть на безопасных настройках.

Странно то, что глюк проявляется только при первом запуске контроллера после подачи питания. Другая часть программы, не связанная с USB, работает нормально. И в случае дальнейшего сброса по сторожевому таймеру или с внешнего источника USB заводится с пол-оборота.

Какие могут быть мысли у уважаемого сообщества? В какую сторону посоветуете копнуть?
Go to the top of the page
 
+Quote Post
goodwin
сообщение May 2 2010, 07:16
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267



Требования errata соблюдены? (настраивать делители тактирования до старта PLL)
Go to the top of the page
 
+Quote Post
bseyur
сообщение May 2 2010, 07:21
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 8-01-07
Из: Томск
Пользователь №: 24 208



Да, PCLKSEL настраиваются до PLL, CCLKCFG и USBCLKCFG - после.

Попробовал настраивать делители и ускоритель флешки до включения PLL - без изменений... Проц работает как ни в чем ни бывало, только usb лежит. ((

Сообщение отредактировал bseyur - May 2 2010, 07:50
Go to the top of the page
 
+Quote Post
bseyur
сообщение May 2 2010, 08:36
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 8-01-07
Из: Томск
Пользователь №: 24 208



Нашел причину.
Вот она, ключевая фраза: "FLASHCFG: Bit 11:0 - - Reserved, user software should not change these bits from the reset value."
Первый раз на эти же грабли наступил, когда записывал регистр PCONP - от этого GPIO начинал неадекватно работать. Чтож, и на этот раз будем знать... )
Go to the top of the page
 
+Quote Post
sonycman
сообщение May 2 2010, 09:21
Сообщение #5


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(bseyur @ May 2 2010, 12:36) *
Нашел причину.
Вот она, ключевая фраза: "FLASHCFG: Bit 11:0 - - Reserved, user software should not change these bits from the reset value."
Первый раз на эти же грабли наступил, когда записывал регистр PCONP - от этого GPIO начинал неадекватно работать. Чтож, и на этот раз будем знать... )

Так что, в битах 11:0 не нули после сброса?
Блин, и в случае с PCONP тоже самое тогда - про бит GPIO в последнем мануале неверная информация!

Нехорошо косячить в мануалах sad.gif
Go to the top of the page
 
+Quote Post
klen
сообщение May 2 2010, 10:13
Сообщение #6


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



видимо не нули....
Go to the top of the page
 
+Quote Post
bseyur
сообщение May 2 2010, 10:26
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 8-01-07
Из: Томск
Пользователь №: 24 208



Нет, не нули. Ну это ладно, на счет них в мануале все четко описано, можно списать на собственную невнимательность. cranky.gif
А вот на счет зарезервированных битиков PCONP ничего конкретного не сказано. Однако, даже нули туда писать не рекомендуется! Трудно сказать, что это, ошибка в мануале, либо баг, достойный включения в errata.

Сообщение отредактировал bseyur - May 2 2010, 10:28
Go to the top of the page
 
+Quote Post
sonycman
сообщение May 2 2010, 11:50
Сообщение #8


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(bseyur @ May 2 2010, 14:26) *
А вот на счет зарезервированных битиков PCONP ничего конкретного не сказано. Однако, даже нули туда писать не рекомендуется!

Не то что не рекомендуется - а категорически нельзя!
Если 15 бит PCONP сбросить в ноль - совершенно отвалится GPIO.

Причём в мануале сказано однозначно - бит GPIO сбросить невозможно, так как он устанавливается автоматически.
На самом деле ещё как можно smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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