What are the main differences between the PAC52xx (M0 Core) and PAC55xx (M4F Core) devices? Are there specific applications that need the higher performance M4F core?
HI Brad, will be glad to point some nifty differences between both PAC5xxx cores. In essence, the main differences between the 32 bit Cortex M0 found on PAC52xx devices and the 32 bit Cortex M4F PAC55xx devices are:
- PAC52xx M0 can execute as fast as 50 MHz (when executing from RAM), whereas the PAC55xx M4 can execute code at 150 MHz (when executing code from RAM).
- PAC52xx M0 has 32KB of FLASH and 8 KB of RAM, while the PAC55xx M4 has 128 KB of FLASH and 32 KB of RAM.
- PAC55xx has cache which allows for code executed from FLASH to execute as fast as 75 MHz.
- PAC52xx has 1 UART, 1 I2C and 1 SPI port for application interfacing. PAC55xx has 3 UARTS, 3 SPI, 1 I2C and 1 CAN serial communication ports.
- PAC52xx has some flexibility on internal resource routing to available GPIO resources. Some pins can have up to 4 different functionality. PAC55xx has a Digital Peripheral Mux (DPM) which allows up to 8 different resources to be routed into each GPIO pin. The DPM facilitates resource allocation throughout available GPIO resources.
- PAC52xx have four 16 bit PWM timers with as much as 15 CCR resources, whereas the PAC55xx has four 16 bit PWM timers, each with 8 CCR registers.
- PAC52xx has a 10 bit 1 MSPS ADC and a Sequencer with as many as 16 entries. PAC55xx has a 12 bit 2.5 MSPS ADC and a Sequencer with as much as 24 entries.
So which one should we employ? Of course it will depend on the application, but most importantly how much performance the application requires. Important thing to keep in mind is that from an algorithm point of view, either the PAC52xx or the PAC55xx will be able to handle either six Step Trapezoidal or Field Oriented Control in either sensored or sensorless mode. What ends up defining which core is best is what else we need the controller to execute on. For example:
-
If all we need to do is control a motor in low to medium speed or torque modes, then the PAC52xx M0 is more than enough. If we need very high speeds (more than 3000 Hz Electrical Revolution), we will want to consider the PAC55xx M4F core
-
If all we have is a simple motor control structure with a simple communication requirement to control speeds, torque, and such, then the PAC52xx M0 core will do fine. If on the contrary the application is expected to interface to different peripherals like hall sensor based absolute position encoders, accelerometers, BLE bridges, and so on, we will be better off with the PAC55xx M4F core.
-
If the application is constrained by cost requirements, we will want to steer as close as possible to the PAC52xx M0 core. if the application is more permissive of a slightly higher cost structure in favor of higher performance, more memory, larger peripheral count, hardware floating point math, etc, then the PAC55xx M4F core will be best.
Hope this answers your question!