mip wrote:Not having Eagle (KiCad only), I cannot have a look at the schematics.
The board fits on the free version of EAGLE, which is available for Windows, Mac and Linux. But if you can't install it, there's a link to the schematic in PNG format at the bottom of my previous post.
mip wrote:One point that caught my eye from looking at the boards is the traces to the SDRAM: The trace lengths should match.
Unfortunately, the STM32F4 has external memory signals on all four sides of the LQFP144, which is 20mm wide (twice the distance between it and the SDRAM). Maybe half of the signals are on the side I placed next to the SDRAM, but the others are scattered around. I don't see how I could fit 20mm of spare length for these 20 or so signals to match the ones further away, especially on a 2 layers board.
That being said it's the first time I work with SDRAM. It is single data rate, 166MHz clock (from the chip spec, I guess I can run it slower). Do you think signal length matching will matter that much?
mip wrote:Check the JTAG pins (PA13,14,15,P_B_3 (not P_D_3), PB4, don't split those signals to different io headers). Or better: provide footprints for a standard JTAG connector.
I did check them, they are all available, but on different headers (some on the bottom, some on the left). I exposed all I/O pins of the MCU in almost the same order as the package to simplify routing. I'll see if I can move all the JTAG ones on the same side.
A standard JTAG connector might be more complicated to put. Keep in mind that the board might be smaller than it looks. The external headers pitch is 2mm, not the usual 2.54mm.
And for a little background, I didn't put too much effort into exposing JTAG because the MCU contains a USB bootloader hardcoded in system memory, so reflashing the chip should be easy to do just using the USB port. Basically I expect that very few of the intended users might have a need for JTAG besides me.
mip wrote:USB ports should have transient voltage suppressor (TVS) diodes.
My STM32 projects using USB have so far been alright without these, but I must admit that I was much more space constrained. Moving to the SoB format freed 2mm on that side of the board, so I can probably add these.
That being said I designed the USB ports to be optional, so that the 3 pins (D+, D- and ID) of each port can be used as GPIO. I'm a bit concerned that puting TVS diodes on these lines may reduce their usefulness as GPIOs. In particular the same pins I believe are used for the CAN transceivers, and I don't know if these diodes would be a good thing or a bad thing for CAN.
But I never used TVS diodes, so I'll document myself before deciding.
mip wrote:The IO headers should have VCC, GND on the same positions. Maybe GND, VCC, GND starting on pin 1 so that a GND pin could be sacrificed as an index pin when connecting flat ribbon cable connectors (or use double row connectors, which are more common).
The two side headers have completely different signals, just what happened to be there on the MCU package. It's not like a generic side port with the same functionality. What would be the added value of having the power pins on the same position in that case?
mip wrote:Provisions should be made for a 32khz xtal.
I'll see if I can put the footprints for a crystal, even if I don't populate it. I exposed the VBAT pin, so I guess some might want to use this in very low power scenarios and use a RTC when in sleep mode.
mip wrote:Check the space between board edge and io connectors. At least the connector on the long side should be able to be soldered with a 90° pin array to be able to plug it directly into an experimenter's board.
I'll check that, but with a 2mm pitch header, it won't fit on a regular 2.54mm breadboard. I'll see if they make 2mm breadboards, or maybe see if I can make an adapter board.
mip wrote:There's plenty of room left, maybe add some "prototyping area" next to the pin rows.
[/quote]
There is not that much space left. Keep in mind that the headers pitch is only 2mm, and having only 2 PCB layers to play with I don't have lots of flexibility for routing. Also my assembly skills are limited, so if the board gets too dense I won't be able to assemble the prototypes.
Anyway, thank you very much for the feedback. Please have a look at the schematic and tell me if you see something broken. I'm especially not sure about the DFU button handling.