Forum: Mikrocontroller und Digitale Elektronik STM32 Min Dev Board - RTC Störungen


von Heiko (Gast)


Lesenswert?

Hallo,

ich benutze ein STM32F103C8T6 Minimum System Dev. Board (2€ Chinateil). 
Das Problem ist, dass die RTC-Komponenten auf diesem Board scheinbar 
nicht sehr stabil ausgelegt sind (32,768kHz Quarz mit 100pF 
Kondensatoren). Ich verwende ein Steckernetzteil (Schaltnetzteil) und 
habe auch ein paar Kondensatoren in Nähe der Versorgungspins platziert.
VBat habe ich wie im Reference Manual empfohlen mit VDD verbunden; 
PC13,PC14,PC15 sind unbeschaltet.

Das Problem: In dem Moment, wenn ich den Programmieradapter abziehe (die 
Masseverbindung zum PC), läuft die RTC mit ca. der halben 
Geschwindigkeit.
Ich gehe davon aus, dass ich mir irgendwo Störungen einfange. Hat 
irgendjemand eine Idee, ob ich noch die Beschaltung RTC-relevanter Pins 
vergessen habe (neben VBat,PC13,PC14,PC15).

Mit dem Oszi habe ich mir die Spannungsversorung angeschaut. Abgesehen 
von dem üblichen Schaltnetzteil-Rauschen sind keine riesigen Störungen 
zu sehen. Wenn ich Gnd mit PE von der Steckdose verbinde läuft die RTC 
auch gut (die Verbindung würde ich mir aber auch gerne sparen).


Vielen Dank für die Infos.
Nachfolgend ist noch mein Code zur Initialisierung der RTC:
1
  NVIC_InitTypeDef NVIC_InitStructure;
2
3
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);  // Enable PWR and BKP clocks
4
  PWR_BackupAccessCmd(ENABLE);                        // Allow access to BKP Domain
5
  BKP_DeInit();                                // Reset Backup Domain
6
  RCC_LSEConfig(RCC_LSE_ON);                          // Enable LSE (32,768kHz Quarz)
7
  while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET){}            // Wait till LSE is ready (Einschwingvorgang abwarten)
8
9
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);        // LSE as Clock source (32,768kHz Quarz)
10
  RCC_RTCCLKCmd(ENABLE);                // Enable RTC Clock
11
  RTC_WaitForSynchro();                // Wait for RTC registers synchronization
12
  RTC_WaitForLastTask();                // Wait until last write operation on RTC registers has finished
13
  RTC_ITConfig(RTC_IT_SEC, ENABLE);          // Enable the RTC Second Interrupt
14
  RTC_WaitForLastTask();                // Wait until last write operation on RTC registers has finished
15
  RTC_SetPrescaler(32767);              // Set RTC prescaler: set RTC period to 1sec
16
  RTC_WaitForLastTask();                // Wait until last write operation on RTC registers has finished
17
18
19
  NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;
20
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
21
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
22
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;      
23
  NVIC_Init(&NVIC_InitStructure);

von QQQ (Gast)


Lesenswert?

Heiko schrieb:

> nicht sehr stabil ausgelegt sind (32,768kHz Quarz mit 100pF
> Kondensatoren).


Das sind 77+pF sind zu viel..

von Heiko (Gast)


Lesenswert?

Das Gefühl hatte ich auch schon, dass die Kondensatoren falsch sind. 
Gibt es einen sinnvollen Grund, diese Auslegung auf einem Board zu 
machen, das zig-tausendmal verkauft wird? Dann müsste doch jeder, der 
das Board nicht gerade mit einer Batterie versorgt Probleme mit 
Störungen bekommen?!?

von Chumz (Gast)


Lesenswert?

> ... 100pF Kondensatoren ...

Ist der Wert aufgedruckt oder hast du ihn gemessen?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Wenn ich mir den Schaltplan vom Mini-Dev-Board anschaue:

   https://www.mikrocontroller.net/wikifiles/c/c9/STM32F103C8T6_MiniDevBoard_Schematic.png

