Easyelectronics.ru

Электроника для всех
Текущее время: 21 июл 2018, 04:53

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 23 ] 
Автор Сообщение
 Заголовок сообщения: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 16:10 
Только пришел

Зарегистрирован: 02 авг 2017, 15:40
Сообщения: 16
Приветствую всех!

Ситуация: отлажено и работает составное USB устройство (CDC + HID + MSD) на STM32F103RET6 (64 ноги, HD device).
Переношу рабочий код на STM32F103C8T6 (48 ног, MD device).

Естественно, пины переподключил, дефайны в настройках проекта тоже. Результат - не работает USB. Программа сама работает, доходит до рабочего цикла, но USB - мертвый.
Стал проверять железо - нет генерации 8 МГЦ с внешнего кварца. На старой плате все ок, генерация есть, USB работает. Думал на новой проблемы в железе, сделал следующую проверку: сгенерил в CubeMX простенький проект, прошил - всё работает, генерация есть, железо в порядке!

В общем непонятки какие-то: рабочий код перестает запускать кварц при переходе на новый процессор.
Есть ли мысли по этому поводу?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 16:16 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4586
В RCC->CR выставлен HSE ON?
В RCC->CR установился HSERDY?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 16:20 
Только пришел

Зарегистрирован: 02 авг 2017, 15:40
Сообщения: 16
u37 писал(а):
В RCC->CR выставлен HSE ON?
В RCC->CR установился HSERDY?


Да:

/* Enable HSE */
RCC->CR |= ((uint32_t)RCC_CR_HSEON);

Рабочий код вытащен из примера - "стандартные" библиотеки STM32_USB-FS-Device_Driver.

Скорей всего, ларчик где-то просто открывается, не могу понять тока, где затык.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 16:44 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4586
Считайте значение регистра RCC->CR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 16:48 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1957
Блин, а самостоятельно поставить бит включения HSEON, дождаться запуска по установке бита HSERDY и переключить тактирование на HSE переключением битов SW в 01 в регистре RCC_CFGR - разве нельзя? Это же буквально 5 строчек кода!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 16:55 
Только пришел

Зарегистрирован: 02 авг 2017, 15:40
Сообщения: 16
BusMaster писал(а):
Блин, а самостоятельно поставить бит включения HSEON, дождаться запуска по установке бита HSERDY и переключить тактирование на HSE переключением битов SW в 01 в регистре RCC_CFGR - разве нельзя? Это же буквально 5 строчек кода!


Блин,
ЭТО уже давно сделано до нас STM-ом , и работает! Код не с нуля писался, а был взят полностью рабочий:

static void SetSysClockTo48(void)
{
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;

/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/
/* Enable HSE */
RCC->CR |= ((uint32_t)RCC_CR_HSEON);

/* Wait till HSE is ready and if Time out is reached exit */
do
{
HSEStatus = RCC->CR & RCC_CR_HSERDY;
StartUpCounter++;
} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

if ((RCC->CR & RCC_CR_HSERDY) != RESET)
{
HSEStatus = (uint32_t)0x01;
}
else
{
HSEStatus = (uint32_t)0x00;
}

if (HSEStatus == (uint32_t)0x01)
{
/* Enable Prefetch Buffer */
FLASH->ACR |= FLASH_ACR_PRFTBE;

/* Flash 1 wait state */
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1;

/* HCLK = SYSCLK */
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

/* PCLK2 = HCLK */
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;

/* PCLK1 = HCLK */
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;

/* PLL configuration: PLLCLK = HSE * 6 = 48 MHz */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);

/* Enable PLL */
RCC->CR |= RCC_CR_PLLON;

/* Wait till PLL is ready */
while((RCC->CR & RCC_CR_PLLRDY) == 0)
{
}

/* Select PLL as system clock source */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;

/* Wait till PLL is used as system clock source */
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
{
}
}
else
{ /* If HSE fails to start-up, the application will have wrong clock
configuration. User can add here some code to deal with this error */
}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 16:57 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 1337
lionbulat писал(а):

Блин,
ЭТО уже давно сделано до нас STM-ом , и работает! Код не с нуля писался, а был взят полностью рабочий:

Так прицепите файл со своим кодом (весь проект) - глядишь под отладчиком кто-нибудь и посмотрит.
А глаза пялить в 100500 букв - не у всех зрение позволяет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 16:58 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4586
Повторяю, считайте значение регистра RCC->CR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 17:07 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1957
Ну раз так, то почему вы думаете, что кварц не работает, если у вас не работает USB? :))) может, искать стоит в том месте, где действительно не рабоатет?
Считывать надо не только RCC->CR, но и RCC->CFGR, там биты SWS, указывающие текущий источник тактирования, а так же вообще значение умножителя частоты


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 17:13 
Только пришел

