

The controller can often crudely sort the incoming CAN traffic by itself. Like for example I2C doing a start and stop condition instead of restart, or the UART not supporting a easy way to constantly read data like a normal serial port would.ĬAN mostly just looks complicated due to the amount of features that most CAN controllers provide. And the reason i ended up digging trough the driver source code is to make it do a simple task that was not supported. You get a I2C driver in the form of a C and H file with thousands of lines that are full of preprocesor defines that go 4 or 5 levels deep, making it a pain to understand what the driver actually does. They are a over complicated mess that doesn't even do the job in the end. The "HAL drivers" however are pretty crap. etc It helps with finding the right pins for your peripherals and sets up your pinmuxes and all. It does a lot of the heavy lifting for middlewares like FAT32, TCP/IP, USB, RTOS. Quote from: Berni on January 08, 2020, 11:29:13 am For some stuff CubeMX does a great job like setting up the clock generation and distribution trough a nice GUI (It gets complex on big chips with 3 PLLs and tons of peripherals.). The newer LL drivers are better in most cases, but still don't expect to never have to touch the driver or read the peripheral datasheet. Like for example I2C doing a start and stop condition instead of restart, or the UART not supporting a easy way to constantly read data like a normal serial port would. For some stuff CubeMX does a great job like setting up the clock generation and distribution trough a nice GUI (It gets complex on big chips with 3 PLLs and tons of peripherals.). They just stuck the CubeMX utility as a plugin into the official STM32 Eclipse based IDE (That used to be Atollic TrueStudio IDE before they acquired them). They merged everything recently into something called "STM32 Cube IDE".
