Easyelectronics.ru

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

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: STM32L4 и странное поведение GPIO
СообщениеДобавлено: 29 июн 2018, 16:28 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 263
Откуда: Таганрог
Доброго дня всем!

Попалась странная ситуация, объяснение которой пока не найдено. Возможно, кто-то сталкивался с таким.

Действующие лица: STM32L471 / STM32L476
Далее запускаем тест, заключающийся в выборе системной тактовой частоты и настройки GPIO в качестве альтернативной функции таймера. Код выглядит так:

Код:
SystemInit();
SystemCoreClockUpdate();

RCC->AHB2ENR = (RCC->AHB2ENR &(~RCC_AHB2ENR_GPIOCEN)) | RCC_AHB2ENR_GPIOCEN;

GPIOC->MODER = (GPIOC->MODER & ~(GPIO_MODER_MODE8)) | GPIO_MODER_MODE8_1;
GPIOC->OSPEEDR = (GPIOC->OSPEEDR &~(GPIO_OSPEEDER_OSPEEDR8)) | GPIO_OSPEEDER_OSPEEDR8_1;
GPIOC->AFR[1] = (2<<GPIO_AFRH_AFSEL8_Pos);


Что замечено: после выполнения строки
Код:
GPIOC->MODER = (GPIOC->MODER & ~(GPIO_MODER_MODE8)) | GPIO_MODER_MODE8_1;
на ножке pc8 имеем сигнал прямоугольной формы системной частоты (при работе от MSI частота была в районе 4МГц, при работе от ФАПЧ 40МГц, все как настроено).
Данный сигнал пропадает после строки:
Код:
GPIOC->AFR[1] = (2<<GPIO_AFRH_AFSEL8_Pos);


Что это и от чего это не понятно ... AF0 для данного GPIO нет. Я бы понял, если это была бы ножка pa8 у которой функция MCO по дефолту ...

Пока в качестве решения был изменен порядок настройки на такой:
Код:
GPIOC->AFR[1] = (2<<GPIO_AFRH_AFSEL8_Pos);
GPIOC->OSPEEDR = (GPIOC->OSPEEDR &~(GPIO_OSPEEDER_OSPEEDR8)) | GPIO_OSPEEDER_OSPEEDR8_1;
GPIOC->MODER = (GPIOC->MODER & ~(GPIO_MODER_MODE8)) | GPIO_MODER_MODE8_1;


не понятно что это, от чего это и почему не описано не в РМ, не в эрате ..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32L4 и странное поведение GPIO
СообщениеДобавлено: 29 июн 2018, 16:40 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 3745
Откуда: Кемеровская область, Киселевск
Прикреплять значение регистров надо

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32L4 и странное поведение GPIO
СообщениеДобавлено: 29 июн 2018, 16:56 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 263
Откуда: Таганрог
Oxford писал(а):
Прикреплять значение регистров надо


каких именно?

если интересует содержимое изменяемых регистров, то там все ожидаемо.
до модификации:
GPIOC->MODER 0xFFFF FFFF;
GPIOC->AFR[1] 0x0000 0000

после модификации:
GPIOC->MODER 0xFFFE FFFF;
GPIOC->AFR[1] 0x0000 0002

то есть поведение вполне ожидаемое.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32L4 и странное поведение GPIO
СообщениеДобавлено: 29 июн 2018, 19:31 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2450
1. Для RCC не надо делать таких сложных конструкций. Там лишь ОДИН бит. Вы его либо сбрасываете по &, либо устанавливаете по |. Другого не дано.
2. Случаем, PC8 и PA8 не перепутали? Они рядом, через один. Замыканий или утечек нет ли?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32L4 и странное поведение GPIO
СообщениеДобавлено: 29 июн 2018, 19:57 
Старожил
Аватара пользователя

Зарегистрирован: 17 дек 2014, 23:08
Сообщения: 589
Откуда: Nowhere
Тоже как-то заметил такую фигню: если в GPIOC_MODER записать значение AF для 8-го пина при значении 0000(AF0) в AFRH регистре, на пине PC8 идет меандр. Сначала решил, что оно коротнулось с PA8 (этот пин через один от PC8 торчит). Запустил на nucleo - аналогично.
Если не изменяет память, частота меандра на пине была равна частоте MSI. Плюс установкой предделителя для AHB можно менять "скважность": для /4 будет 25% high и 75% low.
Что это за фигня такая, так и не нашел, решил "проблему" точно так же - записю в AFR до переключения пина в AF.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32L4 и странное поведение GPIO
СообщениеДобавлено: 29 июн 2018, 20:35 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2450
Действительно! раньше этого не замечал. Сейчас проверил - да, странным образом на PC8 выводится MCO, причем, биты в регистре RCC->CFGR не влияют. Объяснения этому пока не нашел. В эррате тоже не нашел.

Я в коде вообще то стараюсь сначала выполнять запись AFR, и лишь потом включать AF в MODER. Потому что если делать наоборот, то первым включится AF0.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32L4 и странное поведение GPIO
СообщениеДобавлено: 30 июн 2018, 14:41 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 263
Откуда: Таганрог
вот и я ж про то ... Коллега по работе обратил внимания, пока вспоминал как работать с МК.

получает неописанная "фича" или все таки баг?

интересно будет на других сериях глянуть что и как. будет время, посмотрю на L053, F429, F415, L4A5.


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

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


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

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


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

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

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