STM32F4 RTC Tarih Saat Uygulaması

Başlatan kimlenbu, 27 Haziran 2014, 11:17:42

kimlenbu

Selamlar,

STM32F4'te tarih saat göstermek için forumdan bir arkadaşın kodlarını kullandım (nickini unuttum, zaten standart RTC_Init koduna benziyor) RTC_Kur fonksiyonunda dahili osilatör seçildiğini gördüm.

Daha prototip bile çıkmadığından deneyemedim ama rtc'nin cihaz kapalıyken de çalışması için CR2032 pil kullanacağım. Bu durumda RTC için dahili veya harici osilatörün seçilmiş olmasının önemi var mı ? Dahili osilatörde saatte çok kayma yaşanır mı ?

void RTC_Kur(void)
{
  
  /* Enable the PWR clock */
	
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

  /* Allow access to RTC */
  PWR_BackupAccessCmd(ENABLE);
    
// #if defined (RTC_CLOCK_SOURCE_LSI)  /* LSI used as RTC source clock*/
  /* The RTC Clock may varies due to LSI frequency dispersion */   
  /* Enable the LSI OSC */ 
  RCC_LSICmd(ENABLE);

  /* Wait till LSI is ready */  
  while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)
  {
  }

  /* Select the RTC Clock Source */
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
  
//   /* ck_spre(1Hz) = RTCCLK(LSI) /(uwAsynchPrediv + 1)*(uwSynchPrediv + 1)*/
//   uwSynchPrediv = 0xFF;
//   uwAsynchPrediv = 0x7F;

  
  /* Enable the RTC Clock */
  RCC_RTCCLKCmd(ENABLE);

  /* Wait for RTC APB registers synchronisation */
  RTC_WaitForSynchro();
  
  /* Configure the RTC data register and RTC prescaler */
  RTC_InitStructure.RTC_AsynchPrediv = 0x7F;
  RTC_InitStructure.RTC_SynchPrediv = 0xFF;
  RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
  RTC_Init(&RTC_InitStructure);

  
  /* Set the date: Friday January 11th 2013 */
  RTC_DateStructure.RTC_Year = 14;
  RTC_DateStructure.RTC_Month = 04;
  RTC_DateStructure.RTC_Date = 15;
  RTC_DateStructure.RTC_WeekDay = RTC_Weekday_Tuesday;
  RTC_SetDate(RTC_Format_BCD, &RTC_DateStructure);
  
  /* Set the time to 05h 20mn 00s AM */
  RTC_TimeStructure.RTC_H12     = RTC_H12_AM;
  RTC_TimeStructure.RTC_Hours   = 0x10;
  RTC_TimeStructure.RTC_Minutes = 0x31;
  RTC_TimeStructure.RTC_Seconds = 0x00; 
  
  RTC_SetTime(RTC_Format_BCD, &RTC_TimeStructure);   
  
  /* Indicator for the RTC configuration */
  RTC_WriteBackupRegister(RTC_BKP_DR0, 0x32F2);
}

CLR

#1
dahili osc ile düzgün bir RTC uygulaması zor, ppm'i %10 veya %20 harici osc kullan
Knowledge and Experience are Power

Müh. müh.

Alıntı yapılan: CLR - 27 Haziran 2014, 11:35:42
dahili osc ile düzgün bir RTC uygulaması zor, ppm'i %10 veya %20 harici osc kullan


Sadece f407 icinmi boyle dediniz, yada genelledinizmi bilmiyorum ama, en iyi performansi int. oscli rtcler veriyor. Eger genelleme yapmis iseniz, int. oscli rtc leri incelemenizi tavsiye ederim.

Destiny of white is dirtied. Destiny of black is found guilty...

Gökhan BEKEN

Özel mesaj okumuyorum, lütfen göndermeyin.

pea

Alıntı yapılan: Müh. müh. - 27 Haziran 2014, 12:32:15

Sadece f407 icinmi boyle dediniz, yada genelledinizmi bilmiyorum ama, en iyi performansi int. oscli rtcler veriyor. Eger genelleme yapmis iseniz, int. oscli rtc leri incelemenizi tavsiye ederim.


Mikrokontrolcülerdeki dahili osilatörlerin hassasiyeti genellikle %1 civarında oluyor. Harici osilatörlerde ise 5-10ppm.
Dahili osilatörlü RTC entegresi diyorsanız durum farklı tabii ki. Ama konu o değil.

X-Fi

Alıntı yapılan: Müh. müh. - 27 Haziran 2014, 12:32:15

Sadece f407 icinmi boyle dediniz, yada genelledinizmi bilmiyorum ama, en iyi performansi int. oscli rtcler veriyor. Eger genelleme yapmis iseniz, int. oscli rtc leri incelemenizi tavsiye ederim.



