STM32 Min Dev Board - RTC Störungen

Gast #5073855
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);
Gast #5074033
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?!?
Gast #5074319
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!
Gast #5074826
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.
#5074867
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.
Gast #5074877
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.
Gast #5074896
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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren