RCC(RESET AND CLOCK CONTROL) HAKKINDA BİLGİ

STM32F0 CLOCK AYARLARI

Mikrodenetleyici için birden fazla clock kaynağı kullanıma sunulmuştur.Bu kaynaklar;

HSI 8 MHz RC OSCILLATOR CLOCK

HSE OSCILLATOR CLOCK

PLL CLOCK

HSI48 48 MHz RC OSCILLATOR CLOCK (sadece STM32F04x, STM32F07x ve STM32F09x serisinde bulunmaktadır)

Yukarıdaki clock kaynakları sistemin çalışması için clock sinyali olarak kullanılabilir.Bu clock kaynaklarına ek olarak 3 adet clock kaynağı daha bulunmaktadır fakat bunlar sistem clock kaynağı olarak kullanılamaz.Bunlar;

LSI OSCILLATOR CLOCK:40 kHz düşük hızlı RC osilator kaynağı.LSE IWDT(Independent Watchdog Tımer) için kullanılır fakat istenirse Stop/Standby gibi düşük güç modlarından uyandırma işlemi için RTC’ye kaynak olarak kullanılabilir.

LSE OSCILLATOR CLOCK:32.768kHz harici crystal osilatör.RTC’ye clock kaynağı olarak kullanılabilir.

14MHz OSCILLATOR CLOCK:Yüksek hızlı dahili RC osilatör.Sadece ADC için kullanılmaktadır.

İstenilen clock kaynağı açılıp kapatılabilir.Bu güç tüketimi açısından önemlidir.AHB ve APB clockları değişik bölme oranlarıyla elde edilebilirler ve maksimum 48 MHz olabilirler.

Tüm çevre birimleri clocklarını    HCLK(AHB hattı için kullanılan) ve PCLK(APB hattı için kullanılan) clock kaynaklarından alırlar.Aşağıda periphal birimler için kullanılabilcek clock kaynakları gösterilmiştir. 

ADC(Analog dijital dönüştürücü):

–Direk 14MHz dahili osilatörden alabilir.Herhangi bir bölme uygulanamaz.

–APB bus hattından 2 veya 4 bölme oranı uygulanarak alınabilir.

USART:

–SYSTEM CLOCK

–HSI CLOCK

–LSE CLOCK

–APB CLOCK(PCLK)

I2C1:

SYSTEM CLOCK

–HSI CLOCK

USB:

–PLL CLOCK

–HSI48 CLOCK

RTC:

LSE CLOCK

–LSI CLOCK

–HSE/32 

TIMER:

–Eğer APH ön bölme oranı 1 e eşitse timer frekansı otomatik olarak APH frekansına eşit alınır.

–Eğer 1 den farklı bir değer ile ön bölme yapılırsa APH*2 timer frekansı olarak alınır.Bu donanımsal olarak otomatik olur yazılımla gerçekleşmez.

IWDG:

–Her zaman LSI’yı kaynak olarak kullanır.

CORTEX SYSTEM TIMER(SysTick):

Bu timer HCLK hattı üzerinden 8 e bölünerek veya direk olarak kullanılabilir.Bunun ayarlanması

SysTick Control and Status Register aracılığıyla yazılımsal olarak yapılabilir.

Şimdi clock kaynaklarının daha detaylı incelemelerini yapalım

HSE CLOCK:

HSE clock iki şekilde elde edilebilir.

— Hem OSC_IN hemde OSC_OUT pinlerini kullanarak elde edilir bir crystal ve bir çift kapasite kullanılır.

–OSC_IN girişine bir sinyal kaynağı koyularak elde edilir.OSC_OUT  girişi kullanılmaz bu nedenle normal giriş çıkış işlemleri için kullanılabilir.

a)Harici Crystal/Ceramic Resonator(HSE Crstal);

Bu osilatör değeri  4MHz ile 32MHz arasında değerler olabilir.HSI osilatöre göre doğruluğu daha iyidir fakat stabil hale geçmesi  için gerekli süre daha uzundur.Bu süreyi kısaltmak için kristal ve kapasitörler ve microdenetleyici olabildiğince yakın bağlanmalıdır.

RCC_CR (Clock Control Register)registerı içerisindeki    HSERDY bayrağı osilatörün stabil hale gelip gelmedğini gösteren bayraktır.

