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
Diff: text_to_speech_hw.h
- Revision:
- 0:b33a6418e125
diff -r 000000000000 -r b33a6418e125 text_to_speech_hw.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/text_to_speech_hw.h Fri Oct 07 20:09:00 2016 +0000 @@ -0,0 +1,369 @@ +/**************************************************************************** +* 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 **************************************************************/ \ No newline at end of file