(HSE = High Speed External, het externe processor-klok-kristal).
Ik heb een printje gemaakt met een STM32F303RB er op.
Ik heb altijd bij STM het kristal gewoon direct op het de osc pinnen aangesloten, en tegenwoordig bij RP2040 ook.
Nu ben ik het bord aan het opbrengen en HSE komt niet op.
Nu heb ik op STM altijd ST gevolgd en tot gisteren altijd een 8MHz kristal gemonteerd, maar dit keer een 12MHz. Levert natuurlijk wat gezeik op met configureren van de software, maar ik dacht dat ondertussen wel aan te kunnen. Alleen de hele HSE draait niet.
Nu ben ik aan het kijken wat er op de nucleo/discovery boards zit en... ze hebben in 2020 de schemas uit de manuals gehaald. Maar in een locaal bewaard copie:
... zit er een 220 ohm weerstand in serie.
Die zit natuurlijk niet op m'n print.
Ik vond in het datasheet een 200k "feedback resistor". Ik heb nu een 220k weerstand tussen de OSC-IN en OSC-OUT gesoldeerd en... nog steeds niets.
179 while (!(RCC->CR & RCC_CR_HSERDY))
180 ; /* Waits until HSE is stable. */
Volgende stap is een lompe (=HC49, er zit nu een 3.2x2.5mm op) er op solderen.
Maar iemand andere ideeen?
OK. Ik heb nu "HSE UIT" geconfigureerd (in chibios, het framework wat ik voor STM32 gebruik).
Dan kan ik op de HSI 8MHz tenminste code draaien. Dan kan ik ledjes laten knipperen, dus "de rest" doet het voorlopig.
En nu heb ik met de hand:
RCC->CR |= RCC_CR_HSEON;
gezet voor mijn mainloop.
En in de mainloop: indien klok loopt, knipper OOK ledje2:
while (1) {
palTogglePad (GPIOB, 2);
if (RCC->CR & RCC_CR_HSERDY)
palTogglePad (GPIOB, 3);
_delay_us (500000);
}
Zodat ik gewoon met het ledje kan zien of de klok loopt of niet....
En gedownload en..... ledje knippers. Verrek! Dus met de scoop kijken of ie echt draait en:
Hij doet het gewoon. Geen zin om precies te tellen, maar ziet er toch echt wel uit als 12MHz.
Dus: Zucht.... waarom krijgt Chibios bij het opstarten de klok niet aan de praat, maar ik wel (*)????
(*) met een regel code die ik copy-paste uit chibios heb gecopieerd.