Peripherals compatible between NxP Cortex families?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Peripherals compatible between NxP Cortex families?

384 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by RA1981 on Wed Jul 13 13:38:29 MST 2011
Hi,

I wonder if the peripherals (UART, I2C, etc.) are compatible between the NxP Cortex families?
That means, if I write a driver for the UART of a LPC11xx (M0), will this driver be usable for the LPC12xx (also M0) and LPC13xx(M3) and LPC17xx(M3)?
Of course, for example a LPC17xx contains four UARTs, but one of them is compatible to the UART of the LPC11xx (except for DMA).

Same for I2C driver, can the same driver code be used? I'm already in comparing the user manuals about register compatibility etc. but maybe a comparison table of the peripherals exists...

Regards,

Ralf
0 Kudos
5 Replies

355 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by RA1981 on Thu Jul 14 14:45:53 MST 2011
Hi all,  thank you all for your answers. So, one of my biggest pains is kicked out :) I had many MCU projects in the past where it always was painfull to get the peripherals to work because of different register (addresses) or features of same peripheral functions, even on the same MCU core from the same vendor. Of course, I'll always study the user manuals to ensure that the driver is really compatible, but it's great from NxP that they try to keep the peripherals compatible.  Regards,  Ralf
0 Kudos

355 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by NXP_USA on Thu Jul 14 11:20:00 MST 2011
We do tend to carry forward many of the same IP blocks, sometimes with improvements. These common blocks that usually stay the same include things such as I2C, SPI (SSP), UARTs (we have UART and USART types), EMC (External Memory Controller), timers, and LCD. These blocks are often the same even between whole different families of LPC products.

Other things that have been (historically) more likely to change on different chips families include the clocking design (PLL block + dividers and muxes) GPIO design, and pin multiplexing. There are also several ADC blocks and they get improved regularly.

However, there are always completely new features coming out in new silicon. At this moment several that come to mind are SPIFI, SGPIO, and SCT. We depend on engineers to adopt these new features to solve design problems despite the potential need for new coding- and we always provide example code (and sometimes ROM drivers or PC-based tools) to help them get started.
0 Kudos

355 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by ktownsend on Thu Jul 14 04:19:54 MST 2011
There are some difference between the USB device block on the 134x and the 17xx.  I was actually looking at this last week to try to get a grip on the difference in USB Device between the 11U14, 1343 and 1768.  There doesn't seem to be a way to make tables on the forum here, so I'll try to make this readable:

                    LPC11U14  LPC1343LPC1768

Physical Endpoints  10        10        32
Logical Endpoints   5         5         16
-Control            1         1         1
-Bulk Only          0         0         6
-Interrupt Only     0         0         5
-Isochronous Only   0         1         4
-Interrupt/Bulk     0         3         0
-Interrupt/Bulk/Iso 4         0         0
EP Double-Buffering 1 Bulk    1 ISO     Yes
Packet Size         64/1023   64/512    Adjustable
DMA                 Yes       No        Yes


As mentionned, the 1114 and 1343 are mostly HW compatible apart from missing peripherals or differences between the M0 and M3 cores.  The 17xx is different in a number of way.

That said ... the peripherals on most LPC devices (LPC2xxx and LPC1xxx) all tend to be pretty similar, which is why (personally) I tend to stick with NXP.  Once you get the hang of the peripherals and documention with one family it's pretty painless to migrate to a different family, with things like I2C, SSP, UART, etc., usually staying almost the same (sometimes with small improvements).
0 Kudos

355 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by Rob65 on Wed Jul 13 23:58:19 MST 2011
Ralf,

I've been looking for that same list :o
As far as I know the lpc11xx and 13xx share almost all the same peripherals.
If there are differences this is because a peripheral is not available on the other type (e.g. USB).

I2C is the same on the 17xx, uart seems to be the same (except for DMA and IrDA/RS-485 support) and one driver for normal RS-232 output works with both uart0 and 1 on the lpc1754.
SSP is the same except for DMA, the LPC17xx has a legacy SPI block that is the same as the one in the lpc21xx series.

The USB device controller is the same on all devices; lpc13xx, 17xx and 2148 all share the same USB hardware with a few exceptions.
This does result in a different register layout for some of the registers.
The lpc13xx has 10 endpoints, the 17xx 32. The lpc17xx has DMA, the lpc13xx does not.

For me a big disappointment was that the timers in the lpc17xx have no PWM mode available so I'm stuck with one PWM block where all outputs share the same PWM base frequency ...

There are also hardware differences.
The I2C lines on the lpc11xx and 13xx have dedicated I2C drivers that are fully I2C compatible. On the lpc17xx only I2C0 has dedicated I2C pins, the other I2C interfaces use regular I/O pins - these can be set to Open Drain, no pull up mode which is OK for normal (100/400 kHz) speed but they cannot be used in Fast+ mode ( 1 MHz) according to spec. Only the lpc176x has I2C0 available, the lpc175x does not :eek:

Creating a comparison table is hard to do, even for NXP.
The peripherals used may be the same but with different configuration options. Lets say there is one 16c450 compatible uart hardware block, that block has a lot of options like support for DMA, IrDA, RS-485, FIFO sizes, interrupt settings on FIFO limits, multiple interrupts or one combined interrupt output etc.

And even if the peripheral is the same. Clocking and I/O configuration (which peripheral signals connect to which pins) is different.

Regards,

Rob
0 Kudos

355 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by domen on Wed Jul 13 23:33:44 MST 2011
That would be great, but unfortunately, I have not found any such table.
For uart, I can tell you it's pretty much the same on lpc11/lpc13, and very similar on lpc21 (seems like earlier revision was there).

While looking for this info, I came across this:

Quote:
Some LPC2k devices there was an SPI port and an SSP port.  The SSP port is licensed from ARM, it's a PrimeCell PL022, and is on many, many devices--not just LPCs (STR910 has one, as done LM3S silicon).  The SSP is a much better implementation than the old (legacy) SPI stuff you found on LPC2106.  Newer LPC2ks have SSP ports.  The advantage of the SSP port is that you can drive it nicely from the DMA controller on the LPC1700--it's a PrimeCell PL080/81 from ARM with eight channels implemented (IIRC, and as used on the LPC3000 series with many more channels implemented).


You can also scan the register blocks for the PrimeCell IDs. All
standard PLxxx peripherals seem to have the PrimeCell ID (0xB105F00D)
at 0x0FF0 and peripheral ID at 0x0FE0.



It also included source code for a simple scanner.
0 Kudos