... dann sehe ich da 2 x 20pF.

von Heiko (Gast)


Lesenswert?

Frank M. schrieb:
> ... dann sehe ich da 2 x 20pF.

Ich hab die Information aus einem scheinbar anderen Schaltplan. Dort 
sind 2x 100pF drin. Ich löte die Dinger mal aus und versuche sie zu 
messen bzw. ersetze sie durch 20pF. Mal schauen ob es was ändert.

von Toto mit Harry (Gast)


Lesenswert?

Manchmal hilft es auch den billigen Uhrenquarz gegen einen vernünftigen 
Markenquarz zu tauschen..

von Heiko (Gast)


Lesenswert?

Also an den Kondensatoren lag es schonmal nicht - ich gehe davon aus 
dass es bereits 20pF Kondensatoren waren und ich bloß den falschen 
Schaltplan hatte. Einen besseren Quarz werde ich mir mal besorgen und 
noch ein bisschen auf dem Board herumwüten.
Aber letztendlich komme ich wahrscheinlich um eine saubere 
Spannungsversorgung/Erdung nicht herum.
Vielen Dank für eure Tipps und Meinungen!

von W.S. (Gast)


Lesenswert?

Frank M. schrieb:
> Wenn ich mir den Schaltplan vom Mini-Dev-Board anschaue:

Ja, dann graust es einen. Trotz minimaler BE-Anzahl unübersichtlich, 
eben die typische Chinesenmethode. Was mich wundert, ist daß VBAT - 
soweit ersichtlich - nur an einen Pin gelegt ist, ohne Diode von VCC und 
ohne Stütz-Goldcap (oder wenigstens nen leeren Footprint dafür). Oder?

W.S.

von Gerd E. (robberknight)


Lesenswert?

Hast Du die LED an PC13 in Verwendung? Wenn ja, dann probier mal PC13 
als Input zu schalten und auf die LED zu verzichten.

PC13 bis PC15 sind intern mit der Versorgung verbunden, die u.a. für die 
Oszillatoren verwendet wird. Die sollte man daher wenn überhaupt nur als 
Inputs verwenden, nicht als Outputs wie hier bei diesem China-Board.

Wenn man die als Outputs verwendet, kann es zu Störungen beim Takt 
kommen.

Im Datenblatt steht da auch ein Hinweis zu drin auch wenn die sich da 
ein wenig bedeckt halten.

von Chumz (Gast)


Lesenswert?

Gerd E. schrieb:

> Wenn man die als Outputs verwendet, kann es zu Störungen beim Takt
> kommen.

Wo kann man das nachlesen?

> Im Datenblatt steht da auch ein Hinweis zu drin auch wenn die sich da
> ein wenig bedeckt halten.

Im Datenblatt des STM32F103C8T6 steht dazu nichts drin.

von Schmonz (Gast)


Lesenswert?

Chumz schrieb:
> Wo kann man das nachlesen?
Im Datenblatt!

> Im Datenblatt des STM32F103C8T6 steht dazu nichts drin.
DocID13587 Rev 17, Seite 33/117, Anmerkung 5:

5. PC13, PC14 and PC15 are supplied through the power switch. Since the 
switch only sinks a limited amount of current
(3 mA), the use of GPIOs PC13 to PC15 in output mode is limited: the 
speed should not exceed 2 MHz with a maximum
load of 30 pF and these IOs must not be used as a current source (e.g. 
to drive an LED).

von Chumz (Gast)


Lesenswert?

Danke Schmonz, habe ich glatt übersehen.

von Gerd E. (robberknight)


Lesenswert?

Es steht nicht explizit was zum Takt drin, aber das ist eine der 
negativen Folgen die man beobachten kann, wenn man sich nicht dran hält 
und die als Output verwendet. War u.a. mal ein Thread hier im Forum bei 
dem genau das das Problem war.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.