0
\$\begingroup\$

I have a custom board with a basic crystal oscillator connected to the High Speed Oscillator pins of my STM32F446RET6. Schematic

I assembled 2 boards and found out only 1 board works fine but the other does not. I replaced the crystal and the capacitors but I still do not see any waveform from this board. I replaced the STM32 as well but still no luck. The STM32CubeIDE can flash firmware and erase it but when I debug it, it always hardfaults at SystemClock_Config(). The power supply to the board is also at a stable 3.3V. As peripherals, the board has CAN transreceivers and an SD card.
What could be the potential reasons for the failure of this board?

\$\endgroup\$
6
  • \$\begingroup\$ The clock does not oscillate unless the software enables the oscillator. It's possible that there is a soldering problem or PCB problem, either short circuit or open connection. It may not be on the crystal pins but on some MCU pin that is required for proper operation, such as a supply pin or ground pin, a there are multiple of them. If you can post the whole schematics it may explain if there is a design error. The crystal may also be unsuitable. Which exact part you ordered? \$\endgroup\$
    – Justme
    May 25, 2023 at 9:25
  • \$\begingroup\$ @Justme Updated the full schematics. The crystal is mouser.de/datasheet/2/3/ABM3BAIG-1608910.pdf. I doubt the design error like I mentioned, one board works fine and the other one doesn't. I suspect it is a soldering issue but I cannot isolate it yet. \$\endgroup\$
    – dreamcoder
    May 25, 2023 at 9:57
  • \$\begingroup\$ The circuit is not exactly as per manufacturer suggestions. VBAT is not connected, not all supply pins have bypass caps and VCAP capacitor is likely larger than recommended. But otherwise the crystal, if that is 18pF model, should work, although the ESR is a bit high. Have you debugged where the hard fault happens and why? \$\endgroup\$
    – Justme
    May 25, 2023 at 10:40
  • \$\begingroup\$ Technicality: what you have connected to your STM32 is a crystal, not a crystal oscillator. The oscillator is inside the STM32 and uses the external crystal as the resonant component which determines the frequency of oscillation. \$\endgroup\$
    – brhans
    May 25, 2023 at 10:54
  • 2
    \$\begingroup\$ I assume you're using the internal PLL to run the STM32 at a higher frequency than the 8MHz from the crystal - how do you have that configured? Are you certain that you have the Flash configured for the correct number of wait states for that frequency? Also try setting the Bus- Usage- & MemManage- fault enable bits in the SCB-SHCSR register to get a better idea for the reason behind the HardFault you're seeing. \$\endgroup\$
    – brhans
    May 25, 2023 at 11:04

1 Answer 1

0
\$\begingroup\$

Turns out, it was a soldering issue indeed. A couple of MCU pins had no solder contact and it is fixed now. Thanks for the inputs everyone!

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.