We have been working with the well known Stellaris Launch Pad, now known as the Tiva C Launch Pad. This was a quite transition however we found some subtle differences with the microcontrollers.
Stellaris Launch pad:
- Used the LM4F120H5QR Microcontroller which is now renamed as TM4C1233H6PM.
- Original name for this Launch Pad: EK-LM4F120XL
- Still available at TI e-Store link.
- Important thing to note is the chips in initial version of the Stellaris Launch Pads were Engineering Sample versions so the chip name became LX4F120H5QR - Not very reliable !!
- TI has released an official migration guide for Stellaris to Tiva C -This guide also contains the part number mapping for the new Tiva C Series
- Also the support software for the Stellaris ware has been now changed to Tiva Ware - Important changes include the naming convention and C99 standard types
Summary of Links:
- Stellaris Launch Pad - http://www.ti.com/tool/ek-lm4f120xl
- Stellaris Launch Pad Microcontroller LM4F120H5QR => TM4C1233H6PM - http://www.ti.com/product/TM4C1233H6PM
- Stellaris Launch Pad Support Software Library - http://www.ti.com/tool/sw-ek-lm4f120xl
- Stellaris Launch Pad Getting Started Guide : http://processors.wiki.ti.com/index.php/Getting_Started_with_the_Stellaris_EK-LM4F120XL_LaunchPad_Workshop
- Tiva C Launch Pad - http://www.ti.com/tool/ek-tm4c123gxl
- Tiva C Launch Pad Microcontroller TM4C123GH6PM - http://www.ti.com/product/TM4C123GH6PM
- Tiva C Launch Pad Support Software Library - http://www.ti.com/tool/sw-ek-tm4c123gxl
- Tiva C Launch Pad Getting Started Guide: http://processors.wiki.ti.com/index.php/Getting_Started_with_the_TIVA%E2%84%A2_C-Series_TM4C123G_LaunchPad
- Stellaris Serial Flash Loader: http://www.ti.com/tool/serial_flash_loader
- Stellaris Old FTDI JTAG adapter driver: http://www.ti.com/tool/lm_ftdi_driver
- Stellaris ICDI Driver (Tiva C too) : http://www.ti.com/tool/stellaris_icdi_drivers
- Tiva C and Stellaris Flash Programmer: http://www.ti.com/tool/lmflashprogrammer
- Pin Mux Utility: http://www.ti.com/tool/tm4c_pinmux
Hope that this list would be helpful. Let us know your comments on this.
We had some initial troubles in getting around with the Unity Interface of Ubuntu. One of the common problems was in creating short cuts for the UI.
We got some info from this source in Ubuntu Forum while searching.
Here is the explanation and step-by-step procedure:
1. Open your favorite editor with an "ApplicationName.desktop" file
We use 'gedit' so we give the command:
The 'ApplicationName' field here needs to be replaced with your desired application's name.
2. Now write the following into the file:
Here the following Fields are required:
4. To install the icon to the Dash-Home of the Ubuntu Unity give the following command in a terminal window:
Now your icon would be available on the Dash-Home.
Next if you need this to be on the Unity Bar - just run the program and right click to 'Lock to Launcher'.
Hope that this was helpful, let us know your feedback.
We got some info from this source in Ubuntu Forum while searching.
Here is the explanation and step-by-step procedure:
1. Open your favorite editor with an "ApplicationName.desktop" file
We use 'gedit' so we give the command:
gedit ApplicationName.desktop2. Now write the following into the file:
[Desktop Entry] Name=ApplicationName Comment=Comment_To_Be_Displayed_when_Mouse_Hover Exec=/path/to/executable TryExec=/path/to/executable Icon=/path/to/application_icon_file StartupNotify=false Terminal=false Type=Application Categories=Main_Category_of_Application; Sub_Category_of_Application
Here the following Fields are required:
- ApplicationName - This is the name that you have earlier given to your desktop icon
- Comment_To_Be_Displayed_when_Mouse_Hover - This is a comment that would be displayed both on the Ubuntu Unity panel as well as if placed on the Desktop
- /path/to/executable - This is actual path to the install directory of the application that you wish to create the short cut for
- /path/to/application_icon_file - This is the application icon file that can be a .ico or a picture file with 48x48 max pixel dimension.
- Main_Category_of_Application - This is an optional parameter, it can be any of the standard application categories that you find in the Ubuntu Software Center - Accessories, Education, Games, Graphics, Network, Office, Development, System .etc.
- Sub_Category_of_Application - This is sub category under main category - for more info refer to this page: https://wiki.ubuntu.com/SoftwareCenter#Genre
4. To install the icon to the Dash-Home of the Ubuntu Unity give the following command in a terminal window:
xdg-desktop-menu install --novendor /path/to/ApplicationName.desktopNext if you need this to be on the Unity Bar - just run the program and right click to 'Lock to Launcher'.
Hope that this was helpful, let us know your feedback.
It might be surprising but yes we wish to provide a simple guide to perform 8051 development under Linux. For many 8051 might be history but its still relevant for starters.
The amount of study material already available along with a base of example and help available on topics related to this microcontroller architecture makes it a easy choice. Although the same is true for AVR,PIC or the grand ARM, but the simplicity of this controller cant be compared with any one of them. In fact we had this microcontroller is several of our projects and endeavours in the past decade. So we decided to pay our tributes to this grand old microcontroller with the help of this article on how to start and effectively perform development on this controller under linux.
The amount of study material already available along with a base of example and help available on topics related to this microcontroller architecture makes it a easy choice. Although the same is true for AVR,PIC or the grand ARM, but the simplicity of this controller cant be compared with any one of them. In fact we had this microcontroller is several of our projects and endeavours in the past decade. So we decided to pay our tributes to this grand old microcontroller with the help of this article on how to start and effectively perform development on this controller under linux.
One of our friends recently too up a project of building a CNC router. The idea was to make a Open source router framework that can be used for 3D printer, Cutters, painters etc.
However he had surplus motors so he wishes to see off the excess motors at reasonable rates. He requested us to put this up so that people can buy these motors, and here we are with the post for the same.
Specifications of this NEMA 17 Bipolar 4wire Stepper motor:
You can contact him through this form and he would be happy to help you out with any details you may need.
![]() |
| NEMA 17 Bipolar 4-wire Stepper Motor |
Specifications of this NEMA 17 Bipolar 4wire Stepper motor:
- Motor Properties:
- Motor Type: Bipolar Stepper (2 Coils)
- Step Angle: 1.8 degree
- Step Accuracy: 5%
- Holding Torque: 4.0 Kg cm @ 1.7A
- Rated Torque: 3.4 Kg cm @ 1 A
- Electrical Characteristics:
- Motor Coils: 2 Coils
- Rated Current: 1.7A
- Recommended Voltage: 12V (Full Stepping), 9V (Micro-stepping)
- Coil Resistance: 2 Ohm
- Physical Properties:
- Mounting Plate: NEMA 17
- Motor Length: 40mm
- Shaft Length: 24mm
- Shaft Diameter: 5mm
![]() |
| Mechanical Dimensions |
![]() |
| Coils and Colors |
We have been searching for a consistent source to obtain a stable releases of AVR tools on Linux. Here is what we came across recently.
This is Atmel's Official link supporting the Linux Tool chain for AVR-8 and AVR32 architectures:
http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORLINUX.aspx
However the support of AVR32 AP7000 has been removed only thing that remains is the Build Root for AVR32 AP7000: http://www.atmel.no/buildroot/
This is Atmel's Official link supporting the Linux Tool chain for AVR-8 and AVR32 architectures:
http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORLINUX.aspx
However the support of AVR32 AP7000 has been removed only thing that remains is the Build Root for AVR32 AP7000: http://www.atmel.no/buildroot/
We wondered if the Linux prompt can be more snazzier that we have it by default dull type.
To something more interesting:
This magic is using the 'PS1' environment variable in Linux.
Here is the command that does this magic:
There are 3 parts to this magic:
Inspired by the Archlinux wiki: https://wiki.archlinux.org/index.php/Color_Bash_Prompt
To something more interesting:
This magic is using the 'PS1' environment variable in Linux.
Here is the command that does this magic:
PS1="\n\[\033[1;37m\]\342\224\214($(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;34m\]\u@\h'; fi)\[\033[1;37m\])\342\224\200(\[\033[1;34m\]\$?\[\033[1;37m\])\342\224\200(\[\033[1;34m\]\@ \d\[\033[1;37m\])\[\033[1;37m\]\342\224\200(\[\033[1;32m\]\w\[\033[1;37m\])\342\224\200(\[\033[1;32m\]\$(ls -1 | wc -l | sed 's: ::g') files, \$(ls -lah | grep -m 1 total | sed 's/total //')b\[\033[1;37m\])\n\342\224\224\342\206\222> \[\033[0m\]"There are 3 parts to this magic:
- Usage of Special Unicode characters:
Looking at the beginning of the line you might have noticed the char '┌' which is U+0x250C. This is a UNICODE character to make top left border. In order to find the right string to code the PS1 variable you would need to the octal codes for the special char. To get that we have these commands:- If you know the code of the char:
echo -e "\u250C" | hexdump -v -e '/1 "%03o "' | awk '{print "\\" $1 "\\" $2 "\\" $3 }'
This is for the top left border char that we are talking here. It would print:\342\224\214
This is the code you can now use in the PS1 variable definition. - In case you know the char it self then:
echo┌ | hexdump -v -e '/1 "%03o "' | awk '{print "\\" $1 "\\" $2 "\\" $3 }'
This gives you the codes again in the same manner as the earlier one.
In order to get further info you can visit the following links:
http://www.unicode.org/charts/ - Here you get all the charts for Unicode characters
https://wiki.archlinux.org/index.php/Color_Bash_Prompt - If you know the code of the char:
- Special formatting for the normal user and the root user:
The piece of the variable that does this job is -($(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;34m\]\u@\h'; fi)
This would ensure that if the user is root the only the host is printed else the user name @ host is printed. - Finding the Number of Files and the total size:
This part is done in two folds -
First part is the number of files that exist in the current working directory:\$(ls -1 | wc -l | sed 's: ::g') files,
The next part is the total size of all files under the directory(no including sub-directory sizes):\$(ls -lah | grep -m 1 total | sed 's/total //')b
Inspired by the Archlinux wiki: https://wiki.archlinux.org/index.php/Color_Bash_Prompt
We recently stumbled across a good source of concepts related to physics and nature. This has the simplest URL: http://physics.info/
This is a helpful resource to revisit the concepts and understanding of Physics. We found this resource to be really helpful and hope it would be useful for you too.
This is a helpful resource to revisit the concepts and understanding of Physics. We found this resource to be really helpful and hope it would be useful for you too.
As you may know from our earlier post we have completely shifted our developments to Linux. This post is to describe the process of installing the pyserial package into Linux.
You can visit the pyserial page for locating the documentation: http://pyserial.sourceforge.net/
Here is the step by step process to perform the installation:
[1] Getting the Files
You need to download the pyserial: https://pypi.python.org/packages/source/p/pyserial/pyserial-2.6.tar.gz#md5=cde799970b7c1ce1f7d6e9ceebe64c98
If this download link is not valid then go to: https://pypi.python.org/pypi/pyserial
You might observe that the version that we are downloading is the Python 2.6 supported but do not worry - we have tested this and it works for Python 2.7.
[2] Check if you have python installation in Linux
We are using Ubuntu 12.04 version of Linux so our package updater is 'apt-get'.
In Ubuntu we have python 2.7 available by default. However for some other Linux distros that might not be the case, so try to check for online help regarding installation of python v2.7/v2.6 into your specific Linux distribution.
To test if python is present or not type
[3] Extract and install the pyserial package
The pyserial package is a tar.gz type archive so you need first go to the directory where it has been downloaded in the terminal.
Next give the following set of commands:
[4] Testing the installation
The pyserial package comes with the miniterm.py scripted python program. We would use this to test pyserial installation. We have connected a USB to Serial Pl2303 based converter at
We can use this miniterm tool to connect to the serial terminal at 9600 baud rate.
Give the following command on the terminal prompt:
You would get the following prompt:
This means that the pyserial is successfully installed and ready for use. Hope this article has been helpful. Let us know your suggestions and feedback.
You can visit the pyserial page for locating the documentation: http://pyserial.sourceforge.net/
Here is the step by step process to perform the installation:
[1] Getting the Files
You need to download the pyserial: https://pypi.python.org/packages/source/p/pyserial/pyserial-2.6.tar.gz#md5=cde799970b7c1ce1f7d6e9ceebe64c98
If this download link is not valid then go to: https://pypi.python.org/pypi/pyserial
You might observe that the version that we are downloading is the Python 2.6 supported but do not worry - we have tested this and it works for Python 2.7.
[2] Check if you have python installation in Linux
We are using Ubuntu 12.04 version of Linux so our package updater is 'apt-get'.
In Ubuntu we have python 2.7 available by default. However for some other Linux distros that might not be the case, so try to check for online help regarding installation of python v2.7/v2.6 into your specific Linux distribution.
To test if python is present or not type
python in the terminal window. you would get a prompt like this:Python 2.7.3 (default, Aug 1 2012, 05:16:07) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>Next type -
exit() - this would exit python interpreter and bring you back to the shell prompt
[3] Extract and install the pyserial package
The pyserial package is a tar.gz type archive so you need first go to the directory where it has been downloaded in the terminal.
Next give the following set of commands:
-
Extract the Archive
tar -zxvf pyserial-2.6.tar.gz - Go the pyserial directory
cd pyserial-2.6 - Build the package
python setup.py build - Install the package
sudo python setup.py install
[4] Testing the installation
The pyserial package comes with the miniterm.py scripted python program. We would use this to test pyserial installation. We have connected a USB to Serial Pl2303 based converter at
/dev/ttyUSB0We can use this miniterm tool to connect to the serial terminal at 9600 baud rate.
Give the following command on the terminal prompt:
miniterm.py -p /dev/ttyUSB0 You would get the following prompt:
--- Miniterm on /dev/ttyUSB0: 9600,8,N,1 --- --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
This means that the pyserial is successfully installed and ready for use. Hope this article has been helpful. Let us know your suggestions and feedback.
A friend of ours is working on a commercial project for low cost timing module. He request us for some help regarding designing a Mono-Shot timer. In general the circuit was using a NE555 in mono shot configuration. The problem was that he needed the mono-shot to start at power up and also it should be re-trigger-able with a button. And all this with the minimum set of components.
We have been using Simplicity tool for EFM32 and evaluating on how to make good use of this tool. In that quest we found several tricks and mods around this tool. So we would like to share these useful tips for the benefit of the EFM32 users.
Updated: Bread Board Tips and Tricks: Beginner to Proficient
Saturday, November 24, 2012
Posted by Boseji
We have all used breadboards, or those who plan to jump into the fascinating world of electronics need to know about them. This article focuses on introducing breadboards inside out, to help people use them and prototype their innovations faster. We would walk through Bread board concepts, connecting various chips & devices, efficient prototyping and documenting the designs.
In our last post we came to know about the process of configuring the core clock for EFM32. Basically how to make the Coretx-M3 clock from the External Crystal source HFXO.
Next we would take a detailed look at the Energy modes in the EFM32 microcontroller. Again we are going to use the Keil MDK with GCC and the STK3700 kit.
In the EFM32 Microcontroller the Energy Management Unit(EMU) takes care of the setting the power, reset and clock-gating. Additionally it also takes care of Brownout detection for resetting the MCU if the voltage falls below a specified threshold to prevent spurious code execution. However we would focus more on the Energy modes that govern the operation of the Microcontroller core as well as its peripherals and clocks. This might be a bit confusing that CMU is responsible for clock then why EMU. Yes, the CMU is for conguration of the clocks, clock-gating and dividers, but the oscillator control also has additional parameters that are decided by the EMU. We would cone to clarity on this soon.
Next we would take a detailed look at the Energy modes in the EFM32 microcontroller. Again we are going to use the Keil MDK with GCC and the STK3700 kit.
In the EFM32 Microcontroller the Energy Management Unit(EMU) takes care of the setting the power, reset and clock-gating. Additionally it also takes care of Brownout detection for resetting the MCU if the voltage falls below a specified threshold to prevent spurious code execution. However we would focus more on the Energy modes that govern the operation of the Microcontroller core as well as its peripherals and clocks. This might be a bit confusing that CMU is responsible for clock then why EMU. Yes, the CMU is for conguration of the clocks, clock-gating and dividers, but the oscillator control also has additional parameters that are decided by the EMU. We would cone to clarity on this soon.
We have been doing quite a bit of development on low power Cortex-M3 microcontrollers. There were many nice lessons in low power design that we learned on our way. We would like to share this as a series of articles to helpful for making energy efficient designs.
We are really impressed by the low power features of EFM32 and wish to share a step by step guide in order to finally make a complete system that is more power efficient without compromising on the performance.
One of the key components of a Microcontroller based system is the clock. This would ultimately decide the amount of switching that would take place inside the microcontroller. Finally the performance through put of the Cortex-M3 is again dependent on the clock, although not completely.
Thus the first and most important thing in a low power design would be to design the clocks properly and make sure that unused logic on the microcontroller is "clock-gated" when not in use. The term "clock-gating" means that we would prevent the clock from entering a particular peripheral or bus or even the CPU core when its not being used. The reduction in the spurious clock to unused peripherals would result in significant reduction in power consumption due to reduced switching losses.
We are really impressed by the low power features of EFM32 and wish to share a step by step guide in order to finally make a complete system that is more power efficient without compromising on the performance.
One of the key components of a Microcontroller based system is the clock. This would ultimately decide the amount of switching that would take place inside the microcontroller. Finally the performance through put of the Cortex-M3 is again dependent on the clock, although not completely.
Thus the first and most important thing in a low power design would be to design the clocks properly and make sure that unused logic on the microcontroller is "clock-gated" when not in use. The term "clock-gating" means that we would prevent the clock from entering a particular peripheral or bus or even the CPU core when its not being used. The reduction in the spurious clock to unused peripherals would result in significant reduction in power consumption due to reduced switching losses.
Energy Micro Design contest is on, hurry because last date of submission is October,31st 2012. Although entries would be allowed in the second phase but you would surely not like to miss a free EFM32GG-STK3700, if your entry is selected.
This is the Phase 1 of the contest and in this phase only design ideas need to be entered. Based on the merit of the idea toward "Low Power design using EFM32" the entry would be judged. Then 40 contestants would be chosen to compete in the next round.
Best of Luck to all Aspirants.
This is the Phase 1 of the contest and in this phase only design ideas need to be entered. Based on the merit of the idea toward "Low Power design using EFM32" the entry would be judged. Then 40 contestants would be chosen to compete in the next round.
Best of Luck to all Aspirants.
Using GCC in Keil : Best of Both worlds
Thursday, October 18, 2012
Posted by Boseji
Tag :
Development Kit,
EFM32,
embedded,
Energy Micro,
gcc,
open Source,
ST Microelectronics,
Stellaris,
STM32,
TI,
tutorial
We were evaluating different IDE's for development with our newly acquired STM32 board that we posted about earlier and a new Stellaris Launchpad . The initial example that we covered was completed in Keil environment. Next we wanted to extend beyond the 32KByte limit imposed by Keil so we need to look for alternatives. Although we were quite happy with coocox IDE, we needed some thing with lot more debugging options. Even though the CCS IDE from TI is good but for older PC's like ours its difficult. This lead us to work with Keil, but under the hood GCC would do the heavy lifting.
We would explain the process of compiling for thee different ARM Cortex-M3 architectures and all that you would need to get started on that.
We would explain the process of compiling for thee different ARM Cortex-M3 architectures and all that you would need to get started on that.
- Energy Micro's EFM32 Gecko Microcontroller
- ST Microelectronics STM32 Microcontroller - (Updated)
- TI Stellaris M4 Microcontroller (Stellaris Launchpad) - Coming Soon ...
We were trying to get our new STM32 board working and in the pursuit of that we cane to know some interesting insights that are worth sharing.
This particular board contains the STM32F103VE series chip from ST Microelectronics. This chip is a Cortex-M3 with 72MHz clocking and quite impressive peripheral line up. We did not select this board, rather it was borrowed from one of our close friends. We wanted to evaluate the low power and speed features of this nice Cortex-M3 device.
This particular board contains the STM32F103VE series chip from ST Microelectronics. This chip is a Cortex-M3 with 72MHz clocking and quite impressive peripheral line up. We did not select this board, rather it was borrowed from one of our close friends. We wanted to evaluate the low power and speed features of this nice Cortex-M3 device.
For a long time we wondered how does inductive coupling works. It not until recently that we had a revelations:
This is a very important relationship that shows how magnetic coupling really behaves. Taking it from this result we have the following conclusions:
Φ = v / ω Where, v – AC Voltage applied to the Coil [volt = Joules/Coulomb = kg.m²/(Ampere . second³)] ω – Angular Frequency [radians/second] Φ - Magnetic Flux(Instantaneous) [Weber = Joule . Second / Coulomb = Joule / Ampere = kg.m²/(Ampere . second²)]
This is a very important relationship that shows how magnetic coupling really behaves. Taking it from this result we have the following conclusions:
- As the Angular Frequency decreases (ω = 2.π.freq) Flux increases
- As AC voltage applied increases then Flux increases
- RF-ID Antenna
- Inductive Charging
- NFC
We were busy developing the next version of the Kicad-tools utility when we came across this interesting piece of C Language tangle.
Essentially we wanted to have something like this.
Here the 'a' is1 Byte data and the 'dta' is a bit field made up in an Union.
This is the code snippet of the data structure.
We need to assign this data structure some constant values to hold the configuration bits.
Essentially we wanted to have something like this.
Here the 'a' is1 Byte data and the 'dta' is a bit field made up in an Union.
typedef struct{
BYTE a;
union{
struct{
BYTE b0:1;
BYTE b1:1;
BYTE b2:1;
BYTE b3:1;
BYTE b4:1;
BYTE b5:1;
BYTE b6:1;
BYTE b7:1;
}bits;
BYTE dta;
}combi;
}ctyp;
This is the code snippet of the data structure.
We need to assign this data structure some constant values to hold the configuration bits.
Another Launchpad in the making, you can get yours free.
Register in the website to get a Free Stellaris ARM Corext - M4F Launchpad. Hurry as only 25 would be available for this draw. This board would be available by 25th September 2012.
The initial costing would be $4.30 like the earlier MSP430 Launchpad.
We have made Stellaris ARM Cortex-M4F Launchpad wish List:
Register in the website to get a Free Stellaris ARM Corext - M4F Launchpad. Hurry as only 25 would be available for this draw. This board would be available by 25th September 2012.
The initial costing would be $4.30 like the earlier MSP430 Launchpad.
We have made Stellaris ARM Cortex-M4F Launchpad wish List:
- Same form factor as MSP430 Launchpad
- Free Code Composer Studio like C2000
- JTAG header for external target debugging

















