Rec&Play Click Board
Rec&Play Click Board
The Rec&Play Click Board™ is a digital voice recorder on a Board. It is based on the ISD3900, a multi-message record and playback device. It features the ChipCorder' technology, offering digital sound compression, smart message management, digitally configurable signal path, and more. Several audio inputs and outputs are available to the user. A small omnidirectional electret mic, as well as a miniature 700mW neodymium speaker, are included on the Click Board™, making it a complete playback & recording solution, capable of capturing up to 32 minutes of audio. It also offers numerous connectivity options.
The Rec&Play Click Board™ is supported by a mikroSDK compliant library, which includes functions that simplify software development. This Click Board™ comes as a fully tested product, ready to be used on a system equipped with the mikroBUS socket.
Software Support
We provide a library for the Rec&Play Click on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
Library offers a choice to perform control of the REC&PLAY Click board by sending commands to the ISD3900 via SPI interface. Commands include message recording, recorded message playing, sending or receiving compressed audio data, digital reading and writting, device configuration, device status and interrupt checking... All functions return device status byte, so on that way user can check status of the device and SPI interface after each sent command. For more details check documentation.
Key Functions
T_RECPLAY_RETVAL recplay_recordMsg( void )
- Function initiates a managed record at first available location in memory.T_RECPLAY_RETVAL recplay_playMsg( uint32_t memAddr, uint16_t sectorOffset )
- Function initiates a play of a recorded message starting at a specified address, with a specified sector offset.T_RECPLAY_RETVAL recplay_stop( void )
- Function stops any current audio command.T_RECPLAY_RETVAL recplay_eraseMsg( uint32_t memAddr )
- Function erases the message starting at the specified address.
Example Description
The application is composed of three sections :
- System Initialization - Initializes peripherals and pins.
- Application Initialization - Initializes SPI interface in properly mode and performs all necessary commands to put the device in properly working mode (chip reset, chip power-up, chip erasing, clock configuration).
- Application Task - (code snippet) - Performs the chip configuration for recording message via a microphone, then records a message for 8 seconds to specified memory location. After that reads the recorded message address with message length and then plays a recorded message. When playback is done erases a recorded message from memory. Repeats all operation every 10 seconds. Note: The ISD3900 must be properly configured to work in record mode every time when user wants to record a message. When a user wants to play a recorded message, then ISD3900 must be properly configured, but now to work in play mode.
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 ); }
Additional Functions :
void waitCmdFin(
- Waits until current command has properly finished.void waitReady()
- Waits until SPI interface was ready for new command.void waitPowerUp()
- Waits until ISD3900 has powered up.void timeRecord( uint32_t secondsTime )
- Performs the desired time in seconds for message recording.void setVolume( uint8_t volumeSel )
- Sets a volume on the desired value (0 - 100%) for a message playing.
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
Conversions
SPI
UART
Additional Notes and Information
Depending on the development board you are using, you may need a USB UART click, USB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.
MIKROSDK
This click board is supported with mikroSDK - MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant click board demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.
Rec&Play Click Board
Frequently Asked Questions
Have a Question?
Be the first to ask a question about this.