NFLic

STM8 с нуля.

Тактирование в STM8 (Статья 7)

Начнем с того, что при сбросе/включении питания STM8S103F3 начинает тактироваться от внутреннего калиброванного RC генератора, частота 16 МГц которого делится на 8, итого Fmaster = 2 МГц.

 

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

- HSE (High speed external) Ext.0-24 МГц - высокочастотный внешний сигнал. Не имеет настривемый делитель перед Fmaster. От этого источника может тактироваться модуль пробуждения из спящих состояний.;

- HSE (High speed external) OSC 1-24 МГц - высокочастотный внешний кварцевый/керамический генератор. Не имеет настривемый делитель перед Fmaster. От этого источника может тактироваться модуль пробуждения из спящих состояний. При исчезновении тактового сигнала от этого источника, тактирование может автоматически переключаться на HSI RC 16 МГц.

- HSI (High speed internal) RC 16 МГц - высокочастотный внутренний калиброванный RC генератор. Имеет настривемый делитель 1/2/4/8 перед Fmaster. Имеет возможность программной подстройки частоты. ;

- LSI (Low Speed internal) RC 128 kГц - низкочастотный внутренний калиброванный RC генератор. Не имеет настривемый делитель перед Fmaster. Не имеет возможности программной подстройки частоты. От этого источника может тактироваться модуль пробуждения из спящих состояний. Вне зависимости от тактирования ядра, от этого источника может тактироваться сторожевой таймер (Independent Watchdog);

Высокочастотное тактирование дает большую производительность, но и бельшее потребление.

Низкочастотное тактирование дает низкое потребление ценой низкой производительности.

От Fmaster тактируется периферия (включена по умолчанию в линейке STM8S и выключена в STM8L), через делитель ядро Fcpu и сторожевой таймер (window watchdog). Делитель ежду Fmaster и Fcpu может иметь значения 1/2/4/8/16/32/64/128.

Имеется возможность вывести на выход микроконтроллера CCO(Configurable clock output) следующие источники тактирования: Fhsi, Fhdidiv, Fhse, Flsi, Fmaster, Fcpu, Fcpu/2, Fcpu/4, Fcpu/8, Fcpu/16, Fcpu/32, Fcpu/64 .

Тактирование периферии (Timers, I2C, SPI, ADC, AWU, CAN, UART) по отдельности можно отключить/включить сбросом/установкой соответствующих разрядов в регистрах PCKEN1 и PCKEN2 для уменьшения энергопотребления.

;                7       6       5       4       3       2       1       0
;             ------- ------- ------- ------- ------- ------- ------- -------
; $50C7  FF  |  TIM1 |   -   |  TIM2 |  TIM4 | UART1 |   -   |  SPI  |  I2C  |   CLK_PCKENR1 Peripheral clock gating register 1
;             ------- ------- ------- ------- ------- ------- ------- -------
;             ------- ------- ------- ------- ------- ------- ------- -------
; $50CA  FF  |   -   |   -   |   -   |   -   |  ADC  |  AWU  |   -   |   -   |   CLK_PCKENR2 Peripheral clock gating register 2
;             ------- ------- ------- ------- ------- ------- ------- -------

 

На скорость выполнения команд кроме источника тактирования влияет также облать памяти из которой выполняются команды.

При выполнении команд из памяти FLASH выборка происходит по 32 разрядной шине. Код команды может загрузиться в конвеер за одну выборку. Ко времени выборки следующей команды предыдущая уже может быть исполнена. Скорость выполнения команд зависит от расположения кода относительно 4 байтовых границ.

При выполнении команд из памяти RAM выборка происходит по 8 разрядной шине. Для загрузки кода команды в конвеер необходимо выполнить несколько выборок прежде чем команда будет выполненна. Скорость выполненя команд монотонна и не зависит от расположения кода в адресном пространстве. Нарушают работу конвеера только команды переходов.

Поэтому при одном и том же источнике тактирования команды в памяти FLASH выполняются значительно быстрее, чем в памяти RAM.

 

Машинные коды STM8 и команды ассемблера здесь. Адресное пространство STM8S103F3 тут.

 

[Адресация в STM8 (Статья 6][Оглавление.] [Порты PA, PB, PC, PD (Статья 8)]