Skip to Content

Audio SPI Digital Voice Recorder ISD3900 - Mikroe Rec&Play Click

The Rec&Play Click is a compact audio recording and playback expansion board from MikroElektronika, designed for embedded applications that require high-quality voice recording, audio playback, and sound notifications. Built around the Nuvoton ISD3900 ChipCorder® audio processor and paired with a 64Mbit Winbond W25Q64 SPI Flash memory, the board can store up to 32 minutes of compressed audio. The module includes an onboard electret microphone, a miniature 0.7W speaker, line-in and line-out audio connectors, external speaker support, and SPI communication through the mikroBUS™ interface. All audio compression, playback, recording, and memory management are handled internally by the ISD3900, greatly reducing the processing load on the host microcontroller.

Package Includes

  • 1 × MikroE Rec&Play Click Board
ISD3900 digital voice recorder
657.00 AED 657.00 AED (Tax included)

Terms and Conditions
30-day money-back guarantee
Shipping: 2-3 Business Days

Features

  • Based on the Nuvoton ISD3900 digital voice recording and playback IC.
  • Built-in ChipCorder® technology with digital audio compression.
  • Stores up to approximately 32 minutes of audio.
  • Integrated omnidirectional electret microphone.
  • Integrated 8Ω miniature 0.7W neodymium speaker.
  • Supports external passive speaker connection.
  • 3.5mm AUX input for external audio recording.
  • 3.5mm AUX output for amplified speakers or headphones.
  • Programmable audio signal path with multiple recording modes.
  • SPI communication interface.
  • Onboard 64Mbit Winbond W25Q64 serial Flash memory.
  • Supports message indexing instead of fixed memory addresses.
  • Voice Macro support for automated playback sequences.
  • Compatible with mikroBUS™ development boards.
  • mikroSDK software library available.

Principle of Operation

The Rec&Play Click is built around the ISD3900 ChipCorder®, a dedicated digital audio processor that performs recording, compression, storage management, and playback without requiring significant processing resources from the host MCU.

Audio can be captured from the onboard microphone or through the AUX input connector. The ISD3900 digitizes and compresses the audio before storing it in the onboard 64Mbit SPI Flash memory. During playback, the stored audio is decompressed internally and sent either to the onboard speaker, an external speaker, or the line output.

Communication with the host controller is performed through the SPI interface, allowing the application to record, erase, search, and play indexed audio messages while the onboard processor handles all audio processing tasks.

Applications

  • Voice recording systems
  • Voice prompts and announcements
  • Talking consumer products
  • POS terminals
  • Home appliances
  • Industrial control systems
  • Interactive toys
  • Smart kiosks
  • Embedded audio projects
  • Educational electronics

Pinout

Click Boards Audio and Voice Rec an Play Click

mikroBUS Pin Function
AN RDY (SPI Ready Status)
RST Hardware Reset
CS SPI Chip Select
SCK SPI Clock
MISO SPI Data Output
MOSI SPI Data Input
INT Interrupt Output
3.3V Power Supply
GND Ground

Wiring

The Rec&Play Click is designed to plug directly into any mikroBUS™ socket, where all required power and SPI signals are connected automatically.

For custom hardware or prototype boards, the required connections are:

Rec&Play Click Connection
3.3V 3.3V Supply
GND Ground
CS SPI Chip Select
SCK SPI Clock
MISO SPI MISO
MOSI SPI MOSI
RST GPIO (Optional)
INT GPIO Interrupt (Optional)
AN (RDY) GPIO Input (Optional)

Note: The board operates exclusively at 3.3V logic levels. When interfacing with 5V microcontrollers such as the Arduino Uno, appropriate bidirectional logic-level shifting is recommended for reliable operation.

Specifications

Product Type Audio Recording & Playback Click Board
Main IC Nuvoton ISD3900
Audio Technology ChipCorder® Digital Audio
Flash Memory 64Mbit Winbond W25Q64
Maximum Recording Time Up to 32 minutes
Communication Interface SPI
Operating Voltage 3.3V
Microphone Onboard Electret Microphone
Speaker 8Ω 0.7W Miniature Speaker
External Speaker Supported
Audio Input 3.5mm AUX Input
Audio Output 3.5mm AUX Output
Audio Sample Rate Up to 32kHz
Crystal Frequency 4.096MHz
Board Size 57.15 × 25.4 mm (Click Board L)
Compatibility mikroBUS™

Library Needed

  • mikroSDK Rec&Play Click LibStock 
  • SPI Library (included with supported MCU platforms)

Simple Code

// mikroSDK example (pseudo code)
recplay_init();
recplay_recordMsg(); // Start recording
Delay_ms(5000);
recplay_stop(); // Stop recording
Delay_ms(1000);
recplay_playMsg(0,0); // Play first recorded message

The REC&PLAY Click application is divided into three main sections: System Initialization, Application Initialization, and Application Task. Each section prepares and controls the ISD3900 voice recording chip to perform recording, playback, and memory operations.

1. System Initialization

