ARMwizard, freeware app to setup LPC2xxx,17xx,13xx,11xx reg

I thought it would be nice to have an application where all the initialization values for the microcontroller registers could be easily set up

using a graphic interface but I wasn’t able to find any commercial or free application so I have started my own application available as a freeware.

I have called the application ARMwizard and it is already in version 1.3.

I keep adding more settings and I will also add more LPC2xxx series models in future versions, the application can support LPC21xx, LPC23xx, LPC24xx etc.

The current version includes mcu profiles for LPC2101/2/3, LPC2104/5/6, LPC2131/2/4/6/8, LPC2141/2/4/6/8

The application can help set up the registers of Philips (NXP) LPC2xxx ARM7 microcontrollers, it is mainly designed to be used

with KEIL uvision but the created code can easily be modified (mainly the interrupt functions) for other compilers because

all the register names are the ones used in the datasheet of NPX.

It generates the initialization code with the selected settings, fully commented and including register values and interrupt functions,

you just have to copy it in a new project to have a starting point in a few minute, this should make the development of applications much easier and faster.

The settings include:

  • GPIO, select inputs/output direction or any alternative pin function using a convenient graphic interface and also a quick selector which has all the functions in groups.

  • Interrupts, select from a list any of the available interrupts sources and add them to the selected vector, the functions will be created automatically.

  • External Interrupts, set the external interrupt options using combo boxes.

  • A/D converter, set any aspect of the ADC (mode, channels, interrupts etc.) with explanation for every setting and see the calculated clock and sample rate without having to calculate anything.

  • Timers, set any aspect of 16/32 bit timers (mode, MAT, CAP, interrupts etc.) with explanation for every setting and automatic clock calculation.

The application is a Windows executable but is completely compatible with Linux using WINE, it doesn’t need any installation,

just unzip the downloaded file and run the application.

It doesn’t write anything to system folders or the registry, to remove the application you just delete the executable file and the include folder.

You can see snapshots of the application and sample of the generated code in

http://alexan.edaboard.eu

Best regards

Alexan Eramian

thanks for a great tool.

Posted about it on the lpc2000 forum?

stevech:
Posted about it on the lpc2000 forum?

See the discussions:

http://tech.groups.yahoo.com/group/lpc2 … sage/53305

http://tech.groups.yahoo.com/group/lpc2 … sage/53330

http://tech.groups.yahoo.com/group/lpc2 … sage/53403

http://tech.groups.yahoo.com/group/lpc2 … sage/53419

http://tech.groups.yahoo.com/group/lpc2 … sage/53523

Great tool.

Why not covering LPC1100, LPC1300 and LPC1700 ?

Angelo

Polux rsv:
Great tool.

Why not covering LPC1100, LPC1300 and LPC1700 ?

Angelo

Hi

I have started the application for my projects actually and I was only using the smallest LPC2103 and only for some simple IO slections,

Then I thought that I could also add the other 21xx which are similar and add more functions.

In version 1.3 I checked a few datasheets and I saw that 22xx,23xx,24xx were similar and could also be added.

So in version 1.3.1. I’m actually working on adding 24xx chip profiles but as I’m checking the datasheet I’m making changes to be able to work with these.

For example in LPC2478 that I’m adding there is the PINMODE register for the pull up/down resistor so I had to add one more icon to the treeview I/O,

the fast GPIO should be set independent for the 5 ports because two of them (0,1) can work both ways but 2,3,4 can only work with FIO,

Also the interrupt vectors which are now 32 instead of 16 or the clock divider that can be set in different values for each peripheral etc.

After there changes I suppose that I could also add the 17xx (it is the only one I’ve checked from the ones you mention) maybe with a few more changes,

For now I’m trying to add 2xxx devices first.

Best regards

Alex

Hi

I have updated the application to version 1.3.1

What is new

-Added LPC2420, LPC2458, LPC2460/68, LPC2470/78

-Added save/load to store/restore configuration (I/O, interrupts, ADC, Timers etc.)

-The reserved alt. pin functions can’t be selected.

-Added Pull up/down resistor setting for LPC23xx/24xx

-The peripheral clock dividers can be different for each peripheral for 23xx/24xx support

Visit

http://alexan.edaboard.eu/

Best regards

Alex Eramian

ARMwizard updated to version 1.3.2

What is new

-Added the complete LPC23xx series mcu (LPC2361/62/64/65/66/67/68/77/78/87/88)

-The ADC channels that are not available are now disabled (grey checkbox)

-The interrupt initialization for 24xx has been fixed.

-The selected mcu profile is shown with red in the mcu selector

-The fast interrupt is shown with blue color (vectored isr shown in red) in the available interrupt selector

Visit

http://alexan.edaboard.eu/

Best regards

Alex

ARMwizard updated to version 1.4

What is new

  • Added the PWM settings tab to set all the registers of pulse width modulation

  • The last loaded configuration file (.sav) is stored and used as default path/name when you restart the application and press load configuration. [Simon B.]

  • The PR register of Timers, MR0 register of PWM and CLKDIV of ADC have a right click function to set value by target frequency or period. [Simon B.]

  • The CCLK clock frequency is always common and can’t be set individually for each peripheral.

  • Added individual PCLK setting for each timer for chips that support it (23xx, 24xx).

  • ADGINTEN (in ADC) is now enabled by default since the reset value of the register is 1.

  • The load button is now enabled when the application starts.

Visit

http://alexan.edaboard.eu/

Best regards

Alex

ARMwizard updated to version 2.0

What is new

• Added support for LPC17xx chips, includes LPC1763/64/65/66/67/68/69 mcu profiles

• Added pin setting for open drain and repeater mode for LPC17xx

• Added GPIO interrupt trigger edge selector to enable interrupts for selected GPIO pins

• CLKDIV register of A/D can also be set by target sample rate ( in addition to A/D frequency)

• When Timer2 & Timer3 is used the PCONP enable bit is set to enable the timer operation

Visit

http://alexan.edaboard.eu/

Best regards

Alex

ARMwizard updated to version 2.0.1

What is new

• Added support for LPC1751/52/54/56/58/59

Visit

http://alexan.edaboard.eu/

I had to release v2.0.1 one day after v2.0 because I have added the LPC175x chips and I had to make a few changes in the application to work correctly with them (no capture registers are available in timer 2 and 3 in these chips).

A download of only the profiles wasn’t an option, sorry for the inconvenience.

Best regards

Alex

ARMwizard updated to version 2.0.2

What is new

• Removed: __irq prefix from LPC17xx functions [Phil Young LPC2000 forum]

• Added: The missing exception interrupts for LPC17xx

• Added: Bit masking for reserved bits of PCONP, SCS, INTWAKE registers

• Added: Support for LPC177x/8x having the IOCON register (LPC1774/ 76/ 77/ 78/ 85/ 86/ 87/ 88)

• Added: In quick selector if a pin of a function group is set then the group is also shown with a checkbox

• Fixed: when the external match checkbox were enabled in timers the match control register stop and reset bits were disabled.

• Fixed: The motor PWM input pins were shown in the SD/MMC section of quick selector

• Fixed: a few pins functions in LPC2470/78 were not commented

Visit

http://alexan.edaboard.eu/

Best regards

Alex

Hello, i have a question.

Do you think it is possible to add the SAM7S and SAM7X series from atmel as well in the near future ?

I am still attempting to make my free ARM IDE. I am still busy with it and creating standard functions and manuals.

I would love to add a link to your software as well.

Right now the support for various chips is limited in W-ARM. When i have reached my initial goals, i am planning to partially rewrite the W-ARM manager that it will instead of having the supported processors hard coded in the source, i want to make (or just read an existing ?) special MCU file where the name and the specifics of each MCU is present. Then the W-ARM manager reads the file at startup and can use this information to present visual options and to create the make file and the linker file used to control GCC.

I am going to update the screenshots on this link within the hour from moment of posting.

Here is link to present pictures

http://forums.anandtech.com/showpost.ph … stcount=38

And here is the general thread.

http://forums.anandtech.com/showthread.php?t=2084007

William_Gaatjes:
Hello, i have a question.

Do you think it is possible to add the SAM7S and SAM7X series from atmel as well in the near future ?

I’m afraid not, it is already hard for me to support the NXP chips but at least the chips are similar in many peripherals functions and register names.

To implement mcu from other manufacturers would take too much time for me and would require a redesign in many areas of the application.

Thank you for your comments

Alex

Have you guys seen this http://www.arm.com/products/processors/ … /index.php

ARMwizard updated to version 2.0.3

There were a couple of bugs that had to be fixed and I didn’t want to wait until the next version because they were limiting the functionality of the application, basically they affect the LPC17xx.

What is new

v2.0.3

• Fixed: the Pclock couldn’t be set over 100MHz in LPC17xx ADC, now the limit is 200MHz [Johann Zimmermann]

• Fixed: in LPC17xx the Pclock divider is now common and can be set to 1/1 - 1/31

Visit

http://alexan.edaboard.eu/

Best regards

Alex

rmteo1:
Have you guys seen this http://www.arm.com/products/processors/ … /index.php

[attachment=0]TEST-6F.jpg[/attachment]

I am aware that in the future the SAM7S series will be phased out of production. To be honest, i doubt the license for the mcu manufacturers to obtain the right to use an ARMv4T (ARM7) core is withdrawn by ARM. ARM just promotes the ARMV7 THUMB2 (CORTEX M3) core because it has advantages over ARMv4T.

The SAM3S is the replacement with a lot of key advantages. The same pinout as current SAM7S models. The same peripheral hardware with possible removed errate bugs present in current SAM7S hardware(Only minor issues that can be circumvented) . Only the core is different from the SAM3S. It is a CORTEX M3 as well with integrated interrupt hardware. Works very well. I am very fond of the ARM instructionset.

Great tool Alex, I’m just getting into LPCs and I’m sure it will prove useful.

I found it when searching for a tool to help me select and allocate pins for a PCB design. With 208 to choose from most of which have 3-4 options it’s a nightmare.

I’d love a tool that let’s say I decide to use U1_RXD it at least shows me the pins that I can use but also maybe allows me to select one of them and highlight that I’ve already used that pins for T1_MAT0 or whatever.

Even better, give it a list of required functions and have it present a suggested pin list.

Any chance you could add that over the weekend :slight_smile:

I don’t suppose such a thing exists, I did see something similar the other day but it was commercial product and didn’t support LPC chips anyway.

BTW, your web site has some strange behavior with Safari, the links highlight when the mouse is about 20mm about them, by chance that seems to be the height of the top frame so I suspect someone is using a frame pos rather than a screen pos or vv.


Rob

Actually the application already does what you describe at least the first part (and not the pin sugestion)

If you click the quick selector button you will see that any enabled pin functions are shown with a checkbox so this serves as a quick review of the enabled pin functions.

Also in the function lists shown in the same menu you can see the pin number of each function inside the so when the same function exists in more than one pins you can see it there and select the one you want.

In addition if you click the function it will be automatically focused in the pin treeview in order to help you enable it quickly.

Alex

Thanks Alex, yes I see that now. I’ll have a play and see how it goes, it’s certainly a lot better that what I’ve been doing.

With these complex chips I can’t believe the manufacturers don’t provide a tool like this.

One request, can you make the app window sizable?


Rob