We strongly encourage users to use Package manager for sharing their code on Libstock website, because it boosts your efficiency and leaves the end user with no room for error. [more info]
Rating:
Author: MIKROE
Last Updated: 2019-03-05
Package Version: 1.0.0.0
mikroSDK Library: 1.0.0.0
Category: Signal processing
Downloaded: 4435 times
Not followed.
License: MIT license
Rec&Play Click is a digital voice recorder on a Click board. It is based around the ISD3900, a multi-message record and playback device.
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.Examples description
The application is composed of the three sections :
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.Other mikroE Libraries used in the example:
Conversions
SPI
UART
Additional notes and informations
Depending on the development board you are using, you may need 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.
IR Grid 2 Click is a thermal imaging sensor. It has an array of 768 very sensitive factory calibrated IR elements (pixels), arranged in 32 rows of 24 pixels. Each one of them is measuring an object temperature up to 300˚C within its local Field of View (FOV). The MLX90640ESF-BAB IR sensor used on this Click board™ has just four pins, and it is mounted inside of the industry standard TO39 package. It is equipped with 2Kbit of EEPROM for storing the compensation and calibration parameters.
[Learn More]PWR Meter 3 Click - 30A is a compact add-on board that measures voltage and current through the connected load. This board features the ACS37800KMACTR-030B3-I2C, an I2C-configurable power monitoring solution from Allegro MicroSystems, which simplifies the addition of power monitoring to many AC/DC powered systems. The ACS37800KMACLU-090B3-I2C Hall-effect-based current sensing technology achieves reinforced isolation ratings (4800 VRMS) alongside a reliable ±30A bidirectional current sensing. It also has two LED indicators for the realization of visual detection of some anomalies in operation, such as under/overvoltage and fast overcurrent fault detection.
[Learn More]Relay 7 Click is a compact add-on board for precise load control and monitoring applications. This board features four CRR05-1As, a CRR series reed relay from Standex Electronics, well-known for its ultra-miniature SMD design and high insulation resistance. These four relays each have four load connection terminals and orange LED indicators that signal the operational status, ensuring clear and immediate feedback. These relays are highly reliable and come in a rugged thermoset over-molded package with ceramic substrate and a typical 1013Ω insulation resistance. They support a coil voltage of 5VDC and switching capabilities up to 170VDC/0.5A/10W. It is ideally suited for test and measurement (ATE) equipment, instrumentation, and telecommunications.
[Learn More]You have unsaved changes. If you choose to leave all changes will be discarded.
Do you want to subscribe in order to receive notifications regarding "REC-PLAY click" changes.
Do you want to unsubscribe in order to stop receiving notifications regarding "REC-PLAY click" changes.
Do you want to report abuse regarding "REC-PLAY click".