Are there resources to more easily understand peripheral versions used across families?
I use a lot of STM32s in my work. The reference manuals, datasheets and so on are excellent but often contain a lot of near repetition between families. What I mean is that the details of the registers for (say) GPIO are often identical. But not always or not quite. It seems clear that there are multiple different versions of the silicon blocks used for various peripherals, depending on the family (as you'd expect). For example, GPIO features appear identical for F0 and F4; G4 is almost the same, but has an extra BRR register; F1 is very different. DMAs for F0, F4 and G4 are significantly different from each other. And so on.
This makes writing portable drivers a bit awkward. For fun, I like to write drivers directly from the reference manual - no CMSIS or other dependency. But will the code I write for some peripheral on F0 be reusable on a G0, or an L4, or whatever? It is hard to be sure. Now, I could just rewrite drivers for each family (like HAL, I guess) but would prefer to avoid unnecessary repetition.
I was wondering if there is a resource which can make it simple to understand which families of parts use which versions of peripherals. I'm imagining a feature matrix or some such: All F0 and F4 GPIO is GPIOx, but F1 uses GPIOy, ... And/or something which compares and contrasts all the different flavours. I haven't found an applicition note for this. Maybe the data is not publicly available or just doesn't exist.
I have tried trawling the various SVD files with a script to collate such data, but found some inconsistencies in register and field naming.
Thanks.