Header files and Init data so you can use the Text To Speech Click Board with a Hexiware and mBed OS5
Dependents: Talking_breathalyzer FindTheColor mbed_Projet
text_to_speech_hw.h
- Committer:
- daveyclk
- Date:
- 2016-10-07
- Revision:
- 0:b33a6418e125
File content as of revision 0:b33a6418e125:
/**************************************************************************** * Title : Text to Speech Click * Filename : text_to_speech_hw.h * Author : MSV * Origin Date : 30/01/2016 * Notes : None *****************************************************************************/ /**************************CHANGE LIST ************************************** * * Date Software Version Initials Description * 30/01/16 XXXXXXXXXXX MSV Interface Created. * *****************************************************************************/ /** * @file text_to_speech_hw.h * @brief <h3>Hardware Layer</h3> * * @par * Low level functions for * <a href="http://www.mikroe.com">MikroElektronika's</a> TextToSpeech click * board. */ /** * @page LIB_INFO Library Info * @date 28 Jan 2016 * @author Milos Vidojevic * @copyright GNU Public License * @version 1.0.0 - Initial testing and verification */ /** * @page TEST_CFG Test Configurations * * ### Test configuration 1 : ### * @par * - <b>MCU</b> : STM32F107VC * - <b>Dev.Board</b> : EasyMx Pro v7 * - <b>Oscillator</b> : 72 Mhz internal * - <b>Ext. Modules</b> : TextToSpeech Click * - <b>SW</b> : MikroC PRO for ARM 4.7.1 * * ### Test configuration 2 : ### * @par * - <b>MCU</b> : PIC32MX795F512L * - <b>Dev. Board</b> : EasyPIC Fusion v7 * - <b>Oscillator</b> : 80 Mhz internal * - <b>Ext. Modules</b> : TextToSpeech Click * - <b>SW</b> : MikroC PRO for PIC32 3.6.0 * * ### Test configuration 3 : ### * @par * - <b>MCU</b> : FT900Q * - <b>Dev. Board</b> : EasyFT90x v7 * - <b>Oscillator</b> : 100 Mhz internal * - <b>Ext. Modules</b> : TextToSpeech Click * - <b>SW</b> : MikroC PRO for FT90x 1.2.1 * */ /** * @page SCH Schematic * ![Schematic](../tts_sch.png) */ /** * @page PIN Pin Usage * ![Pins](../tts_pins.png) */ /** * @mainpage * ### General Desription ### * * @par * The S1V30120 is a Speech Synthesis IC that provides a cost effective * solution for adding Text-To-Speech ( TTS ) and ADPCM speech processing * applications to a range of portable devices. The highly integrated design * reduces overall system cost and time-to-market. The S1V30120 contains all * the required analogue codecs, memory, and EPSON - supplied embedded * algorithms. All applications are controlled over a single serial interface * ( SPI ) allowing control from a wide range of hosts and rapid integration * into existing products. * * ### Features ### * * @par * - Text To Speech Synthesis (TTS) * + Fonix DECtalk v5, fully parametric speech synthesis * + Languages: US English, Castilian Spanish, Latin American Spanish * + Nine pre-defined voices * + Sampling rate: 11.025kHz * * - Audio reproduction (ADPCM) * + ADPCM decoding (in Epson’s original format) * + Bit rate: 80kbps, 64kbps, 48kbps, 40kbps, 32kbps and 24kbps * + Sampling rate: 16, 8 kHz * * - Host interface * + Synchronous serial interface (SPI interface is supported) * + Command control * * - 16-bit full-digital amplifier * + Sampling rate (fs): 16, 11.025 and 8 kHz * + Digital Input: 16 bits * + Operating voltage: 3.3/1.8V * * - Clock * + 32.768KHz * * - Package * + 64-pin TQFP (10mm x 10mm) with 0.5mm-pitch pins * * - Supply voltage * + 3.3V (I/O power supply) * + 1.8V (Core power supply) */ #ifndef TEXT_TO_SPEECH_HW_H_ #define TEXT_TO_SPEECH_HW_H_ /****************************************************************************** * Includes *******************************************************************************/ #include <stddef.h> #include <stdint.h> #include <string.h> #include <stdbool.h> /****************************************************************************** * Preprocessor Constants *******************************************************************************/ /** * Time needed for module to gets into the boot mode after reset. */ #define RESET_TO_BOOT_TIME 0.3 /** * Time needed for module to gets from boot mode into main work mode. */ #define BOOT_TO_MAIN_MODE 0.3 /** * Time needed for module to enter the standby mode */ #define STBY_MODE_ENTERY 0.05 /** * Max response time in ms - if there is no response after this amount * of time user should restart the device */ #define MAX_RESPONSE_TIME 500 /** * Maximum message size in main mode. Recomended size is 2116 but * if needed it can be resized to save the RAM space. Note that * MAIN_MESSAGE_MAX must be greater than BOOT_MESSAGE_MAX. This number decreased * by 7 also represents the maximum size of the string that can be sent in one * command. */ #define MAIN_MESSAGE_MAX 1116 /** * Maximum message size in boot mode. Recomended size is 2048 but * if needed it can be resized to save RAM space. Note that BOOT_MESSAGE_MAX * must be smaller than MAIN_MESSAGE_MAX */ #define BOOT_MESSAGE_MAX 1048 //#define BOOT_MESSAGE_MAX 1048 /** * Maximum response message max */ #define RESP_MESSAGE_MAX 24 /** * Mark for the start of message */ #define START_MESSAGE 0xAA /** * Pading data used to flash the channels */ #define PADDING_BYTE 0x00 /****************************************************************************** * Configuration Constants *******************************************************************************/ /****************************************************************************** * Macros *******************************************************************************/ /****************************************************************************** * Typedefs *******************************************************************************/ /** * @struct ISC_REQ_t * @brief <h3> Request Message Structure </h3> * * @par * All messages that are received and sent by the device are termed ISC * ( Inter-System-Communication ) messages. An ISC message consists of a * fixed length header part and a variable length payload. */ typedef struct { /** * Header Part - Message length ( including header ) * len[ 0 ] - LSB * len[ 1 ] - MSB */ uint8_t len[ 2 ]; /** * Header Part - Message code ( index ) * idx[ 0 ] - LSB * idx[ 1 ] - MSB */ uint8_t idx[ 2 ]; /** * Payload Part - Message data */ uint8_t payload[ MAIN_MESSAGE_MAX ]; }ISC_REQ_t; /** * @struct ISC_RESP_t * @brief <h3> Response Message Structure </h3> * * @par * All messages that are received and sent by the device are termed ISC * ( Inter-System-Communication ) messages. An ISC message consists of a * fixed length header part and a variable length payload. */ typedef struct { /** * Header Part - Message length ( including header ) * len[ 0 ] - LSB * len[ 1 ] - MSB */ uint8_t len[ 2 ]; /** * Header Part - Message code ( index ) * idx[ 0 ] - LSB * idx[ 1 ] - MSB */ uint8_t idx[ 2 ]; /** * Payload Part - Message data */ uint8_t payload[ RESP_MESSAGE_MAX ]; }ISC_RESP_t; /****************************************************************************** * Variables *******************************************************************************/ /****************************************************************************** * Function Prototypes *******************************************************************************/ #ifdef __cplusplus extern "C"{ #endif /** * @brief <h3> HW Layer Initialization </h3> * * @par * Initalization of HW Layer, must be done before any other function. * This function also executes HAL layer initialization inside it self. */ void tts_hw_init( void ); /** * @brief <h3> Timer Tick </h3> * * @par * Should be placed inside the user defined interrupt routine that will call * this function every milisecond. */ void tts_tick_isr( void ); /** * @brief <h3> Mute Command </h3> * * @par * Mute using MUT pin * * @param[in] cmd ( true - mute / false - unmute ) */ void tts_mute_cmd( bool cmd ); /** * @brief <h3> Request Parser </h3> * * @par * Preparing request for writing. Loads data into output buffer and executes * write function. * * @param[in] req - valid request code * @param[in] payload - data * @param[in] pl_len - data size */ void tts_parse_req( uint16_t req, uint8_t *payload, uint16_t pl_len ); /** * @brief <h3> Boot Image Request Parser </h3> * * @par * Function is used for the boot uploading of boot image * * @param[in] payload - boot image part * @param[in] pl_len - data size */ void tts_parse_boot_img( const uint8_t *payload, uint16_t pl_len ); /** * @brief <h3> Speak Request Parser </h3> * * @par * Preparing speak request for writing. Provided word must be valid * null terminated string. Size of word must be shorter than * 2115 characters including null terminator. * * @param[in] req - speak request code * @param[in] flush_en - flash option * @param[in] word - char array * @param[in] word_len - char array length */ void tts_parse_speak_req( uint16_t req, uint8_t flush_en, char *word, uint16_t word_len ); /** * @brief <h3> Response </h3> * * @par * Cheks and pads SPI for response. If there is a response than this * function calls read response functions and fills the input buffer * with received data. * */ void tts_get_resp( void ); /** * @brief <h3> Check Response Index </h3> * * @par * Compares received response code with code provided as argument. Returns * true if codes have same value, otherwise returns false. * * @param[in] idx - response code for comparing * * @retval TRUE - codes are same * @retval FLASE - codes are different */ bool tts_rsp_chk( uint16_t idx ); /** * @brief <h3> Response Index </h3> * * @par * Returns last received response code. * * @return ( 0x0000 ~ 0xFFFF ) */ uint16_t tts_rsp_idx( void ); /** * @brief <h3> Response Data </h3> * * @par * Fill given buffer with last received response data if there is data at all. * Size of buffer must be big enough. * * @param[out] buffer */ void tts_rsp_data( uint8_t *buffer ); #ifdef __cplusplus } // extern "C" #endif #endif /*** End of File **************************************************************/