This section prepares the microcontroller hardware and communication interface required to operate the REC&PLAY Click.

  • Initializes required GPIO pins.
  • Configures the SPI interface used to communicate with the ISD3900.
  • Configures control signals such as Chip Select, Reset, and Interrupt pins.
  • Prepares the system for communication with the voice recording module.

2. Application Initialization

This section configures the ISD3900 chip and places it into a proper operating state.

  • Resets the ISD3900 chip.
  • Powers up the internal circuits.
  • Erases previous audio data from memory.
  • Configures the required clock settings.
  • Initializes SPI communication parameters.

After this stage, the REC&PLAY Click is ready for recording and playback operations.

3. Application Task

The main application performs the complete recording and playback sequence. The process is repeated every 10 seconds.

  1. Recording Configuration:
    The ISD3900 is configured for microphone recording mode before each recording operation.
  2. Audio Recording:
    The chip records an 8-second audio message and stores it in the Flash memory at a specified address.
  3. Message Information:
    The recorded message address and length are read from memory.
  4. Playback Configuration:
    The ISD3900 is reconfigured for playback mode with the required audio output settings.
  5. Audio Playback:
    The recorded message is played through the audio output.
  6. Message Erasing:
    After playback is completed, the recorded message is erased from memory to prepare for a new recording.

Operation Flow

Initialize System
        ↓
Initialize ISD3900
        ↓
Configure Recording Mode
        ↓
Record Audio Message (8 seconds)
        ↓
Read Message Information
        ↓
Configure Playback Mode
        ↓
Play Recorded Message
        ↓
Erase Message
        ↓
Repeat After 10 Seconds

Important Note

The ISD3900 requires a specific configuration for each operation mode. The chip must be configured for recording mode whenever a new message is recorded, and it must be configured again for playback mode whenever a stored message is played.

void applicationTask()
{
    mikrobus_logWrite( "Preparing to record a message...", _LOG_LINE );
    for (i = 0; i < 32; i++)
    {
        if ((i != _RECPLAY_CFG0A_REG) && (i != _RECPLAY_CFG1C_REG) && (i != _RECPLAY_CFG1E_REG))
        {
            waitReady();
            tempVar = configRecMic[ i ];
            statusByte = recplay_writeCnfgReg( i, &tempVar, 1 );
        }
    }
    waitReady();
    Delay_ms( 2000 );

    mikrobus_logWrite( "Message Recording", _LOG_TEXT );
    statusByte = recplay_recordMsgAddr( 0x12000 );
    timeRecord( 8 );
    statusByte = recplay_stop();
    waitCmdFin();
    mikrobus_logWrite( "End of recording", _LOG_LINE );
    
    mikrobus_logWrite( "---------------------------------------", _LOG_LINE );
    statusByte = recplay_readMsgAddr( &messageAddr, &messageLength );
    LongWordToHex( messageAddr, text );
    mikrobus_logWrite( "Message Address: 0x", _LOG_TEXT );
    mikrobus_logWrite( text, _LOG_LINE );
    WordToStr( messageLength, text );
    mikrobus_logWrite( "Message Length: ", _LOG_TEXT );
    mikrobus_logWrite( text, _LOG_LINE );
    mikrobus_logWrite( "---------------------------------------", _LOG_LINE );
    Delay_ms( 1000 );

    mikrobus_logWrite( "Preparing to play a message...", _LOG_LINE );
    setVolume( 100 );
    for (i = 0; i < 32; i++)
    {
        if ((i != _RECPLAY_CFG0A_REG) && (i != _RECPLAY_CFG1C_REG) && (i != _RECPLAY_CFG1E_REG))
        {
            waitReady();
            if (i == _RECPLAY_CFG03_REG)
            {
                tempVar = volume;
            }
            else
            {
                tempVar = configPlayPwmSpk[ i ];
            }
            statusByte = recplay_writeCnfgReg( i, &tempVar, 1 );
        }
    }
    waitReady();
    Delay_ms( 2000 );

    mikrobus_logWrite( "Message is playing...", _LOG_LINE );
    statusByte = recplay_playMsg( 0x12000, 0 );
    waitCmdFin();
    mikrobus_logWrite( "End of playing", _LOG_LINE );
    
    mikrobus_logWrite( "---------------------------------------", _LOG_LINE );
    ByteToHex( statusByte, text );
    mikrobus_logWrite( "Status Byte: 0x", _LOG_TEXT );
    mikrobus_logWrite( text, _LOG_LINE );
    ByteToHex( interrByte, text );
    mikrobus_logWrite( "Interrupt Byte: 0x", _LOG_TEXT );
    mikrobus_logWrite( text, _LOG_LINE );
    mikrobus_logWrite( "---------------------------------------", _LOG_LINE );
    Delay_ms( 1000 );
    
    mikrobus_logWrite( "Message Erasing...", _LOG_LINE );
    statusByte = recplay_eraseMsg( 0x12000 );
    waitCmdFin();
    mikrobus_logWrite( "End of erasing", _LOG_LINE );
    
    mikrobus_logWrite( "***************************************", _LOG_LINE );
    mikrobus_logWrite( "", _LOG_LINE );
    Delay_ms( 10000 );
}


Resources

Downloads