Зарегистрирован: 02 авг 2017, 15:40
Сообщения: 16
BusMaster писал(а):
Ну раз так, то почему вы думаете, что кварц не работает, если у вас не работает USB? :))) может, искать стоит в том месте, где действительно не рабоатет?
Считывать надо не только RCC->CR, но и RCC->CFGR, там биты SWS, указывающие текущий источник тактирования, а так же вообще значение умножителя частоты


Кварц не работает, потому что тыкал осциллографом. Работать он начинает с проектом из Куба, сгенерированном за 3 минуты, поэтому считаем, что железо в порядке.
Просто очень странно, почему при попытке сменить проц на почти такой же, вдруг свалилось тактирование?? Сколько примеров от STM разных перепробовал, прежде чем получился полноценный composite, однако с "кварцеванием" вообще никогда никаких проблем не было.

Разбираться буду ближе к ночи, ночью отпишусь и поделюсь опытом, что получилось)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 17:16 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1957
Тыкаете в кварц осциллом - вносите дополнительную ёмкость от щупов (десятки пикофарад), время запуска кварца увеличивается и по таймауту может не проходить. Вместо тыкания осциллом, проще посмотреть отладчиком значения битов в регистрах, которые были выше указаны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 17:20 
Старожил

Зарегистрирован: 05 апр 2012, 16:47
Сообщения: 389
Откуда: Киев
Подскажите где почитать про связку HID и CDC?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 17:24 
Только пришел

Зарегистрирован: 02 авг 2017, 15:40
Сообщения: 16
BusMaster писал(а):
Тыкаете в кварц осциллом - вносите дополнительную ёмкость от щупов (десятки пикофарад), время запуска кварца увеличивается и по таймауту может не проходить. Вместо тыкания осциллом, проще посмотреть отладчиком значения битов в регистрах, которые были выше указаны.


Хорошо, спасибо, будем вкуривать.
Возможно, маловат тайм-аут установки. Также будем читать регистры. Надеюсь, запустится tonight.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 17:30 
Только пришел

Зарегистрирован: 02 авг 2017, 15:40
Сообщения: 16
Kino писал(а):
Подскажите где почитать про связку HID и CDC?



К своему CDC прикручивал HID на основании этой методы:
http://codeofphi.com/?p=28
Там все разжевано и сразу работает.

Mass Storage к связке CDC + HID прикручивал потом уже сам и также заработало без проблем)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 17:39 
Старожил

Зарегистрирован: 05 апр 2012, 16:47
Сообщения: 389
Откуда: Киев
Спасибо. Просто есть две отдельных девайсины, джой на авр и ардуинка. Хочу совместить чтобы был один юсб шнурок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 12 янв 2018, 18:18 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 62
BusMaster писал(а):
Тыкаете в кварц осциллом - вносите дополнительную ёмкость от щупов (десятки пикофарад), время запуска кварца увеличивается и по таймауту может не проходить. Вместо тыкания осциллом, проще посмотреть отладчиком значения битов в регистрах, которые были выше указаны.

Если уж очень хочется "потыкать", установите на щупе делитель на 10(ну и соотвественно предел измените).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 16 янв 2018, 14:27 
Только пришел

Зарегистрирован: 02 авг 2017, 15:40
Сообщения: 16
Значит так, проблема решена.

Что нарылось:
Не запускался systeminit(), соответственно не инициализировался кварц и прочая PLL. В проекте следовало заменить файл startup_stm32f10x_hd.s на startup_stm32f10x_md.s и вуаля, все чудесно и сразу (как ожидалось) заработало!

Так что всем опыта и добра!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 16 янв 2018, 17:13 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 4586
"В проекте следовало заменить файл startup_stm32f10x_hd.s на startup_stm32f10x_md.s "
Что я и предполагал, т.к. вы, в действительности, не модифицировали регистр RCC->CR.
Причина - вы сменили процессор, но не сменили библиотеки. Точнее, идентификатор процессора (сами библиотеки совместимы).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 16 янв 2018, 17:20 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 1337
Книги надо читать
"Мастер неполадок за 24 часа"
"Найди ошибку за 15 минут"
"Стань гуру тестирования за 2 часа"
"Поиск неисправностей в РЭА за 30 минут"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 16 янв 2018, 17:46 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 3426
Откуда: Кемеровская область, Киселевск
Просто нужно пользоваться уметь отладчиком и проверять содержимое регистров.
Вложение:
Screenshot_7.png
Screenshot_7.png [ 24.25 Кб | Просмотров: 674 ]

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 16 янв 2018, 18:02 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 1337
Или посмотреть


Вложения:
PRCC.png
PRCC.png [ 35.48 Кб | Просмотров: 663 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 16 янв 2018, 18:59 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1957
Нууу как бы дааа.... Товарисчу 4 дня рассказывали о том, что лучше за 5 минут посмотреть в отладчике биты в регистре, чем тыкать наугад файлы...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не запускается кварц 8 МГц на STM32F103C8T6
СообщениеДобавлено: 16 янв 2018, 20:11 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 1337
Просто когда времени много и не горит, то можно и советы ждать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB