LPC2000 Flash memory and its programming

All-flash memory of LPC2000series microcontrollers is arranged as two interleaved banks. But user sees it as one memory space. All-flash memory appears to the user as series of 8K sectors. These sectors can be written and erased individually. There are several methods of how flash memory of ARM can be programmed. One and easiest way is to use a built-in bootloader. The code is downloaded by bootloader via USART0 to RAM, and then it is programmed to Flash. There is a tool for this – Philips ISP Utility that works under Windows environment. Another method is to use JTAG to program flash memory. This method is usually used from debugging environment. JTAG is faster than ISP – reaches up to 400kB/s. The third method is the ability to reprogram Flash memory sectors using application commands that are on-chip. This feature is handy for updating code in a given section. This is so-called Field Updating.

Continue reading

Eagle CAD PCB footprints for audio processors TDA7313 and TDA7315

TDA7313 and TDA7315 are digital controlled audio processors used in applications where digital control of audio is needed. TDA7313 and TDA7315 are pretty the same just TDA7313 is more complex by having 3 stereo input channels and two outputs (front and rare). Both chips have volume control (step=1.25dB), tone (bass and treble) balance, independent faders for each output processor. Also, there is loudness functionality. TDA7313 and TDA7315 have low distortion and low noise, making them ideal for quality audio applications for car audio and Hi-FI systems. MCU can control both chips via the I2C(TWI) protocol. This makes it easy to interface microcontrollers with additional features like LCD, buttons. Or control directly from PC using RS232 or another interface. Both chips can be found in DIP or SO packages. Here are Eagle libraries of both digital audio processors that I have made. tda7315.zip(2kB) tda7313.zip(2kB) I have intent to make a control board with TDA7315 with LCD and button control using an Atmega8 microcontroller.

Continue reading

Calculating of electrical heating elements

Electrical heating elements are often used for teapots, irons, electric ovens, soldering irons, etc. When projecting designs with electric heating elements, you need to do some calculations that may seem difficult at first glance. But when looking more deeply, this becomes a simple task. We know that electric heating is a result of the current flow in wire with some resistance. The resulting heat is work done by electric current. Work A(J) can be calculated by the formula:

Continue reading

Calculating wire diameter for maximum current

When selecting wire diameter, we usually look for cross-reference tables to find the recommended wire diameter for the maximum current drive. But sometimes maybe more useful to calculate by formula than look into the tables. This way, you can have more accurate results. There is nothing new, just simple physics. Wire resistance (Ω)is calculated as follows:

Continue reading

Electric circuits analogy to water pipes

Sometimes calculating some objects’ parameters and behavior may be much easier when using analogy to objects with well-developed theory and calculation methodology. In an earlier article, we analyzed power dissipation of electronic devices using Ohms law where Voltage=temperature, Current=Dissipation, and Resistance=Thermal resistance. This time let’s look at how electronic devices can be transformed into water pipes and vice versa. Let’s take the Voltage source. A simple battery is like a water pump which provides Pressure (a voltage analogy): The second electronic element is a resistor. Resistors can be imagined as water pipes with a smaller aperture. The higher resistance is – the smaller aperture of the pipe:

Continue reading

Thermal analysis of semiconductor devices-when do you need heat-sinks

Every electronics constructor and engineer knows that electronic devices like IC’s voltage regulators and CPU heat up. Temperature is a critical parameter for reliable system operation. System reliability is very closely related to devise temperature high or low. While temperature increases, the reliability drops exponentially. If you look in device datasheets, you will find a recommended Operating temperature range. For instance, the Voltage regulator 7805 can normally operate at 0 – 70°C temperature range when maximum Junction Temperature can reach 150°C. So how is the operating temperature range calculated? It is not as difficult as it may look like. We know that temperature is analogous to voltage, thermal resistance changed to electric resistance, power dissipation is as current, then:

Continue reading

PCB construction methods for embedded controllers

The most common method is of constructing embedded controller systems is a Printed Circuit Board (PCB). All electronics know that simple PCB is constructed of insulating material like epoxy impregnated glass cloth with a thin copper sheet(s) on one or both sides. There are many conflicts about requirements on how to design interconnection patterns of PCB. But the main purpose for all is to make PCB reliable, effective and producible. If the circuit operates at a low speed, requirements are not as strict as for high-frequency devices where the parasitic effect cannot be ignored. Each PCB stray has its own resistance, capacitance, and inductance. These are the main effect that distorts the signals.

Continue reading

LPC2000 MCU memory acceleration module

We know that the ARM MCU core can run at a speed line 60Mhz or even more than 100Mhz. But usually, the ARM program is located in Flash memory. But flash memory execution speed can reach only up to20MHz. Practically speaking, Flash memory is 3 – 4 times slower than ARM core speed can run. Of course, one of the workarounds could be loading critical program parts to RAM, but RAM is a limited resource – we cannot locate all programs to RAM as needed for data storing and so on. So second option is to have on-chip cash memory, which stands between CPU and memory. Well, LPC2000 and other ARM7 family has reduced cache module so-called Memory acceleration module (MAM). Without going too deep on how MAM works, I can say that acceleration basically works by loading four ARM instructions simultaneously from Flash (Eight THUMB instructions). If an ARM is running at a speed of 60MHz, then there would be 3 access cycles to flash needed. MAM loads these instructions at one cycle. Usually, the MAM module is disabled after MCU reset. There can be three working modes of memory Acceleration Module:

Continue reading

ARM MCU Memory Map

Arm microcontrollers have linear memory organization. Starting from 0x00000000 address to 0x40000000 is Internal Flash memory location. From 0x40000000 to 0x7FFFFFFF is on-chip RAM memory space. As we know many ARM families like LPC2000 series MCU is preprogrammed with flash boot-loader and ARM real monitor debug, so both are placed at location starting from 0x7FFFFFFF to 0x80000000 memory location. Address space from 0x80000000 to 0xE0000000 is reserved for external memory.

Continue reading

Schmitt trigger VS simple inverter

Schmitt trigger is a special logical element adjusted to work with analog input signals. The primary purpose of Schmitt triggers was to restore the shape of digital signals. Because of the transmission line effect, digital shape transforms from square to trapezoid or triangle or more complex signal. Of course, during transmission, signals become noisy and distorted. Schmitt trigger is a comparator circuit, but positive feedback results in hysteresis and memory effect. Comparing to simple logical elements, Schmitt triggers have two threshold levels. Between these threshold values U1 and U2, the state of output doesn’t change the so-called hysteresis. Such an effect stabilizes output against rapid triggering by noise. Bellow is two characteristics compared of simple logical inverter and Schmitt trigger inverter:

Continue reading