Forum: Analoge Elektronik und Schaltungstechnik CH32V003 RC-Oscillator / Jitter


von Vanye R. (vanye_rijan)


Angehängte Dateien:

Lesenswert?

Moin da draussen,

Hat schon mal einer einen Blick auf den internen RC Oszillator des 
CH32V003
geworfen?

Das Bild zeigt den MCO Ausgang an PC4 wenn der den HSI ausgibt.
Das sieht ja grauselig aus.

Das uebschwingen ist okay, liegt daran das ich mit Pigtail am
Tastkopf arbeite, war mal faul.
Aber wie kann es sein das der fuer genau vier Perioden so
rumjittert und sich dann wieder faengt?

Schaltung sieht so aus:

Beitrag "CH32V003 Minimales Testboard"

Man koennte einwenden das ich den 100nF besser haette plazieren koennen, 
deshalb hab ich nochmal einen zweiten direkt ueber die 
Versorgunganschluesse am Controller geloetet.
Es ist auch egal ob ich die Spannung zwischen 3.3V und 5V variiere oder 
das Dingen mal mit Kaeltespray bearbeite.

Vanye

von Andreas R. (rebirama)


Lesenswert?

Eventuell hat das Teil einen jitter-armen rc Oszillator und eine 
jitter-reiche spar-PLL, die jeden 4. Takt wieder eingefangen wird? Auf 
jeden Fall sehr merkwürdig...

Oder der jitter ist künstlich um die Abstrahlung zu kaschieren. (spread 
spectrum)

: Bearbeitet durch User
von Vanye R. (vanye_rijan)


Angehängte Dateien:

Lesenswert?

Okay, erstmal ich fand es auch haesslich. Darum hab ich mich doch
mal aufgerafft mit Massefeder mal ordentlich zu messen.
Da sieht man gleich mal warum sowas wichtig ist!


> Eventuell hat das Teil einen jitter-armen rc Oszillator und eine
> jitter-reiche spar-PLL, die jeden 4. Takt wieder eingefangen wird?

In dem Teil ist ja eine PLL drin. Nennt der Hersteller jedenfalls so.
Kann aber nur x2 und nix anderes. Die MCU selbst laeuft auch damit, also
mit 48Mhz! Aber natuerlich kam mir auch zuerst der Gedanke das es
an der PLL liegt, deshalb zeigt Bild auch den HSI.

Man sollte ja meinen das man da nicht viel falsch machen kann:
1
  uint32_t temp;
2
  RCC->APB2PCENR |= RCC_APB2Periph_GPIOC;
3
4
  //PC4 als PushPull alternate function ausgang
5
  GPIOC->CFGLR &= ~((uint32_t)0xf<<(4*4));                     
6
  GPIOC->CFGLR |= (GPIO_Speed_50MHz | GPIO_CNF_OUT_PP_AF)<<(4*4);
7
8
  //MCO aktivieren
9
  temp = RCC->CFGR0;
10
  temp = temp & (~RCC_CFGR0_MCO);
11
  temp = temp | RCC_CFGR0_MCO_HSI; //interner RC Oszillator
12
  RCC->CFGR0 = temp;

Dabei wollte ich nur kurz die Frequenz messen weil ich den Eindruck
hatte als wenn die mit 5% ganz schoen weit daneben liegt. :)

Vanye

von Vanye R. (vanye_rijan)


Lesenswert?

Obiges Bild ist ja entstanden als der HSI eingeschaltet war (24Mhz) und 
die PLL daraus 48Mhz gemacht hat und damit lief dann die MCU.

Ich hab mal ein bisschen mit den Einstellungen rumgespielt, also MCU 
ohne PLL laufen lassen, in der StartConfiguration oder mit 
unterschiedlichen Waitstates auf das Flash. Jede dieser Einstellungen 
veraendert den Jitter auf den 24Mhz, aber er verschwindet nie.
Daher neige ich mich der Vorstellung zu das die MCU einfach Murks ist. 
Ich glaube das irgendwo auf dem MCU die Signale aus anderen Bereichen 
rueberkoppeln.


Vanye

von Norbert (der_norbert)


Lesenswert?

Vanye R. schrieb:
> Daher neige ich mich der Vorstellung zu das die MCU einfach Murks ist.

Ich vermute, mehr war für 10ct/Stück einfach nicht drin.
Und ich lehne mich nicht all zu weit aus dem Fenster wenn ich behaupte, 
das in 99.99% aller Anwendungsfälle der Jitter völlig zu vernachlässigen 
ist.

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.