RCC_CIR(Clock interrupt register) HSE stabil hale geldiğinde bi kesme üretilmek istenirse bu registerdan kesme açılır.

RCC_CR registerındaki HSEON biti ile HSE açılıp kapatılabilir.

b)Harici Kaynaktan(HSE bypass)

Dışarıdan bir osilatör kaynağı bağlanması gerekir.

RCC_CR registerında HSEON ve HSEBYP bitleri set edilerek aktifleştirilir.

HSI CLOCK

Bu clock dahili olarak 8MHz RC osilatörden elde edililir ve direk olarak sisteme ve PLL e clock kaynağı olarak kullanılabilir.HSE ye göre stabilizasyon zamanı daha azdır,fakat doğruluğu daha kötüdür.

PLL

PLL HSI,HSE veya dahili HSI48 osilatörü kaynak olarak alıp,çıkışta çarparak veren birimdir.PLL aktif hale getirilmeden önce PLL kaynağı,ön bölme oranı ve çarma oranı ayarları yapılmalıdır.PLL aktif hale getirildikten sonra ayarları değiştirilemez.

PLL Konfigürasyonu İçin İzlenecek Sıralama

RCC_CR registerı içerisindeki PLLON biti 0 yapılarak PLL durdurulur.

–Yine aynı register içerisindeki PLLRDY bayrağı 1 olana kadar beklenir.Bu bayrak PLL in durduğunu gösterir.

–İstenilen ayarlamalar yapılır.

PLLON biti 1 yapılarak PLL aktif hale getirilir.

PLLRDY bayrağı kontrol edilerek aktif olup olmadığı anlaşılır.

RCC_CIR registerı içerisinde iligili pin set edilerek PLL hazır hale geldiğinde bir kesme üretilebilir.

PLL çıkışı 16MHz ile 48MHz arasında ayarlanmalıdır.

LSE CLOCK

LSE 32.768kHz düşük hızlı harici bir osilatördür.RTC için çok iyi doğrulukta clock kaynağı olarak görev yapar.LSE RCC_BDCR registerı içerisindeki LSEON biti 1 yapılarak aktif hale getirilir.

LSERDY biti LSE nin stabil hale geçip geçmediğinin kontrol edildiği bitdir. RCC_BDCR registerı içerisindeki LSEON ve LSEBYP bitleri set edilerek LSE harici clock kaynağı kullanacağımız belirtebiliriz.Bu kaynak 1MHz e kadar değerlerde olabilir.

LSI CLOCK

LSI düşük hızlı clock kaynağı RTC ve IWDG yi standby ve stop gibi düşük güç modlarında çalışır halde tutmak için kullanılabilir.Clock frekansı  40kHz civarındadır(30kHz-60kHz). RCC_BDCR registerı içerisindeki LSION biti set edilerek aktif hale getirilebilir.LSE stabil hale geldiğinde LSIRDY bayrağı set olur.

SYSTEM CLOCK SEÇİMİ(SYSCLK)

Aşağıdaki kaynaklar sistem clock kaynağı olarak kullanılabilir.

–HSI oscilator

–HSE oscilator

–PLL

— HSI48 oscillator (sadece STM32F04x, STM32F07x ve STM32F09x için)

Sistem resetlendikten sonra HSI oscilator sistem için clock kaynağı olarak seçilir.Eğer bir clock kaynağı sistem clock kaynağı olarak seçilmişse asla durdurulamaz.Sistem için kullanılan clock kaynağı değiştirilmek istenildiğinde yeni sistem clock kaynağı olması istenen clock kaynağı hazır olduğunda bu işlem gerçekleşir.RCC_CR  içerisindeki durum bitleriyle hangi clockların hazır olduğu ve hangi clock kaynağının sistem clock kaynağı olarak kullanıldığı öğrenilebilir.

CCS(Clock Security System)

CCS  HSE osilatörün çalışmasının kontrol edildiği bir güvenlik sistemidir ve yazılımla aktif hale getirilebilir.RCC_CR registerı içindek CCSON biti           set edildiğinde aktif hale getirilir fakat  HSE osilator stabil hale geçtikten sonra devreye girer ve HSE durduktan sonra devreden çıkar.

HSE ile ilgili bir problem algılandığında,HSE clock kaynağı otomatik olarak devre dışı bırakılır ve gelişmiş timer TIM1 ve genel amaçlı timerlar(TIM15,TIM16,TIM17) a bir uyarı gönderilir, aynı zamanda yazılımı bilgilendirmek içinde bir kesme üretir.

Clock Security System Interrupt(CCSI)

MCU nun kurtarma işlemini başlatmasına olanak sağlar.CSSI  Cortex-M0                NMI(Non-Maskable Interrupt) vektörü içinde yer almaktadır.Yani bu kesmeyi açıp  kapatamazsınız bir sorun olduğunda otomatik olarak meydana gelir.Fakat kesme meydana geldiğinde sonsuz döngü oluşmaması için RCC_CIR  registerı içerisindeki CSSC biti yazılımcı tarafından resetlenmelidir.

Eğer HSE sistem clock kaynağı olarak kullanılıyorsa ve HSE de hata oluşursa  otomatik olarak HSI sistem clock kaynağı olarak ayarlanır.Eğer HSE PLL kaynağı olarak kullanılmış ve PLL de sistem kaynağı olarak kullanılmış ise PLL de devreden çıkarılır.

ADC CLOCK

ADC clock kaynağı seçimi ADC_CFGR2 registerı içerisinde yapılır.Bu kaynak HSI14 veya PCLK/2 veya /4 olarak seçilebilir.HSI14 ADC tarafından açılıp kapatılabilir.Eğer APB clock kaynağı ADC için seçilmiş ise HSI14 aktif hale getirilemez.

RTC CLOCK

RTC clock kaynağı olarak LSE,LSI veya HSE/32 osilatörleri seçilebilir.Bu seçme işlemi  RCC_BDCR registerı içerisindeki RTCSEL[1:0] bitleri ayarlanarak yapılabilir.RTC resetlenmeden bu seçme işlemi gerçekleştirilemez.RTC biriminin düzgün çalışması için her zaman PCLK frekansı RTCCLK tan daha büyük ve eşit seçilmelidir.

LSE RTC domainindedir fakat LSI ve HSE değildir.Yani;

–LSE clock kaynağı olarak seçilirse ve VDD kaynağı kaldırılırsa Vbat kaynağı sayesinde çalışmasına devam edebilir.

–LSI clock kaynağı olarak seçilirse ve VDD kaynağı kaldırılırsa çalışmanın süreceği garanti edilmez.

–HSE/32 clock kaynağı olarak seçilirse ve VDD kaynağı kaldırılırsa veya dahili regulatör kapanırsa çalışmanın devam edeceği garanti edilmez .

Independent Watchdog Clock(IWDG)

Eğer IWDG yazılımla veya donanımla çalıştırılırsa LSI otomatik olarak aktif hale gelir ve devre dışı bırakılamaz.LSI kaynağı stabil hale geldikten sonra IWDG için kaynaklık etmeye başlar.

LOW-POWER MODES

APB ve DMA clockları yazılımsal olarak kapatılabilir.Sleep mode CPU clock sinyalinin kapatır.Sleep modunda hafıza arabirimlerinin(Flash ve RAM) clock sinyalleri  yazılımsal olarak kapatılabilir.Sleep modunda AHB den APB ye giden clock kesilebilir.Böylece APB ye bağlı tüm çevresel birimlerim clock sinyali kesilmiş olur.

Stop mode tüm sistem clocklarını kapatır ve PLL,HSI,HSI48,HSI14 ve HSE osilatörlerini devredışı bırakır.Eğer HSI osilatörü USART1,USART2,USART3 için clock kaynağı olarak kullanılmış ise MCU stop modunda olsa bile bu birimler HSI yi aktif hale getirebilirler.Bu birimler aynı zamanda LSE clock kaynağıylada beslenebilirler fakat LSE clock kaynağını kendileri aktif hale getiremezler.Standby mode tüm sistem clocklarını kapatır ve PLL,HSI,HSI48,HSI14 ve HSE osilatörlerini devredışı bırakır.Kontroller Standby veya Stop modunlarından uyandığında otomatik olarak HSI sistem clock kaynağı olarak seçilir.

Yorum bırakın