Easyelectronics.ru

Электроника для всех
Текущее время: 23 янв 2018, 15:05

Часовой пояс: 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
Сообщения: 3699
В 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
Сообщения: 3699
Считайте значение регистра RCC->CR.


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

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 981
Блин, а самостоятельно поставить бит включения 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
Сообщения: 1190
lionbulat писал(а):

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

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


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

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


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

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


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

Зарегистрирован: 05 апр 2012, 16:47
Сообщения: 387
Откуда: Киев
Подскажите где почитать про связку 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
Сообщения: 387
Откуда: Киев
Спасибо. Просто есть две отдельных девайсины, джой на авр и ардуинка. Хочу совместить чтобы был один юсб шнурок.


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

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 26
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
Сообщения: 3699
"В проекте следовало заменить файл startup_stm32f10x_hd.s на startup_stm32f10x_md.s "
Что я и предполагал, т.к. вы, в действительности, не модифицировали регистр RCC->CR.
Причина - вы сменили процессор, но не сменили библиотеки. Точнее, идентификатор процессора (сами библиотеки совместимы).


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

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


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

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

_________________
RADIOWOLF.RU


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

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


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

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


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

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


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

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


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

Сейчас этот форум просматривают: hybroid


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

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

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