Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Тактовая частота GPIO входа и выхода STM32F100
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
RomanRom
Вопрос возник после чтения Reference Manual на STM32F100xx.
На с.103 при описании режимов входов и выходов GPIO есть две одинаковые фразы

==The data present on the I/O pin is sampled into the Input Data Register every APB2
clock cycle===

Однако на с.101 в Table 16 биты MODE0-1 (2-10-50 МГц)
указаны только для режима выхода GPIO.

Влияет ли тактовая частота 2-10-50 МГц на прием данных по входу?
Если влияет, то почему MODE0-1 в режиме входа устанавливаются 00?


aaarrr
Цитата(RomanRom @ Feb 29 2012, 20:40) *
Влияет ли тактовая частота 2-10-50 МГц на прием данных по входу?
Если влияет, то почему MODE0-1 в режиме входа устанавливаются 00?

Это не тактовая частота, а режим работы выходных драйверов, позволяющий указанных частот на выходе достичь.
В режиме входа ставится в 00, скорее всего, для обеспечения минимальной емкости, минимизации утечек и т.п.
RomanRom
Спасибо за ответ, действительно это не тактовая частота, но возникли еще вопросы.

1) Наверное вместо максимальных выходных частот 2-10-50 МГц надо было указывать максимальную длительность (крутизну) фронтов выходного сигнала. Тогда не было бы путаницы, почему в STM32F100 крайняя частота 24 МГц, а в STM32F103 50 МГц. Но это вопрос больше к разработчикам.

2) Как физически организуется смена крутизны фронтов в выходном КМОП-каскаде? Об этом на картинках ничего нет.

3) Что будет, если в режиме входа GPIO установить биты MODE0-1 не 00, а 01, 10, 11? По идее три последних режима к входному каскаду физически не относятся, так почему нужно устанавливать именно 00?
RomanRom
Ответов что-то нет, наверное, из "песочницы" надо переносить вопросы поближе к гуру...

Попутно еще один вопрос. В даташите STM32F100 на с.60 в разделе Input/output AC characteristics
указана максимальная частота на выходе GPIO 24 МГц fmax(IO)out.
Правильно ли я понимаю, что такой частоты на выходе достичь при тактовой частоте 24 МГц нельзя?
Или есть в STM32 какой-то режим наподобие CKOUT в ATmega48, когда на выход обычного порта транслируется
тактовая частота кварцевого генератора установкой фьюзов?
Какая максимальная частота на выходе GPIO возможна? По идее за один такт в режиме bit-band можно установить 1, за другой установить 0, итого должно получиться в идеале (на коротком промежутке времени) 12 МГц при тактовой 24 МГц?
Sergey_Aleksandrovi4
Цитата(RomanRom @ Mar 3 2012, 14:14) *
Или есть в STM32 какой-то режим наподобие CKOUT в ATmega48, когда на выход обычного порта транслируется тактовая частота кварцевого генератора установкой фьюзов?

Есть вывод MCO, на который можно вывести через внутренний мультиплексор сигнал с HSE, HSI, PLL, XTALL... В Reference Manual в разделе "Reset and clock control" описано. "Ногодрыганьем" большую частоту на порту не получите, не умеет STM32 быстро ногами шевелить. Про таймер не скажу, не разбирался пока с ихними режимами.

По поводу больших частот. Игрался с STM32f105, выдавал на ненагруженный выход MCO сигнал с PLL. Максимально допустимые 50 МГц - меандр искажённый, но узнаваем. На 72 МГц (уже overclocking) фронты очень сильно завалены, т.е. мощности выходного драйвера не хватает.
muravei
Цитата(RomanRom @ Mar 1 2012, 12:43) *
2) Как физически организуется смена крутизны фронтов в выходном КМОП-каскаде? Об этом на картинках ничего нет.

Предположу - изменением нагрузочной способности. Чем выше выходной ток , тем выше крутизна.
Allregia
Цитата(Sergey_Aleksandrovi4 @ Mar 5 2012, 12:46) *
"Ногодрыганьем" большую частоту на порту не получите, не умеет STM32 быстро ногами шевелить. Про

Кстати, а почему "не умеет"?
Я задавал похожий вопрос тут: http://electronix.ru/forum/index.php?showt...p;#entry1035328

но никто толком не ответил.
ReAl
В том вопросе — а гляньте дизассемблер да и увидите, что там делается.
И цикл с volatile-переменной вероятнее всего эту переменную на стеке заводит, каждый декремент — прочесть из памяти, уменьшить, записать назад.
И GPIO_SetBits() вызывается как функция, потом проверяет свои аргументы на допустимость, потом только пишет в порт.
А если по-нормальному, то из 72-мегагерцового STM32F103 ногодрыгом в цикле импульсы длительностью около 28 наносекунд (два такта) вполне выдаются, если компилятор адрес порта в регистр занесёт до цикла.
Т.е.
Код
Pin<'B', 12> FOO; // см. pin.h в примерах scmRTOS для CortexM3/GCC

    FOO.Mode(OUTPUT);

    for(;;) {
        FOO.On();
        FOO.Off();
    }
даёт импульсы 28 нс с паузой чуток подлиннее (переход всё же).
Allregia
Цитата(ReAl @ Mar 8 2012, 22:32) *
В том вопросе — а гляньте дизассемблер да и увидите, что там делается.
И цикл с volatile-переменной вероятнее всего эту переменную на стеке заводит, каждый декремент — прочесть из памяти, уменьшить, записать назад.


Спасибо Александр, теперь прояснилось.

Цитата
И GPIO_SetBits() вызывается как функция, потом проверяет свои аргументы на допустимость


А вот об этом я хотел спросить поподробнее - о праверках. Я соверешнно не понимаю этих "assert" - оно работает на этапе компиляции или остается коде?
Так это что, по каждому чиху во всех функциях из стандартных STшных библиотек делаются все эти проверки при входе?! Ну на время начальной инициализации еще ладно, но а потом, во время работы?! Я тогда понимаю, почему многие этими библиотеками не пользуются...
ReAl
Цитата(Allregia @ Mar 9 2012, 11:22) *
А вот об этом я хотел спросить поподробнее - о праверках. Я соверешнно не понимаю этих "assert" - оно работает на этапе компиляции или остается коде?
Оно не может работать на этапе компиляции -- при этом ещё неизвестно, с каким аргументом функция вызвана. Была бы функция inline в h-файле, могло бы отработать при компиляции.
MiklPolikov
Глупый вопрос:
Где мне взять документацию на STM32L151 ?

Вот здесь
http://www.st.com/internet/mcu/product/252048.jsp#top
Есть документ DS6876 с обзором процессора.
Есть документы AN3371, AN3248..... с описание разных частей процессора, но там явно не всё. Например нету про UART , порты IO.
яман-тау
RM0038
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.