Tüm dahili osilatrler rc osilatördür kararlılıkları çok düşüktür ve sürekli inişli çıkışlı salınım yaparlar stabil bir zamanlama elde etmeniz imkansızdır. Bu yüzden harici bir kristal osc kullanmak 20ppm olsa bile herzaman en iyi performansı verecektir.

Ayrıca STM32 serilerinde dahili rc osilatör 37KHz dir. Saat uygulaması için uygun değil 32.768KHz bir kristal kullanın.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

Müh. müh.

Alıntı yapılan: X-Fi - 27 Haziran 2014, 13:03:32
Tüm dahili osilatrler rc osilatördür


Bu bilgiyi hangi kaynaktan edindiniz?
Destiny of white is dirtied. Destiny of black is found guilty...

X-Fi

Katalog verilerinde var hocam. Dahili kristal osilatörlü bir microchip meslek hayatımda görmedim.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

Müh. müh.

Alıntı yapılan: X-Fi - 27 Haziran 2014, 13:14:43
Katalog verilerinde var hocam. Dahili kristal osilatörlü bir microchip meslek hayatımda görmedim.

Öyleyse, meslek hayatınıza bir changing point koyalım.. :)



http://www.ricoh.com/LSI/product_rtc/2wire/r2025x/r2025x-e.pdf

FEATURES
Built in 32.768kHz crystal unit, The oscillation frequency is adjusted to high precision (0±5ppm: at 25°C)



Yaklaşık 9-10 yıl kadar önce ext. osc li rtclerden bıkıp usanmıştık ve int oscli rtcler aramaya başladık. Günümüz teknolojisi ile daha düşük ppm li cyristal oscleri ic içersine gömebiliyorlar. Eğer araştırırsanız, %0.15 ppm lileri görebilirsiniz.

Destiny of white is dirtied. Destiny of black is found guilty...

pea

Alıntı yapılan: Müh. müh. - 27 Haziran 2014, 13:23:52
Öyleyse, meslek hayatınıza bir changing point koyalım.. :)

http://www.ricoh.com/LSI/product_rtc/2wire/r2025x/r2025x-e.pdf

FEATURES
Built in 32.768kHz crystal unit, The oscillation frequency is adjusted to high precision (0±5ppm: at 25°C)



X-Fi, RTC modülü değil de mikrokontrolcü diyor.

X-Fi

Hocam 10 sene önceki teknolojiden bahsediyorsunuz. Artık ultrasonik çipinde dahi harici kristal kullanılıyor. Günümüzde kristaller üretildikten sonra ölçülüp ppm hassasiyetlerine göre fiyatlandırılırlar. Seiko dahil böyle üretiliyor. Özetle mikroişlemcide rc osilatörden başka bişey bulamazsınız. Yorumuma açıklık getirmiş oldum.

http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

Müh. müh.

Alıntı yapılan: X-Fi - 27 Haziran 2014, 13:44:50
Hocam 10 sene önceki teknolojiden bahsediyorsunuz. Artık ultrasonik çipinde dahi harici kristal kullanılıyor. Günümüzde kristaller üretildikten sonra ölçülüp ppm hassasiyetlerine göre fiyatlandırılırlar. Seiko dahil böyle üretiliyor. Özetle mikroişlemcide rc osilatörden başka bişey bulamazsınız. Yorumuma açıklık getirmiş oldum.

Ben mcu lardan bahsetmiyorum ki. Rtc iclerinden bahsediyorum.

CLR icin yazdigim ilk mesaji bir kac defa okuyunuz.
Destiny of white is dirtied. Destiny of black is found guilty...

X-Fi

Okudum hocam sizde dahili kristal ürünlerini önermeye devam edin sipariş vermeye ya da üretim yapmaya kalkıştığınız zaman ne demek istediğimi anlarsınız.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

Müh. müh.

#13
Alıntı yapılan: X-Fi - 27 Haziran 2014, 13:59:12
Okudum hocam sizde dahili kristal ürünlerini önermeye devam edin sipariş vermeye ya da üretim yapmaya kalkıştığınız zaman ne demek istediğimi anlarsınız.

10 yil once tasarladigimiz urunler, suan sahada sorunsuz calisiyorlar. Yukaridaki mesajinizda tam olarak ne demek istediniz?
Destiny of white is dirtied. Destiny of black is found guilty...

CLR

benim yorumum işlemci içindiki rtc modulleri içindir, @x-fi'nin dediği gibi %99'i rc osc olarak tasarlanır, %1'lik kısmınıda görmedim belki içinde low ppm xtal olan chip vardır. %99luk kısmı sıcaklıktan, nemden, ondan bundan etkilenirler. ST'ninkiler de rc tiptir ve 37-38khz civarındadır.
en güzeli low ppm harici osc ve sonrasında rtc kalibrasyonu yapmak.   
Knowledge and Experience are Power