STM32 Internals

STM32 micros as we know are high-end micros and this high-end tag is not only due to its memory, speed and hardware richness. An advanced micro like this also needs advanced internal supporting hardware. Most of us know about watchdog timers from previous experiences with common 8 bit MCUs like AVR and PIC. However when it comes to STM32 the idea of watchdog circuitry is elaborated. The options available for clock are also enhanced in the STM32 micros. In this post, we will see some of these supporting internal hardware. We will examine the use and operation of two different watchdog timers – Independent Watchdog (IWDG) and Window Watchdog (WWDG), and the clock options usually found in common STM32 micros.

Clock Options

In a robust microcontroller like the STM32 there are several options for clock. At first the whole stuff may look a bit complex. Indeed it is complicated but not too difficult to understand. The simplified block diagram below shows the common clock arrangement inside a STM32F103 series MCU.

Clock Hardware

Read more

Turn-taking logger

Conversation analysis (CA) is a disciplined approach of studying natural conversations to understand how participants interact and respond in their turns at talk. The input data for CA is derived from audio or video recording of naturally occurring talk. Turn-taking is considered to be the basic unit of speech in CA. Rachel Yalisove has posted a new instructable about her turn-taking logger, an Arduino-controlled device to monitor and record  turn-takings in a 2-person conversation. The project uses two electret microphone modules with on-board amplifiers to sense the audio levels of the two persons participating in the conversation. The two microphone outputs are continuously monitored through two ADC channels of the Arduino board, which then differentiate between the speaker and hearer by comparing the two outputs. The length of each turn is computed using a timer routine. The turn-taking logger writes out these measurements in a text file on an SD card. A push switch is used in the project to control record and stop operation, while two LEDs are used to give a visual indication of who is talking at any particular moment.

A very simple turn-taking logger for CA

A very simple turn-taking logger for CA

Arduino-controlled self-balancing dicycle

XenonJohn’s has made this two-wheeled self-balancing scooter, which is Arduino-controlled and uses the ADXL345 accelerometer and the ITG-3200 MEMS gyro together to form an Inertial Measurement Unit (IMU). The Arduino MEGA board analyses the outputs from the IMU and signals the Sabertooth dual 25A motor driver (which in turn drives two 24V brushed gear motors) to maintain the balance while you are riding. A 4×20 character LCD provides you status updates during the ride. The motors are powered with a 24V battery, while the control circuit including the Arduino receives the power from six AA batteries.

Arduino-controlled dicycle

Arduino-controlled dicycle


Programmable lithium battery charger shield

Electro-Labs has posted a new project about making a programmable lithium battery charger shield for Arduino. The shield schematic and printed circuit board are designed using the SoloPCB tools, a Windows-based PCB designing tool from FabStream. The charger shield consists of a Nokia 5110 LCD and four tact switches for user interface, which allows users to program the charging voltage and current. Their design also features the ability to monitor the battery status before and during charge.

The circuit is based on LT1510 Constant Current/Constant Voltage Battery charger IC from Linear Technology. LT1510 uses the PCB ground plane as heat sink during operation. The four tact switches allows user to navigate through various features, which include setting the battery cut-off voltage and the maximum charge current, check the battery status, start and stop charging, etc. The charger stores the last set charging thresholds into Arduino’s internal EEPROM, so that at next startup the user don’t have to enter these values again. This lithium battery charger uses Arduino analog input pins A0 and A1 to sense the battery voltage and the charge current, respectively.

DIY Lithium battery charger shield

DIY Lithium battery charger shield

LPC1114 controlled Midi Synthesizer

Matt Sarnoff built this digital monophonic synthesizer using the NXP LPC1114FN28 ARM Cortex-M0 microcontroller and MCP4921 SPI DAC. It is a midi synthesizer with following features:

  • 4 oscillators; sawtooth or pulse with adjustable duty cycle with coarse and fine tuning
  • 2-pole (“Chamberlin”) state-variable filter with lowpass, highpass, and bandpass modes
  • Attack-release envelopes for amplitude and modulation
  • Low-frequency oscillator with four shapes (triangle, ramp, square, random)
  • LFO and/or modulation envelope can affect filter cutoff frequency, pitch, and pulse width
  • Keyboard tracking for filter cutoff frequency
  • Glide with 3 different rate presets
  • MIDI input; monophonic with last-note priority
  • 250kHz, 12-bit output
  • Powered by 3 AA batteries
ARM-powered midi synthesizer

ARM-powered midi synthesizer

« Older Entries