The MCUXpresso Pins Tool is part of the NXP configuration suite which makes pin assignments, configuration and muxing easy. What I have somehow missed from one of the latest updates and releases is that it allows me now to add my own custom headers definition. Not only the tool is now aware of the ‘standard’ Arduino headers, but I can add my own headers too. This can be useful for providers of breakout boards or any kind of board which can be added to a MCU board. In my case it is very useful for projects where we design our own (breadboard-friendly) board or a custom board with an expansion board: we can design a board header and use it in other projects.
The ‘Expansion Header‘ and ‘Expansion Board‘ simplifies using Boards with the MCUXpresso Pins tool. That way the signals between a board with headers and a possible expansion board can be simplified.
For example many evaluation boards as the NXP LPC55S69 board below have headers populated, on which expansion boards can be attached to, like the ‘Arduino’ headers below:
The NXP Configuration Tools already come with a set of header and board description files, but it is possible to extend that with custom headers and boards. Because the documentation about this is not very detailed (see links at the end of this article), I show it with the example of the LPC845-BRK board and a custom board I’m suing to control split-flap displays.
The Expansion Header is described in an XML file. On Windows, that XML file can be found here:
The XML signal types used can be found here:
❗ Be careful with selecting the correct sub-directory by the version number.
The Config Tools version number can be found here:
In my case, I’m using the version 11:
Keep in mind that these files are part of the usual MCUXpresso IDE installation with the configuration tools: There is currently (to my knowledge) no way to have the data file part of a project, so they are shared for the installation/version of the configuration tools. This means that I have to copy my files if I want it in a new version of the tools or if I want to use it on a different machine or installation.
To create a new header: the easiest way is to copy an existing file (e.g. micro_bus.xml) and save it as a new file (e.g. lpc845-brk.xml). Then give it a new ID and new name:
After that, the file can be extended as needed. Below is an example configuration:
After changing the XML file, do not forget to restart the IDE.
Using the Header
The header files are read at tool/IDE startup. So make sure you restart the IDE if it is already running.
From the Pins Tool, select the ‘Expansion Header’ Tab:
From there, use the ‘+’ to add a new header:
In the dialog, give the header a name and select the type: the newly added header shall be listed (lpc845-brk in my case):
Next, add labels for the headers:
Next, the pins and connections can be changed as needed:
Now any (compatible) expansion board can be assigned to the header. It is possible to create a custom board too, see this article.
The expansion board can be applied to the header using the toolbar:
Browse for the board XML file:
In the next dialog, map the connection pins:
That’s it! From here on mux and configure all the other pins as usual in the Pins tool
The feature of expansion headers and boards is useful for a class room environment, where I have to ‘distribute’ board definitions and configurations. It requires setting up XML files and manual distribution of the XML files. The feature might be useful for expansion board vendors, but as the files are specific to the NXP tools, I’m not sure if this will be used widely. But for some use cases like a classroom environment, the efforts to create the XML files can pay off.
Happy expanding 🙂
- MCUXpresso Knowledge Base article: https://community.nxp.com/t5/MCUXpresso-Config-Tools/Creating-expansion-board-definition-file-for-Arduino/ta-p/1331509
- Adding Expansion Headers: https://community.nxp.com/t5/MCUXpresso-Config-Tools/Adding-Expansion-Headers-to-a-custom-board/ta-p/1415559
- NXP Pins Tool: Understanding Data for Offline Usage
- NXP Pins Tool: Clock Gates and Controlling the Bits