Cool board!
I get some errors when opening the layout file, I’m not sure why, even trying to open the .kicad_pcb file directly does not work. Did you set something custom up for filepaths or anything?
I saw you allocated some pins for EMO (nice!) but I’m confused the difference between CPU_ESTOP and ESTOP? And CPU_ESTOP, CPU_ESTOP_AUX are not routed anywhere external, just between mcu?
Also, I’m curious why choose W25Q16 16MBit flash instead of W25Q128, the price difference is so small? A lot of people on the forum here had issues with running out of flash to run SFOC with some extra peripherals, it might save you headache later.
I would suggest that instead of doing like this:
Just to put the purpose as the net name, when trying to see what is connected to what A3_2 kind of obfuscates the purpose, but you assign a net later (TH1) which is useful and indicates what the pin is for. Also, I would group the blocks by function, like put the flash next to each other, etc - I had a hard time finding misc peripherals. Also, you can use the text field to put some additional detail to show what goes to what, like inter-mcu serial bus (using the EDA software, it’s easy to find connected nets with ~ but if you are looking at the PDF file, it’s impossible to find).
I would split your MCU page into A and B, one for each MCU with the connected peripherals so it’s clearer what is doing what, with some inter-sheet pins to show when things are going out of the local area. It will make it more readable
You should also change the name for the crystals, I don’t think any of them were labelled - for example rp2040 requires 12MHz clock, but the names for clocks are Crystal_GND_24. But your CAN translator also need a clock, but the frequency is not shown - this makes creating the BOM more difficult and much more difficult to identify replacement parts if anything you are looking for is not available.
Just wondering, does your application use both cores? I was wondering about doing dual motor control with one SFOC loop per core, I don’t know if anyone else did something like that yet.
I think the MOSFET drive circuit looks good, I know the datasheet for your driver does not suggest any pull-down on the gate for the MOSFET but I would put the footprint as DNP - if you end up needing this it will be helpful, but also I understand if it’s too late to modify layout for a small thing like that.
Also, I saw you are using CAN-serial translator, did you see the can2040 PIO implementation by Kevin O’Connor? GitHub - KevinOConnor/can2040: Software CAN bus implementation for rp2040 micro-controllers, it might save you some BOM cost if you have one PIO engine available, and it seems pretty robust.