datasheet
超过460,000+ 应用技术资源下载
pdf

DA14580 Remote Control with voice and motion

  • 1星
  • 日期: 2015-06-21
  • 大小: 1.8MB
  • 所需积分:1分
  • 下载次数:7
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: DA14580的远程控制套件参考设计

DA14580的远程控制套件参考设计

User manual DA14580/582 Remote control with voice and motion UM-B-042 Abstract This document describes the DA14580/582 Remote control with voice and motion reference application, based on DA14580 Bluetooth® Smart controllers and DA14582 Bluetooth Smart SoC with Codec. UM-B-042 DA14580/582 Remote control with voice and motion Contents Abstract ................................................................................................................................................ 1 Contents ............................................................................................................................................... 2 Figures.................................................................................................................................................. 3 Tables ................................................................................................................................................... 3 1 Terms and definitions ................................................................................................................... 4 2 References ..................................................................................................................................... 4 3 Introduction.................................................................................................................................... 5 4 Overview......................................................................................................................................... 5 5 Reference Design hardware ......................................................................................................... 6 5.1 Setting up the hardware ........................................................................................................ 6 5.2 Setting up the software ......................................................................................................... 8 5.2.1 Windows 8.1 host application ................................................................................ 8 5.2.1.1 Preparing the host device .................................................................. 8 5.2.1.2 The windows host application............................................................ 8 5.2.1.3 Running the application ..................................................................... 9 5.2.2 Android host application ...................................................................................... 10 5.2.2.1 Preparing your host device .............................................................. 10 5.2.2.2 The Android host application ........................................................... 10 5.2.2.3 Running the application ................................................................... 11 5.3 Upgrading the device .......................................................................................................... 11 6 Bluetooth Smart Voice and Motion Remote Control hardware .............................................. 12 7 Bluetooth Smart Voice and Motion Remote Control software ............................................... 14 7.1 Source files ......................................................................................................................... 14 7.2 Key functions....................................................................................................................... 16 7.3 Voice functionality ............................................................................................................... 18 7.3.1 Architecture description ....................................................................................... 18 7.3.2 SC14439 driver API ............................................................................................. 18 7.4 Motion functionality ............................................................................................................. 19 7.4.1 Architecture.......................................................................................................... 19 7.4.2 BMI055 driver API................................................................................................ 20 7.5 Stream functionality............................................................................................................. 20 8 Software configuration ............................................................................................................... 21 8.1 hw_config.h ......................................................................................................................... 21 8.2 app_kbd_config.h ................................................................................................................ 21 8.3 app_audio439_config.h....................................................................................................... 22 8.4 app_con_fsm_config.h ........................................................................................................ 22 9 HID database and reports........................................................................................................... 24 10 Audio delay calculation .............................................................................................................. 25 11 Power consumption .................................................................................................................... 26 12 Windows 8.1 host application .................................................................................................... 27 Appendix A GATT database ............................................................................................................. 28 Appendix B HID report map.............................................................................................................. 31 User manual CFR0012-00 Rev 2 Revision 1.0 2 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Appendix C DA14580 reference design schematics...................................................................... 35 Appendix D DA14582 reference design schematics...................................................................... 37 Revision history................................................................................................................................. 39 Figures Figure 1: DA14580 Voice and Motion RCU layout ................................................................................ 6 Figure 2: DA14582 Voice and Motion RCU layout ................................................................................ 7 Figure 3: The Windows Voice RCU host application window ............................................................... 8 Figure 4: The Android Voice RCU host application............................................................................. 10 Figure 5: HW architecture of the DA14580 Voice and Motion Remote Control .................................. 12 Figure 6: HW architecture of the DA14582 Voice and Motion Remote Control .................................. 12 Figure 7: Voice related software architecture ...................................................................................... 18 Figure 8: Motion related software architecture .................................................................................... 19 Figure 9: Motion data processing in host device ................................................................................. 19 Figure 10: Stream software architecture ............................................................................................. 20 Figure 11: Audio initialization sequence of events .............................................................................. 25 Figure 12: Windows 8.1 host application architecture......................................................................... 27 Figure 13: DA14580 and gyro/accelerometer schematic diagram ...................................................... 35 Figure 14: DA14580 key-matrix and SC14439 schematic diagram .................................................... 36 Figure 15: DA14582 and gyro/accelerometer schematic diagram ...................................................... 37 Figure 16: DA14582 key-matrix and gyro/accelerometer schematic diagram .................................... 38 Tables Table 1: Bluetooth Smart Voice and Motion Remote Control hardware blocks .................................. 13 Table 2: Differences between Keyboard and Voice RCU reference design software......................... 14 Table 3: Voice and Motion RCU related software files........................................................................ 15 Table 4: Audio initialization sequence of events ................................................................................. 25 Table 5: Power consumption ............................................................................................................... 26 User manual CFR0012-00 Rev 2 Revision 1.0 3 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 1 Terms and definitions Define acronyms and abbreviations used in the document. ADPCM Adaptive differential pulse-code modulation BLE Bluetooth Low Energy BOM Bill Of Materials DIS Device Information Service EEPROM Electrically Erasable Programmable Read Only Memory FSM Finite State Machine GAP Generic Access Profile GATT Generic Attribute Profile GPIO General Purpose Input Output HID Human Interface Device HW hardware I2C Inter-Integrated Circuit (bus) IMA Interactive Multimedia Association MITM Man In The Middle OOB Out Of Band PCB Printed Circuit Board PTT Push To Talk RCU Remote Control Unit SoC System on a Chip SPI Serial Peripheral Interface USB Universal Serial Bus 2 References [1] List the documents that are relevant for readers of the document. [2] DA14580-01 datasheet, Dialog Semiconductor [3] DA14582 datasheet, Dialog Semiconductor [4] UM-B-014 – DA14580 Development kit, User manual, Dialog Semiconductor [5] UM-B-003 – Software Development Guide, User manual, Dialog Semiconductor [6] UM-B-015 – Software Architecture, User manual, Dialog Semiconductor [7] HID over GATT Profile Specification, HOGP_SPEC_V10.pdf, Bluetooth SIG [8] Bluetooth SIG website: Specification Adopted Documents, Bluetooth SIG [9] UM-B-011 – Memory map and scatter file, User manual, Dialog Semiconductor [10] UM-B-004 – Peripheral Drivers, User manual, Dialog Semiconductor [11] UM-B-006 – Sleep mode configuration, User manual, Dialog Semiconductor [12] UM-B-009 – DA14580 Keyboard reference application, User manual, Dialog Semiconductor [13] SC14439 datasheet, Dialog Semiconductor [14] UM-B-012 – DA14580 Creation of a secondary boot loader, User manual, Dialog Semiconductor [15] UM-B-030 – DA14580 BLE data streaming application, User manual, Dialog Semiconductor User manual CFR0012-00 Rev 2 Revision 1.0 4 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 3 Introduction This document describes the Voice and Motion Remote Control Unit reference application which is based on the DA14580 Bluetooth® Smart controllers and DA14582 Bluetooth Smart SoC with Codec. This user guide describes the various components and how to set them up. It is also a developer guide that briefly describes the HW components used and the architecture of the software. The developer is suggested to get familiar with the DA14580 software and hardware looking into the development kit [4], software development guide [5], the software architecture document [6] and the DA14580 Keyboard Reference application [13]. 4 Overview The Voice and Motion RCU reference design supports the following features: ■ Ultra low power operation ■ 27 keys in a 6 x 5 matrix (customizable) ■ On board non-volatile memory for storing the firmware and the pairing information ■ Simultaneous key-press ■ Programmable key de-bouncing ■ Key de-ghosting ■ 16-bit, 16 kHz Audio IMA ADPCM encoded ■ Audio over HID data transfer ■ Audio buffering capabilities exceeding 500 ms ■ Pointing device functionality using a gyro/accelerometer sensor ■ Host demo application with audio capabilities for Windows and Android platform The reference application is based on the HID over GATT Profile [7]. It is an adaptation of the USB HID specification for operation over a Bluetooth low energy wireless link. The HID over GATT profile requires the Generic Attribute Profile (GATT), the Battery Service and the Device Information Service. The remote application implements the HID Device role. The GATT role is Server and the GAP role is Peripheral. The DA14580 reference application exposes the following services: ● Device Information ● HID ● Battery ● GAP ● GATT For more information, see [8] HID Service Specification Version 1.0, Device Information Specification Version 1.1, Battery Service Specification Version 1.0 and Scan Parameters Service Specification Version 1.0. Bluetooth Core Specification Version 4.0 contains detailed information about GATT and GAP. User manual CFR0012-00 Rev 2 Revision 1.0 5 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 5 Reference Design hardware 5.1 Setting up the hardware The layout of the PCB and the default key layout of the DA14580 and DA14582 RCU reference designs are depicted in Figure 1 and Figure 2 respectively. The remote is pre-programmed to function as an HID remote control device, with the default layout. Two dedicated keys, SW1 (or Motion) and SW9 (or PTT) operate as special keys. SW1 is used for operating the motion feature of the RCU. While pressed, the RCU can function as a pointing device to move a cursor on the screen of the host. SW9 is used as a Push-To-Talk button that controls the voice operation of the RCU. Mic SC14439 BMI055 SPI Flash DA14580 JTAG connector Mute Motion On/Off Enter Vol + PTT Vol - Ch+ Ch - 1 2 3 4 5 6 7 8 9 0 << >> Figure 1: DA14580 Voice and Motion RCU layout User manual CFR0012-00 Rev 2 Revision 1.0 6 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion SPI Flash Mic BMI055 DA14582 JTAG connector Mute Motion On/Off Enter Vol + PTT Vol - Ch+ Ch - 1 2 3 5 4 6 8 7 9 0 << Figure 2: DA14582 Voice and Motion RCU layout The device operates with two AAA batteries and it is programmed-configured to work out-of-the-box. User manual CFR0012-00 Rev 2 Revision 1.0 7 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 5.2 Setting up the software The demo host application of the reference design is provided for both Windows 8.1 and Android platforms. 5.2.1 Windows 8.1 host application 5.2.1.1 Preparing the host device On any host (tablet/laptop) running Windows 8.1.: 1. Install the latest Microsoft Visual C++ 2013 Redistributable package available at http://www.microsoft.com/en-us/download/details.aspx?id=40784. 2. Locate the DialogAudio439Setup_v_3.140.2.35 setup utility and run it. 3. Register your remote in windows: a. Go to Control Panel->Hardware and Sound -> Devices and Printers b. Press Add a device. c. Press any key on the remote. d. Select the “DA1458x RCU” device. 5.2.1.2 The windows host application The interface of the Windows application supports all aspects of the RCU functionality. The main window of the application is depicted in Figure 3. Figure 3: The Windows Voice RCU host application window User manual CFR0012-00 Rev 2 Revision 1.0 8 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion The main application window is divided in the following areas: 1. Log: A textbox that displays messages, warnings and debug information. 2. Store Audio: The user can select to store the audio data captured in a file. 3. Device Selection: This area initially contains two buttons (Scan, Connect) and a listbox. The user can initiate a scan and all available HID drivers will be listed in the listbox. User will then select the HID driver of the RCU to connect with. After establishing the communication with the selected HID driver, the application is in Connected Mode and the listbox disappears. In its place three buttons appear to start and stop the Audio Stream from the host application, or to disconnect the application from the selected HID driver. 4. Remote: This area contains a sketch of the remote control layout. It is used to visually show the press and release of the remote control buttons. At the bottom of this area a label is placed to show the status of the remote when connected. 5. Audio Output: The audio output list box shows all the audio devices available in the host. The user should select the audio device to be used for audio playback. 6. Audio Plot Area: The application also supports real time plotting of the audio data received from the RCU. 7. Mode Selection Button: The demo application supports two modes. The command mode and the live mode. Live mode captures and playbacks audio in real time, Command mode, is intended for voice command demonstration. The captured audio, will be send to a speech recognition engine and the returned results will be displayed or used as keywords into search engines. 8. Other controls: Controls to save the captured audio, select between different rates (experimental) and logging controls are also included in the main application window. 5.2.1.3 Running the application If you have registered the device, using the application is relatively straightforward. 1. Press a button on the device. This is to ensure that the device is connected and the HID driver is active. If the device does not generate any events for more than a predefined period of time, it will automatically disconnect from the host to reduce power. It will automatically reconnect when a new event is generated (press a button). 2. Press the Scan button. Select the last of the devices appearing on the list usually labelled as Dialog Vendor Pg. A different name may appear on some tablets. If none appears press a button on the remote wait for a few seconds (to get it out of sleep and connected to the device) and retry. 3. Press Connect. 4. Check that proper Audio Output device is selected. 5. If the audio capture is to be saved, 'Store Audio' tick box should be checked and output file name should be set. Experiment with the keys of the remote as well with the SW9 (PTT) or the Stream ON/OFF buttons. User manual CFR0012-00 Rev 2 Revision 1.0 9 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 5.2.2 Android host application 5.2.2.1 Preparing your host device Your tablet/laptop should run Android v4.4.4 or higher. Please follow the following steps: 1. Locate the BleRemote_v_3.140.2.34.apk package in the binaries package and install it. “Unknown sources” must be enabled under Settings -> Security. 2. Register your remote in Android. a. Go to Settings->Bluetooth b. Enable Bluetooth interface if not already enabled c. Press a button on the device. This is to ensure that the device is connected and the HID driver is active. If the device does not generate any events for more than a predefined period of time, it will automatically disconnect from the host to reduce power consumption. It will automatically reconnect when a button is pressed. d. Select the DA14580/582 Remote Control device from the list of the available devices in the Android device. If the RCU is not listed press the scan button to refresh the list. 5.2.2.2 The Android host application The interface of the Android application is depicted in Figure 4. Figure 4: The Android Voice RCU host application The main application window is divided in the following areas: 1. Logging: A textbox that displays messages, warnings and debug information. 2. Audio Control: In this area three buttons appear to switch between live and command mode, to start and stop the Audio Stream from the host, or to play the last recorded audio clip. 3. Remote: This area contains a sketch of the remote control layout. It is used to visually show the press and release of the remote control buttons. User manual CFR0012-00 Rev 2 Revision 1.0 10 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 4. Audio Plot Area: The application also supports real time plotting of the audio data received from the RCU. 5. Scan button: When pressed a menu appears at the right side containing all the available BLE devices. The user can connect to any of these devices by selecting the corresponding menu item. 5.2.2.3 Running the application If the device has been registered, using the application is relatively straightforward. 1. Press a button on the device. This is to ensure that the device is connected and the HID driver is active. If the device does not generate any events for more than a predefined period of time, it will automatically disconnect from the host to reduce power consumption. It will automatically reconnect when a button is pressed. 2. Press the Scan button. From the menu that appears at the right of the scan button select the device corresponding to the RCU, usually labelled as “DA14580 remote”. If none appears press a button on the remote wait for a few seconds (to get it out of sleep and connected to the device) and retry. Play around with the keys of the remote as well with the SW9 (PTT) or the Stream ON/OFF buttons. Switch to “Live” mode to listen to the audio recorded when SW9 (PTT) is pressed. Switch to command mode to perform voice recognition using Google voice service. Internet connection is required for the proper operation when in Command mode. 5.3 Upgrading the device The firmware of the reference design is stored in an external flash device. It is uploaded using a secondary bootloader. The secondary bootloader is programmed in OTP memory and when executed, at boot, reads the firmware from the external SPI flash device. Direct SPI boot is not possible, since the default pins are used for other purposes on the reference design, making it impossible to access the SPI flash. More information about the secondary bootloader can be found in [14]. SmartSnippets may be used to upgrade the flash contents using a serial connection. A special firmware is required since the pins used to communicate with the flash on the board are different from other designs. The following steps must be followed to replace the SmartSnippets default flash programmer: 1. Open a file explorer and go to the following location: “%smartsnippets_work%\resources” 2. Make a backup copy of the existing flash_programmer.bin and jtag_programmer.bin and replace them with the corresponding files located in folder “firmware\DA1458x_RCU\flash_programmer in the binaries package. Important note: The original flash_programmer.bin and jtag_programmer.bin MUST BE RESTORED whenever you want to program flash devices on other designs other than the RCU reference design. For more information on how to use SmartSnippets, download and install SmartSnippets from the Dialog Support site (http://support.dialog-semiconductor.com/) and check the built-in SmartSnippets User Guide in the Help menu. User manual CFR0012-00 Rev 2 Revision 1.0 11 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 6 Bluetooth Smart Voice and Motion Remote Control hardware Figure 5 and Figure 6 depict the HW architecture of DA14580 and DA14582 Voice and Motion RCU respectively. Everything is built around the DA14580/582 BLE controller. Mic Line In Audio Codec SC14439 Power SPI Ctrl CLK Low Bat Boost Regulator Optional JTAG DA14580 UART SPI Power Ctrl I2C Int Rows/ Columns Key Matrix Debug Connector Flash (W25X20CL) Gyro/Accelerometer BMI055 Figure 5: HW architecture of the DA14580 Voice and Motion Remote Control Mic Low Bat Boost Regulator Optional JTAG DA14582 UART SPI Debug Connector Flash (W25X20CL) Rows/ Columns Key Matrix I2C Int Gyro/Accelerometer BMI055 Figure 6: HW architecture of the DA14582 Voice and Motion Remote Control User manual CFR0012-00 Rev 2 Revision 1.0 12 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Table 1 lists the different hardware blocks in the reference design. Table 1: Bluetooth Smart Voice and Motion Remote Control hardware blocks Block Main part Interface Comments Flash W25X20CL SPI External flash memory with SPI interface used to store the firmware and the bonding data Gyro/Accelerometer BMI055 I2C, Interrupt line Accelerometer and Gyro used for the motion control Key Matrix - 11 GPIOs Typical 6x5 key matrix configuration Audio Codec SC14439 SPI, CLK, Voltage Control Audio chip used only for its input codec capabilities. Interfacing is done via SPI for both control and data transfers. Clock and power is also controlled from DA14580 for reduced BOM and more efficient power management. SC14439 is embedded in the DA14582 SoC. Debug Connector JTAG, UART A PCB based connector for JTAG control and UART connection Some useful notes about the design: 1. DA14580 features a single SPI controller. Both the flash memory and the audio codec share the same controller but use separate pins. They are not connected in a standard SPI bus configuration. This solution has been promoted to achieve more efficient power management. This approach causes of course a minor limitation in that the SC14439 and the SPI flash cannot be concurrently accessed by the DA14580. 2. To minimize power consumption, both the VDD and VDDIO of the SC14439 must be switched off when the SC14439 is not used. 3. The 16 MHz clock is provided from the DA14580 to the SC14439. To implement this DA14580 is configured in a special mode by setting the SHOW_CLOCKS bit in the TEST_CTRL_REG register. In this mode, pins P0_6, P0_7 and P1_0 may only be used as inputs. User manual CFR0012-00 Rev 2 Revision 1.0 13 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 7 Bluetooth Smart Voice and Motion Remote Control software This application is based on the Keyboard reference application. A lot of files have been kept identical to the Keyboard reference. Some degree of familiarization with the UM-B-009 – DA14580 Keyboard reference application [12] is strongly recommended. 7.1 Source files Table 2 highlights the most significant differences between the keyboard and Voice RCU reference designs. Table 2: Differences between Keyboard and Voice RCU reference design software File Differences app_kbd.c app_kbd_config.h app_kbd_debug.h app_kbd_key_matrix.h app_kbd_matrix.h app_kbd_proj.c app_kbd_proj.h ● Code has been added to manage the key press of PTT (SW9) and motion key (SW1) ● Code has been added to send duplicate reports for the keys on both the HID remote page and the HID vendor defined page. Those reports should be removed in the production software. ● The HID database has been extended to accommodate the audio and motion control and vendor specific characteristics ● MATRIX_SETUP number 12 to 17 are used for various design configurations ● Keyboard debugging features are minimized. Memory resources freed are used for audio buffering. ● Six new pin configuration descriptions for the pin layouts of the matrix of our RCU have been created with configuration numbers 12 to 17. To define a new layout one should add a new description in this file and also change the MATRIX_SETUP number on the app_kbd_config.h ● Six new matrix layout descriptions for our RCU have been created with configuration numbers 12 to 17. New layouts should be described in a similar file. The active setup is selected by defining the MATRIX_SETUP number on the app_kbd_config.h. ● RCU can only be placed in Extended sleep or No sleep modes. It cannot be placed in DEEP sleep since the firmware is stored in the external flash. ● The appearance of the device has changed from keyboard (961) to Remote Control (384) ● Two global variables are used to keep the database handles of the HID Vendor Specific Characteristics used to stream the audio data. Those are required from the streamer software. ● Provision to stop the audio stream upon disconnection, has been added. ● Functionality to send and receive Stream On-Off notifications has been added. ● Device name and default advertising data have both been altered. app_kbd_proj_task.c app_sleep.h periph_setup.c periph_setup.h app_multi_bond.c hogpd.h ● An extended HID report map has been created with all the HID Vendor specific fields which are required to support the audio and motion functionality. ● Code has been added to send the actual notifications when the PTT key is pressed. ● Code has been added to properly initialize the external pins used to control the SC14439 codec. ● Peripheral configuration has been moved to the configuration files under “dk_apps\keil_projects\hid\remote_audio\config” ● Extension of the code to support bonding info storage to SPI Flash in addition to external EEPROM. ● Changed the HID profile to support the features required for the audio. nvds.c ● Changed the default device name, default address and other configuration data. User manual Revision 1.0 20-Mar-2015 CFR0012-00 Rev 2 14 of 40 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion A number of files have been added to support: ● control and configuration of the SC14439 ● encoding of the audio data ● control and configuration of the gyro/accelerometer sensor ● streaming of the audio and motion data over BLE ● handling of the connection, disconnection and pairing of the BLE device ● reading and writing of bonding data on the Flash memory All the additional files related to the functionality of the RCU are listed in Table 3. Table 3: Voice and Motion RCU related software files File Description designs.h Configuration file for choosing the hardware design for which the reference application will be built. ● Define DA14580_RCU to 1 and DA14582_RCU to 0 to build the reference application for the DA14580 RCU reference design ● Define DA14582_RCU to 1 and DA14580_RCU to 0 to build the reference application for the DA14582 RCU reference design hw_config.h Hardware configuration file. This file includes: ● UART pin assignment ● I2C pin assignment ● DA14580 clock selection (XTAL32 or RCX20) ● I2C EEPROM configuration ● Use of motion and audio feature app_flash_config.h app_flash.c SPI Flash Configuration file. This file includes: ● SPI pin assignment ● Flash power supply configuration ● Flash configuration Additional routines required to access the flash and store bonding data. app_audio_439_config.h app_audio439.c Configuration file for the audio module. In this file the configuration is defined: ● Pin assignments for the SPI interface used for the audio ● SC14439 power supply configuration ● Audio encoding parameters Basic functionality for the SC14439. This file includes: ● The implementation of the initialization, the start and stop of the audio stream. ● The set and reset of the periodic timer that collects the audio data. spi_439.c Driver for the SC14439. Contains the SC14439 configuration function, and the SPI Interrupt handler routine that collects the data in a block based manner. app_audio_codec.c IMA ADPCM encoding function and DC Blocking filter function app_motion_sensor.c I2c_bmi055.c Basic functionality for BMI055 sensor. This file includes: ● The initialization of the sensor ● Data acquisition from the sensor ● Wake up/sleep functionality Driver for the BMI055 sensor. This file includes: ● The initialization if the I2C bus ● Read/write access to the sensor over I2C bus User manual CFR0012-00 Rev 2 Revision 1.0 15 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion File app_stream.c app_con_fsm_config.h app_con_fsm.c app_con_fsm_task.c Description Stream functionality. This file includes: ● Initialization, enable and disable of the stream ● Initialization and manipulation of the stream FIFO ● The function which is periodically called from the main loop to push data from the queue to the L2CC Configuration file for the connection FSM ● All settings related to the BLE connection have been moved here. ● time_to_request_param_upd is significantly shortened to 5 sec. This variable sets the delay after which the RCU will ask the host to change the connection parameters. This requirement is critical for the audio and motion which require a short connection interval (<10ms) to operate. ● MITM authentication mode is an option Implementation of the FSM needed for the handling of the connection and pairing of a BLE device. Existing code previously located in app_sec_task.c, app_sec.c and app_kbd_proj.c has been moved in this file. This file holds the event handlers for the implementation of the connection FSM. Existing code previously located in app_sec_task.c, and app_kbd_proj.c has been moved in this file. 7.2 Key functions This section of the document provides information about the key functions of the application. ● app_init() & app_init_func() These functions are the main entry points of the application. For a description of app_init() please refer to the Software Architecture document [6]. The function (hook) app_init_func() initializes the environment of the low-part of the Keyboard application, prepares advertising data and sets the preferred sleep mode. ● app_configuration_func() This function (hook) is called during device power up. It sets the GAP Role to Peripheral and other parameters of the device. Those of interest to the developer are the appearance, which is now set as “Remote Control”, and the preferred connection parameters. When the configuration of the device is completed, the function app_db_init() is called to initialize the Database of the device. Each Service and each Profile creates entries in this DB. When the creation of the DB finishes, the device is ready to start advertising. ● keyboard_create_db_cfm_handler() This function initializes the Report Map characteristic of the HID Service. The Report Map that has been defined for the remote control application declares the usage of multiple HID Pages with multiple HID Reports. The first page defines the Keyboard page and has three HID Reports. The first and the third are Input Reports (sent by the device to the host) while the second one is an Output Report (sent from the host to the device) for the LEDs. This Report is not used in our design but it is left for compatibility reasons. The second page defines a Consumer control and has a single report with the special functions keys, such as, scan next track, scan previous track, stop, eject, volume increment/decrement etc. The third and final page is a vendor defined page with 5 individual reports. The first report is an input report and used by the RCU to notify about the status of the audio streamer. The second report of this page is an output report, and used by the host to send commands about the audio streamer to the RCU. The remaining three reports are all used to deliver audio data from the RCU to the host. ● app_send_pairing_rsp_func() This function (hook) is called during the Pairing process (Phase 1). It is the same with the one used by the keyboard reference design. User manual CFR0012-00 Rev 2 Revision 1.0 16 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion ● app_connection_func() This function (hook) is called upon connection establishment. It is the same with the one used by the keyboard reference design. ● app_audio439_start() When this function is called, the SC14439 is powered and configured. A DMA channel of the SC14439 is configured to collect data and store them in the internal RAM of the 439 in a ring buffer mode. The ring buffer can hold up to 5 ms of 16 kHz – 16 bit audio samples. A timer (TIMER0) is configured in DA14580 to give a periodic interrupt every 2.5 ms to collect the data form the SC14439. ● SWTIM_Callback() The interrupt handler initiates the collection of a block of 40 samples (80 bytes of data) from the 439 via the SPI interface. This is done by initiating a block read on the device. ● SPI_Handler() This interrupt handler collects the data from the SC14439. On every interrupt 2x16-bit words are read until a full block of 40 samples is collected. ● app_audio439_encode() This function reads already buffered blocks of collected audio samples and forwards them to the IMA ADPCM encoder. It then commits the packet to the stream_fifo. Additional functionality implemented in this function: ○ drop packets if there is no buffer available to store them ○ drop initial packets that contain artifacts (click noises) ○ process a small number of packets using a DC-blocking filter (high pass filter) to remove some electrical artifacts caused by the mic input. ● app_audio_dcblock() This function implements a low MIPS DC blocking filter. ● app_ima_enc() This function implements the IMA ADPCM encoder. The encoding compresses the audio data 4 times. The output stream of the encoder has a bit rate of 64 kbit/s. ● app_stream_fifo_init () When called this function initializes the stream FIFO. ● stream_queue_more_data() This function is periodically called from the main loop. Its main purpose is to create BLE notifications from the data stored in the stream_fifo and push them in the L2CC layer of the protocol stack. The operation of the streaming code is described in [15]. The stream code (referred also as streamer) is used to ensure delivery of the data with the maximum throughput available. The implementation used in the Voice RCU is slightly different from the one described in [15], in an attempt to free memory resources to be used for extra audio buffering. ● app_disconnect_func() This function is called upon reception of the GAPC_DISCONNECT_IND message, which indicates that the connection does not exist anymore. It clears any active system timers, stops the Battery polling and the audio streamer if it is active. User manual CFR0012-00 Rev 2 Revision 1.0 17 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 7.3 Voice functionality 7.3.1 Architecture description Figure 7 depicts the signal flow within the RCU. The voice signal is amplified using the SC14439 internal AFE and sampled using the CODEC at 16 kHz rate. The length of the samples is 16 bits. A programmed DMA stores the data into the internal memory of the SC14439. A continuous RAM area of 160 bytes, is used as a ring buffer. SPI Slave SPI Master BLE Stack Mic Amp Codec DMA Buf A Buf B SWTIM SPI Handler DC_Blocking IMA Encoding Stream_queue_more_data audioSlots Drop app_audio439_encode app_stream_fifo.pkt_fifo SC14439 Figure 7: Voice related software architecture DA14580 Data samples are pumped out the SC14439 using the SPI interface. SC14439 acts as a SPI slave and DA14580 as a SPI master. Data are read in a 2 Mbit/s rate which is higher than the rate the DMA uses to fill the buffer. SPI transfers are done in a 32-bit mode to lower the interrupt processing load on the DA14580. To synchronize the two processes, the DMA writing and the SPI reading of the data, the SWTIM timer is used. The SWTIM initiates the SPI transfer exactly 2.5 ms after the DMA is first programmed. This way, the SPI can read the memory area, labelled as BufA in the figure, which has been filled up in the previous 2.5 ms, while in the meantime the DMA is writing data on the RAM area labelled as BufB. DA14580 and SC14439 share the same 16 MHz clock ensuring that there will be no drifts between the SWTIM and the DMA over time. The data read through the SPI are stored in a buffer called audioSlots. A two dimensional array and two pointers are used to implement a typical FIFO ring buffer. The function app_audio439_encode is called periodically from the main loop. This function reads the audioSlots FIFO to check if there are audio data for processing. For a few hundredths of a second, the audio data will go through special processing which includes dropping some packets and high pass filtering, before being IMA ADPCM encoded. The encoded output will then be stored in the app_stream_fifo(). If there is no available place for the packet to be stored, it is dropped and an error counter is increased. In a similar way, the stream_queue_more_data() function will check for available data in the app_stream_fifo(). It will retrieve encoded audio data, pack them in notifications and push them on the BLE stack. 7.3.2 SC14439 driver API ● void spi_439_init(void) This function powers up the SC14439, initializes the SPI bus and configures the SC14439. ● void spi_439_release(void) This function powers down the SC14439 and configures all pins used for the SPI bus as inputs in order to avoid leakage currents. ● void spi_439_codec_restart(void) This function starts or restarts the SC14439 SPI to get it ready for fetching audio data. ● void spi_439_get_codec_sample(void) This function gets one codec sample from SC14439, using interrupt to fetch result. ● void spi_439_getblock(int i) This function starts an SPI read block transfer of 40 audio samples from SC14439. User manual CFR0012-00 Rev 2 Revision 1.0 18 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 7.4 Motion functionality 7.4.1 Architecture An advanced, combined tri-axial gyroscope/accelerometer sensor (p/n Bosch BMI055) is embedded in the RCU board. Motion data are acquired from this sensor and sent to the host for further post processing, using the stream mechanism described in 7.3.1. Accelerometer BLE Ints HID Vendor Specific Report Polling Gyro I2C Device I2C_BMI055 Driver Low Latency Notification BLE Stack BMI055 DA14580 Figure 8: Motion related software architecture Figure 8 depicts the motion data flow within the RCU. The I2C interface is used for communicating with the sensor. In addition, one sensor interrupt signal is connected to a DA14580 GPIO pin. This signal can be used for waking up the CPU when motion is detected. However, this functionality is not supported in this version. Function app_motion_state_machine() is periodically executed when BLE is active to handle a state machine used for initializing and powering-down the sensor, as well as acquiring the required motion data. Data acquisition starts when button SW1 is pressed while the RCU is connected to the host. While SW1 is pressed, motion raw data are acquired over I2C interface once in every connection interval, packed in an HID report and queued in the stream packet FIFO for transmission to the host. At the host side, motion data are extracted from the HID report, processed in order to detect the RCU movement and fed to the operating system. The block diagram of a reference application implemented in Android 4.4.4 in a Google Nexus 7 device is depicted in Figure 9. Hillcrest MotionEngine SmartTV Motion Client BLE Stack Screen Native BLE Client uinput Root Rights Required Nexus 7 - Device Figure 9: Motion data processing in host device A native BLE client extracts the motion data from the GATT layer and feeds them to the motion engine for processing. The motion engine detects the movement or the RCU, emulates the movement of a pointing device and feeds the data back to the operating system. For further information about the motion demonstration software, please contact your sales office. User manual CFR0012-00 Rev 2 Revision 1.0 19 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 7.4.2 BMI055 driver API ● void i2c_bmi055_init (uint16_t dev_address, uint8_t speed, uint8_t address_mode) This function Initializes I2C controller as a master for BMI055 handling. ● void i2c_bmi055_release(void) This function disables I2C controller and clock. ● uint8_t i2c_bmi055_read_byte(uint8_t addr) This function reads a single byte from BMI055. ● uint32_t i2c_bmi055_read_data(uint8_t *rd_data_ptr, uint32_t address, uint32_t size) This function reads data from BMI055 to memory position of given pointer. ● void i2c_bmi055_write_byte(uint32_t address, uint8_t wr_data) This function writes a single byte to BMI055. ● void i2c_bmi055_suspend_device(int dev_address, int low_power_mode, enum BMI055_POWER_MODE power_mode) This function puts the BMI055 device to the specified power mode. ● void i2c_bmi055_reset_device(int dev_address) This function resets the MBI055 device. 7.5 Stream functionality Stream is used for exchanging time critical data between the RCU and the host application. In order to achieve low latency data transfer needed for both audio and motion applications, stream logic bypasses GATT and ATT layers. Data rates of up to 150 kbit/s can be achieved without flooding the BLE stack. The following figure depicts the stream data flow. arch_main app_stream_fifo.pkt_fifo BLE_RF_DIAG_Handler stream_queue_more_data BLE_EVENT_Handler stream_queue_more_ data_end_of_event stream_queue_more_ data_during_tx stream_queue_data_until send_pkt_to_l2cc l2cm_get_nb_buffer_available L2CC User manual CFR0012-00 Rev 2 Figure 10: Stream software architecture Revision 1.0 20 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Function stream_queue_more_data() is periodically executed. It checks the state of the BLE (End Event or Transmission) and the availability of HW buffers by calling function l2cm_get_nb_buffer_available(). Then it creates packets and forwards them directly to L2CC. The size of the MTU used is 20 bytes and the requested connection interval is 7.5 ms which allow for an acceptable latency and adequate bit rate for the transmission of voice and motion data. 8 Software configuration The Voice and Motion RCU software is organized in a number of functional modules. Each module has a configuration file for defining its hardware configuration and feature parametrization. These configuration files are used at compilation time to include the required functionality. Since the code size is very critical in this application, special effort has been made so that neither the configuration mechanism nor the unutilized features have an impact on the code size. The configuration files are located in folder dk_apps\keil_projects\hid\remote_audio\config. The most import parameters of each file are presented in the following sections. 8.1 hw_config.h In this file the basic hardware configuration of the reference design is defined. The most important parameters are the following: ● CFG_LP_CLK: Defines whether DA14580 is clocked by XTAL32 or RCX20 ● CFG_APP_MOTION: If defined the motion feature is included ● CFG_APP_AUDIO: If defined the audio feature is included ● UART_TX_PORT, UART_RX_PORT, UART_TX_PIN, UART_RX_PIN: Pin configuration for UART interface ● I2C_SDA_PORT, I2C_SDA_PIN, I2C_SCL_PORT, I2C_SCL_PIN: Pin configuration for I2C interface ● HAS_I2C_EEPROM_STORAGE: If defined the EEPROM connected to the I2C interface will be used for storing data ● HAS_SPI_FLASH_STORAGE: If defined the FLASH memory connected to the SPI interface will be used for storing data ● NV_STORAGE_BASE_ADDR: The base address of the I2C EEPROM or SPI FLASH memory region where the data will be stored 8.2 app_kbd_config.h In this file the basic keyboard configuration of the reference design is defined. Please refer to [12] for a detailed description of the parameters available. The most important parameters are the following: ● MATRIX_SETUP: This parameter defines the Keyboard matrix which is used by the application. The default setting is 12, which corresponds to the DA14580 Reference Design. Value 16 can be used for the DA14582 Reference Design. ● ROW_SCAN_TIME: This is the Systick rate during key scanning (unit: s). When this parameter is set to a smaller value, it must be ensured that the inputs’ level (columns) settles within this time period. ● FULL_SCAN_IN_MS: This is the duration of the full scan cycle (unit: ms). This parameter should take into account the number of rows. Since 150 s are required to scan each row, the value of this parameter cannot be less than KBD_NR_OUTPUTS x 150 s. ● PARTIAL_SCAN_IN_MS: This is the duration of the partial scan cycle (unit: ms). ● KEYCODE_BUFFER_SIZE: This is the size of the buffer that holds the key scan codes that have not been processed yet. When processing is done, HID reports will be sent for all pending key events. User manual CFR0012-00 Rev 2 Revision 1.0 21 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion ● REPORT_HISTORY_ON: If defined, the device will buffer any key events that occurred while it was disconnected from the last connected host. It will report these events to the host on reconnection. ● MULTI_KEY_COMBINATIONS_ON: Enable multi-key combinations. Detection of simultaneous press of two or more keys is supported. ● MULTI_KEY_NUM_OF_KEYS: Defines the maximum number of keys for the MULTI_KEY_COMBINATIONS_ON feature ● FORCE_CONNECT_TO_HOST_ON: Enable force-connect to specific hosts using key combinations. A new host can be connected and stored to a specific position by pressing simultaneously keys “Stop” and the number key that corresponds to the selected position (“1”, 2”, “3” up to FORCE_CONNECT_NUM_OF_HOSTS). A connection to a specific host already stored to a position can be forced by pressing simultaneously “<<” and the number key that corresponds to the position. All stored hosts can be cleared by pressing simultaneously keys “Stop” and “<<”. If no host is stored, then the next host will be stored in position one. ● FORCE_CONNECT_NUM_OF_HOSTS: Maximum number of hosts for FORCE_CONNECT_TO_HOST_ON feature 8.3 app_audio439_config.h In this file the audio configuration of the reference design is defined. The most important parameters are the following: ● AUDIO_SPI_EN_PORT, AUDIO_SPI_EN_PIN, AUDIO_SPI_CLK_PORT, AUDIO_SPI_CLK_PIN, AUDIO_SPI_DO_PORT, AUDIO_SPI_DO_PIN, AUDIO_SPI_DI_PORT, AUDIO_SPI_DI_PIN: Pin configuration of the SC14439 SPI interface. ● CFG_SPI_439_BLOCK_BASED: If defined, blocks of 40 samples are read from SC14439. If not defined, samples are read one at a time. ● HAS_AUDIO_MUTE: If defined, a GPIO pin is used to control SC14439 VDD and VDDIO power supply. ● AUDIO_MUTE_PORT, AUDIO_MUTE_PIN: Pin configuration of the GPIO pin used for HAS_AUDIO_MUTE feature. ● AUDIO_MUTE_POLARITY: Pin polarity (GPIO_ACTIVE_LOW or GPIO_ACTIVE_HIGH) for the GPIO pin used for HAS_AUDIO_MUTE feature ● VDD_TURN_ON_DELAY: Defines the delay in s between the activation of the HAS_AUDIO_MUTE feature pin until VDD power is stable ● HAS_AUDIO_VDDIO_CONTROL: If defined, a separate GPIO pin is used to control SC14439 VDDIO power supply. ● AUDIO_VDDIO_CONTROL_PORT, AUDIO_VDDIO_CONTROL_PIN: Pin configuration of the GPIO pin used for HAS_AUDIO_VDDIO_CONTROL feature. ● AUDIO_VDDIO_CONTROL_POLARITY: Pin polarity (GPIO_ACTIVE_LOW or GPIO_ACTIVE_HIGH) for the GPIO pin used for HAS_AUDIO_VDDIO_CONTROL feature ● AUDIO_MIC_AMP_GAIN: Defines the gain of the SC14439 microphone amplifier. Refer to SC14439 datasheet for additional information. 8.4 app_con_fsm_config.h In this file, the configuration regarding the advertising, connection and pairing procedure is defined. The most important parameters are the following: ● APP_DFLT_DEVICE_NAME: This is the name of the device that is added in the ADV packets which are sent during Advertising. Only 16 characters of the device name fit in these packets. If the name is longer than this, the full name is added in the Scan Response packets, provided its length is up to 26 characters. User manual CFR0012-00 Rev 2 Revision 1.0 22 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion ● APP_ADV_DATA: These are the data that will be used for advertising the RCU. The default value defines the appearance as “Remote control” and advertises HID, battery and device information services. ● MAX_BOND_PEER: Maximum number of bonds that can be stored in the external storage memory. ● NV_STORAGE_BOND_SIZE: The memory size needed in the external storage memory for storing the bonding info. The calculation formula is provided in the source code of the configuration file. ● con_fsm_params: This is a structure containing all the parameters required for the operation of the state machine that handles the BLE connection procedure. The most important parameters are the following: ○ has_multi_bond: Bond to multiple hosts ○ use_pref_conn_params: Send a ConnUpdateParam request after connection completion ○ is_normally_connectable: Set NormallyConnectable mode so that RCU stays always in advertising mode when not connected to a host so that the host can connect to it without the user having to press any key of the RCU. ○ has_passcode_timeout: Enable timeout checking during PassCode entry ○ has_inactivity_timeout: Enable disconnection after a pre-defined inactivity timeout ○ has_mitm: Use MITM authentication mode ○ has_nv_rom: Use non-volatile ROM to store bonding data ○ has_white_list: If white list is used, the RCU will allow only devices which have their address added to this list to connect to it. Only hosts with public addresses can be filtered out. ○ has_virtual_white_list: If virtual white list is used the RCU will allow only devices that their address is written to this list to connect to it. The virtual white list is implemented in software. Hosts with resolvable random addresses can be filtered out. ○ unbonded_discoverable_timeout: Time in Limited Discoverable mode in ADVERTISE_ST:UNBONDED in ms (when not is_normally_connectable) ○ bonded_discoverable_timeout: Time in Limited Discoverable mode in ADVERTISE_ST:BONDED in ms ○ enc_safeguard_timeout: Time to wait for a PAIRING_REQ or ENC_REQ from the Host when BONDING is enabled in ms ○ kbd_passcode_timeout: Time in CONNECTED_NO_PAIR_ST until passcode is entered in ms (when has_passcode_timeout) ○ kbd_inactivity_timeout: Idle time in CONNECTED_ST until disconnection is requested in ms (when has_inactivity_timeout) ○ time_to_request_param_upd: Time to request update of connection parameters in msec (when use_pref_conn_params ) ○ alt_pair_disconn_time: Time to block previous host during a "host-switch" in 10 ms ○ normal_adv_int_min: Minimum advertising interval when not bonded (* 0.625 ms) ○ normal_adv_int_max: Maximum advertising interval when not bonded (* 0.625 ms) ○ fast_bonded_adv_int_min: Minimum advertising interval when bonded (* 0.625 ms) ○ fast_bonded_adv_int_max: Maximum advertising interval when bonded (* 0.625 ms) ○ slow_bonded_adv_int_min: Minimum slow advertising interval (* 0.625 ms) ○ slow_bonded_adv_int_max: Maximum slow advertising interval (* 0.625 ms) ○ preferred_conn_interval_min: Minimum preferred connection interval (* 1.25 ms) ○ preferred_conn_interval_max: Maximum preferred connection interval (* 1.25 ms) ○ preferred_conn_latency: Preferred connection latency in number of connection events skipped ○ preferred_conn_timeout: Preferred connection timeout (* 10 ms) User manual CFR0012-00 Rev 2 Revision 1.0 23 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion ○ state_update_callback: Pointer to the callback function called when the connection state has changed to connected, connection in progress, disconnected, off, passcode entry started ○ attr_update_callback: Pointer to the callback function called when bonding data are read from the non-volatile memory so that the service database is updated 9 HID database and reports The HID reports have three categories: ● Normal HID reports that report the key presses and releases of standard keys ● Consumer HID reports that report the presses and releases of the “consumer keys” ● Vendor Specific HID reports that are used for sending audio and motion data to the host and exchanging commands related to the audio application The first three reports are the same as the one used in the keyboard project. They are kept like this for the sake of simplicity and easy implementation of the full-featured keyboard. The HID reports need to be modified according to the final key layout and the functionality requirements for the final product. The vendor specific reports used for the audio are five reports of 20 bytes each, with undefined usages. ● Report_ID (4) is an output report, used by the application to control the status of the audio stream. It can issue Stream On and Stream Off commands. ● Report_ID (5) is an input report, used by the remote to signal to the host application that the PPT button has been pressed or released, as well as overflow information. ● Report_ID (6) to (8) are all input reports, used to transfer the IMA ADPCM encoded audio data to the host application. The sizes of Report_ID (4) and Report_ID (5) can be further optimized, but tests with Windows based OS showed that it is preferable to use a uniform 20 bytes size for simplicity. ● Report_ID (9) is an input report and it is used to transfer the data acquired from the gyro/accelerometer sensor. User manual CFR0012-00 Rev 2 Revision 1.0 24 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 10 Audio delay calculation Figure 11 depicts the sequence of events/actions and the various delays associated with them, when the PTT key is pressed. PTT Key Press Stream On Request Stream On Command Stream On Rcv 439_Power up 439 Configuration Read Audio data Encode Audio Data Send Audio Data 1 2 3 4 5 6 7 8 9 <10ms <1ms 2.5ms <2ms 12ms 7.5ms <3ms <0.5ms <7.5ms Figure 11: Audio initialization sequence of events Table 4: Audio initialization sequence of events Step Event/Action Duration Comments 1 PTT Key Press 12 ms It is the time required to de-bounce the key and generate a key press event. 2 Stream On Request <10 ms A HID report will be created and send over to the Host as Stream On Request. 3 Stream On Command 7.5 ms The host application will receive the Stream On Request and issue a Stream On Command if it is ready to receive audio, usually within a connection interval. 4 Stream On Command Rcv <1 ms The Stream On Command issued by the host will be received by the RCU and the audio streaming will commence. 5 439 Power up <3 ms Initially the 439 is powered up and configured. Delays are required for the power to reach the proper level and the 439 PLL to stabilize. 6 439 Configuration 2.5 ms DMA is configured and sampling of Data begins. The SWTIM is also set to hit in 2.5 ms. 7 Read Audio data 0.5 ms 80 bytes of data are read and store for further processing. 8 Encode Audio data <2 ms Data are encoded and pushed to the stream fifo. 9 Stream Audio data <7.5 ms Within the next connection interval data are sent over the air. Table 4 describes the sequence of events in the reference design. The state machine for the reference design has been kept as simple as possible. The state machine could be extended to achieve faster reaction times if needed. For example action 5 could start in parallel with action 2, steps 3 and 4 could be skipped if the assumption is made that the host will be always ready to receive audio data etc. It all depends on the capabilities of the application on the host. The actual audio latency is the sum of steps 6, 7, 8, 9 and is less than 12.5 ms if the BLE data channels are free. The sustained bandwidth required to avoid increasing the latency is equal to the encoded output rate which is 64 kbit/s. If the BLE is unable to sustain this rate due to interference or inability of the host to receive the data in this increased rate, the latency will increase until the app_stream_fifo fills up. From that point onward, packets may be dropped and the message may be corrupted. Having a large enough app_stream_fifo buffer that can hold several 100 ms of audio data and configuring the host to be re-active into dropping channels that are occupied, will ensure lossless delivery of the message. Short lasting (range of 100 ms) bandwidth drops do not cause serious issues since the DA14580 can recover by increasing the BLE data rate up to 150 kbit/s. User manual Revision 1.0 20-Mar-2015 CFR0012-00 Rev 2 25 of 40 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 11 Power consumption The following table shows the major contributors of power consumption in the existing design. Table 5: Power consumption No Part Standby Current 1 DA14580 1.6 A 2 W25X20CL 300 nA 3 SC14439 0 A 4 BMI055 5.9 A (deep suspend mode) 80 A (low power mode) Active Current Min 0.75 mA Max 5.5 mA Min 1 mA Max 10 mA 5 mA 2.3 mA Comment Maximum value is related to the use of the BLE. The standby current is measured on Extended Sleep. The Standby current is measured after issuing the Power Down command. Power is switched off in standby RCU cannot wake up in deep suspend mode. RCU can wake up from accelerometer in low power mode. Further optimization of this current may be possible. Using transistors to switch off the power in the SC14439 is considered a fundamental choice. Switching off the power in the accelerometer to prolong battery life should also be considered. This depends on the usage requirements and whether the accelerometer should automatically wake up the device, or the press of a key is required to enable the motion device. User manual CFR0012-00 Rev 2 Revision 1.0 26 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion 12 Windows 8.1 host application A Windows 8.1 demo host application and its source code are included in the reference design. It is not in the intention of this project to fully analyse the Host application, which is provided as a demo application and a starting point for further development. The following figure depicts the architecture of the host application. Figure 12: Windows 8.1 host application architecture As most of the Qt applications, most of the elements are built around the MainWindow. When the user selects a HID device to Connect a bleStart signal is emitted to the BleDevice. The BleDevice begins a block hid_read and waits for data from the device. Whenever data are received from the remote control, it will be either control data (enable/disable audio or key presses) or audio data. According to the type of data received an enableCtrl or a dataReady signal is generated back to the MainWindow. The control signal will be handled accordingly and the key press will be showed on the window or the audio receiving process will start and stop according to the contents of the enableCtrl signal. The dataReady will generate a new signalDecompress event to the Decompressor. The Decompressor will decode the data using the decodeImaAdpcm method of the AudioCodec. When the decompressor will accumulate enough data (3200 samples) it will then signal the AudioData object using the signalSamples to start reproducing the audio on the host’s soundcard. The Decompressor will also generate a guiSamples signal back to the MainWindow, for plotting and storing to a file. Data is added to the runningPlot using the addData method. Separate threads are spawned for the Decompressor, AudioData, RunningPlot and BleDevice object, namely plotThread, bleThread, playerThread and decompressionThread. Tuning their priorities may be required in less performant hardware to get a click-free audio output on the soundcard. It should be noted here that the purpose of the audio capabilities of the remote control is to have voice command capabilities rather than real-time audio transfer. Clicks and glitches that might be heard during the real time audio reproduction are not present in the final audio file. The reason is that the audio is transferred correctly but underruns may occur in the feeding of the audio card due to momentarily drop of the BLE bandwidth or the incorrect priorities on the decompression and audio output threads. Another reference design will address applications that require real time audio transfer over BLE. User manual CFR0012-00 Rev 2 Revision 1.0 27 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Appendix A GATT database Handle 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 0x000C 0x000D 0x000E 0x000F 0x0010 0x0011 0x0012 0x0013 0x0014 0x0015 0x0016 0x0017 0x0018 0x0019 0x001A 0x001B 0x001C 0x001D 0x001E 0x001F Uuid 0x2800 0x2803 0x2A00 0x2803 0x2A01 0x2803 0x2A02 0x2803 0x2A04 0x2800 0x2803 0x2A05 0x2902 0x2800 0x2803 0x2A29 0x2803 0x2A24 0x2803 0x2A26 0x2803 0x2A28 0x2803 0x2A23 0x2803 0x2A50 0x2800 0x2803 0x2A19 UuidDesc GATT Primary Service Declaration GATT Characteristic Declaration Device Name GATT Characteristic Declaration Appearance GATT Characteristic Declaration Peripheral Privacy Flag GATT Characteristic Declaration Peripheral Preferred Connection Parameters GATT Primary Service Declaration GATT Characteristic Declaration Service Changed Client Characteristic Configuration GATT Primary Service Declaration GATT Characteristic Declaration Manufacturer Name String GATT Characteristic Declaration Model Number String GATT Characteristic Declaration Firmware Revision String GATT Characteristic Declaration Software Revision String GATT Characteristic Declaration System ID GATT Characteristic Declaration PnP ID GATT Primary Service Declaration GATT Characteristic Declaration Battery Level Value 02:03:00:00:2A DA1458x RCU 02:05:00:01:2A 80:01 0A:07:00:02:2A 00 02:09:00:04:2A 06:00:10:00:1F:00:C8:00 22:0E:00:05:2A 01:00:FF:FF 00:00 02:12:00:29:2A Dialog Semi 02:14:00:24:2A DA14580 02:16:00:26:2A v_3.0.9.504 02:18:00:28:2A v_3.140.2.39 02:1A:00:23:2A 31:89:55:FF:FE:45:23:05 02:1C:00:50:2A 01:D2:00:80:05:00:01 12:1F:00:19:2A 4B User manual CFR0012-00 Rev 2 Revision 1.0 28 of 40 Properties Rd 0x02 Rd 0x02 Rd Wr 0x0A Rd 0x02 Rd Ind 0x22 Rd 0x02 Rd 0x02 Rd 0x02 Rd 0x02 Rd 0x02 Rd 0x02 Rd Nfy 0x12 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Handle 0x0020 0x0021 0x0022 0x0023 0x0024 0x0025 0x0026 0x0027 Uuid 0x2902 0x2800 0x2803 0x2A4A 0x2803 0x2A4C 0x2803 0x2A4B UuidDesc Client Characteristic Configuration GATT Primary Service Declaration GATT Characteristic Declaration HID Information GATT Characteristic Declaration HID Control Point GATT Characteristic Declaration Report Map 0x0028 0x0029 0x002A 0x002B 0x002C 0x002D 0x002E 0x002F 0x0030 0x2803 0x2A4E 0x2803 0x2A22 0x2902 0x2803 0x2A32 0x2803 0x2A4D GATT Characteristic Declaration Protocol Mode GATT Characteristic Declaration Boot Keyboard Input Report Client Characteristic Configuration GATT Characteristic Declaration Boot Keyboard Output Report GATT Characteristic Declaration Report (Input) 0x0031 0x0032 0x0033 0x0034 0x2908 0x2902 0x2803 0x2A4D Report Reference Client Characteristic Configuration GATT Characteristic Declaration Report (Output) 0x0035 0x0036 0x2908 0x2803 Report Reference GATT Characteristic Declaration Value 00:00 Properties 02:23:00:4A:2A 00:01:00:01 04:25:00:4C:2A Rd 0x02 02:27:00:4B:2A Wwr 0x04 05:01:09:06:A1:01:85:01:05:07:19:E0:29:E7:15:00:2 5:01:75:01:95:08:81:02:95:01:75:08:81:01:95:05:75: 01:05:08:19:01:29:05:91:02:95:01:75:03:91:01:95:06 :75:08:15:00:25:65:05:07:19:00:29:65:81:00:C0:05:0 C:09:01:A1:01:85:03:15:00:25:01:75:01:95:08:09:B5 :09:B6:09:B7:09:B8:09:CD:09:E2:09:E9:09:EA:81:02 :0A:83:01:0A:8A:01:0A:92:01:0A:94:01:0A:21:02:1A: 23:02:2A:25:02:81:02:0A:26:02:0A:27:02:0A:2A:02:0 9:40:09:30:09:9A:09:46:95:07:81:02:95:01:81:01:C0: 06:00:FF:09:01:A1:02:85:04:06:00:FF:19:00:29:00:9 5:14:75:08:15:00:26:FF:00:91:20:85:05:06:00:FF:19: 00:29:00:95:14:75:08:15:00:26:FF:00:81:20:85:06:0 6:00:FF:19:00:29:00:95:14:75:08:15:00:26:FF:00:81: 20:85:07:06:00:FF:19:00:29:00:75:08:95:14:15:00:2 6:FF:00:81:20:85:08:06:00:FF:19:00:29:00:95:14:75: 08:15:00:26:FF:00:81:20:85:09:06:00:FF:19:00:29:0 0:95:14:75:08:15:00:26:FF:00:81:20:C0 Rd 0x02 06:29:00:4E:2A 01 12:2B:00:22:2A Rd Wwr 0x06 Rd Nfy 0x12 00:00 0E:2E:00:32:2A 1A:30:00:4D:2A Rd Wwr Wr 0x0E 01:01 01:00 Rd Wr Nfy 0x1A 0E:34:00:4D:2A 02:02 1A:37:00:4D:2A Rd Wwr Wr 0x0E User manual CFR0012-00 Rev 2 Revision 1.0 29 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Handle 0x0037 Uuid UuidDesc 0x2A4D Report (Input) 0x0038 0x0039 0x003A 0x003B 0x2908 0x2902 0x2803 0x2A4D Report Reference Client Characteristic Configuration GATT Characteristic Declaration Report (Output) 0x003C 0x003D 0x003E 0x2908 0x2803 0x2A4D Report Reference GATT Characteristic Declaration Report (Input) 0x003F 0x0040 0x0041 0x0042 0x2908 0x2902 0x2803 0x2A4D Report Reference Client Characteristic Configuration GATT Characteristic Declaration Report (Input) 0x0043 0x0044 0x0045 0x0046 0x2908 0x2902 0x2803 0x2A4D Report Reference Client Characteristic Configuration GATT Characteristic Declaration Report (Input) 0x0047 0x0048 0x0049 0x004A 0x2908 0x2902 0x2803 0x2A4D Report Reference Client Characteristic Configuration GATT Characteristic Declaration Report (Input) 0x004B 0x004C 0x004D 0x004E 0x2908 0x2902 0x2803 0x2A4D Report Reference Client Characteristic Configuration GATT Characteristic Declaration Report (Input) 0x004F 0x0050 0x2908 0x2902 Report Reference Client Characteristic Configuration Value 03:01 01:00 0E:3B:00:4D:2A 04:02 1A:3E:00:4D:2A 05:01 01:00 1A:42:00:4D:2A 06:01 01:00 1A:46:00:4D:2A 07:01 01:00 1A:4A:00:4D:2A 08:01 01:00 1A:4A:00:4D:2A 09:01 01:00 Properties Rd Wr Nfy 0x1A Rd Wwr Wr 0x0E Rd Wr Nfy 0x1A Rd Wr Nfy 0x1A Rd Wr Nfy 0x1A Rd Wr Nfy 0x1A Rd Wr Nfy 0x1A User manual CFR0012-00 Rev 2 Revision 1.0 30 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Appendix B HID report map Report declaration HID_USAGE_PAGE (HID_USAGE_PAGE_GENERIC_DESKTOP), HID_USAGE(HID_GEN_DESKTOP_USAGE_KEYBOARD), HID_COLLECTION (HID_APPLICATION), HID_REPORT_ID (0x01), HID_USAGE_PAGE (HID_USAGE_PAGE_KEY_CODES), HID_USAGE_MIN_8 (0xE0), HID_USAGE_MAX_8 (0xE7), HID_LOGICAL_MIN_8 (0x00), HID_LOGICAL_MAX_8 (0x01), HID_REPORT_SIZE (0x01), HID_REPORT_COUNT (0x08), HID_INPUT(HID_DATA_BIT | HID_VAR_BIT | HID_ABS_BIT), HID_REPORT_COUNT (0x01), HID_REPORT_SIZE (0x08), HID_INPUT(HID_CONST_BIT), HID_REPORT_COUNT (0x05), HID_REPORT_SIZE (0x01), HID_USAGE_PAGE (HID_USAGE_PAGE_LEDS), HID_USAGE_MIN_8 (0x01), HID_USAGE_MAX_8 (0x05), HID_OUTPUT (HID_DATA_BIT | HID_VAR_BIT | HID_ABS_BIT), HID_REPORT_COUNT (0x01), HID_REPORT_SIZE (0x03), HID_OUTPUT (HID_CONST_BIT), HID_REPORT_COUNT (0x06), HID_REPORT_SIZE (0x08), HID_LOGICAL_MIN_8 (0x00), HID_LOGICAL_MAX_8 (0x65), HID_USAGE_PAGE (HID_USAGE_PAGE_KEY_CODES), HID_USAGE_MIN_8 (0x00), HID_USAGE_MAX_8 (0x65), HID_INPUT(HID_DATA_BIT | HID_ARY_BIT), HID_END_COLLECTION, HID_USAGE_PAGE (HID_USAGE_PAGE_CONSUMER), HID_USAGE(HID_CONSUMER_USAGE_CONSUMER_CONTROL), HID_COLLECTION (HID_APPLICATION), Comment Input: (Data, Variable, Absolute) ; Modifier byte Input: (Constant) ; Reserved byte Output: (Data, Variable, Absolute) ; LED report Output: (Constant); LED report padding Input: (Data, Array) ; Key arrays (6 bytes) User manual CFR0012-00 Rev 2 Revision 1.0 31 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Report declaration HID_REPORT_ID (0x03), HID_LOGICAL_MIN_8 (0x00), HID_LOGICAL_MAX_8 (0x01), HID_REPORT_SIZE (0x01), HID_REPORT_COUNT (0x08), HID_USAGE(0xB5), HID_USAGE(0xB6), HID_USAGE(0xB7), HID_USAGE(0xB8), HID_USAGE(0xCD), HID_USAGE(0xE2), HID_USAGE(0xE9), HID_USAGE(0xEA), HID_INPUT(HID_DATA_BIT | HID_VAR_BIT | HID_ABS_BIT | HID_NWRP_BIT | HID_LIN_BIT | HID_PREF_BIT | HID_NNUL_BIT ), HID_USAGE16 (0x83, 0x01), HID_USAGE16 (0x8A, 0x01), HID_USAGE16 (0x92, 0x01), HID_USAGE16 (0x94, 0x01), HID_USAGE16 (0x21, 0x02), HID_USAGE_MIN_16 (0x23, 0x02), HID_USAGE_MAX_16 (0x25, 0x02), HID_INPUT(HID_DATA_BIT | HID_VAR_BIT | HID_ABS_BIT | HID_NWRP_BIT | HID_LIN_BIT | HID_PREF_BIT | HID_NNUL_BIT), HID_USAGE16 (0x26, 0x02), HID_USAGE16 (0x27, 0x02), HID_USAGE16 (0x2A, 0x02), HID_USAGE(0x40), HID_USAGE(0x30), HID_USAGE(0x9A), HID_USAGE(0x46), HID_REPORT_COUNT (0x07), HID_INPUT(HID_DATA_BIT | HID_VAR_BIT | HID_ABS_BIT | HID_NWRP_BIT | HID_LIN_BIT | HID_PREF_BIT | HID_NNUL_BIT), HID_REPORT_COUNT (0x01), HID_INPUT(HID_CONST_BIT | HID_ARY_BIT | HID_ABS_BIT), HID_END_COLLECTION, HID_USAGE_PAGE_VENDOR_DEFINED, HID_USAGE(0x01), HID_COLLECTION (HID_LOGICAL), Comment Usage (Scan Next Track) Usage (Scan Previous Track) Usage (Stop) Usage (Eject) Usage (Play/Pause) Usage (Mute) Usage (Volume Increment) Usage (Volume Decrement) Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) Usage (AL Consumer Control Configuration) Usage (AL Email Reader) Usage (AL Calculator) Usage (AL Local Machine Browser) Usage (AC Search) Usage Minimum (AC Home) Usage Maximum (AC Forward) Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) Usage (AC Stop) Usage (AC Refresh) Usage (AC Bookmarks) Usage (Menu) Usage (Power) Usage (Media select home) Usage (Menu escape) Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) Input (Cnst,Ary,Abs) User manual CFR0012-00 Rev 2 Revision 1.0 32 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Report declaration HID_REPORT_ID (0x04), HID_USAGE_PAGE_VENDOR_DEFINED, HID_USAGE_MIN_8 (0x00), HID_USAGE_MAX_8 (0x00), HID_REPORT_COUNT (0x14), HID_REPORT_SIZE (0x08), HID_LOGICAL_MIN_8 (0x00), HID_LOGICAL_MAX_16(0xff, 0x00), HID_OUTPUT (HID_DATA_BIT | HID_ARY_BIT | HID_ABS_BIT | HID_NPREF_BIT), HID_REPORT_ID (0x05), HID_USAGE_PAGE_VENDOR_DEFINED, HID_USAGE_MIN_8 (0x00), HID_USAGE_MAX_8 (0x00), HID_REPORT_COUNT (0x14), HID_REPORT_SIZE (0x08), HID_LOGICAL_MIN_8 (0x00), HID_LOGICAL_MAX_16(0xff, 0x00), HID_INPUT(HID_DATA_BIT | HID_ARY_BIT | HID_ABS_BIT | HID_NPREF_BIT), HID_REPORT_ID (0x06), HID_USAGE_PAGE_VENDOR_DEFINED, HID_USAGE_MIN_8 (0x00), HID_USAGE_MAX_8 (0x00), HID_REPORT_COUNT (0x14), HID_REPORT_SIZE (0x08), HID_LOGICAL_MIN_8 (0x00), HID_LOGICAL_MAX_16(0xff, 0x00), HID_INPUT(HID_DATA_BIT | HID_ARY_BIT | HID_ABS_BIT | HID_NPREF_BIT), HID_REPORT_ID (0x07), HID_USAGE_PAGE_VENDOR_DEFINED, HID_USAGE_MIN_8 (0x00), HID_USAGE_MAX_8 (0x00), HID_REPORT_SIZE (0x08), HID_REPORT_COUNT (0x14), HID_LOGICAL_MIN_8 (0x00), HID_LOGICAL_MAX_16(0xff, 0x00), HID_INPUT(HID_DATA_BIT | HID_ARY_BIT | HID_ABS_BIT | HID_NPREF_BIT), HID_REPORT_ID (0x08), HID_USAGE_PAGE_VENDOR_DEFINED, HID_USAGE_MIN_8 (0x00), HID_USAGE_MAX_8 (0x00), HID_REPORT_COUNT (0x14), HID_REPORT_SIZE (0x08), HID_LOGICAL_MIN_8 (0x00), HID_LOGICAL_MAX_16(0xff, 0x00), HID_INPUT(HID_DATA_BIT | HID_ARY_BIT | HID_ABS_BIT | HID_NPREF_BIT), User manual Revision 1.0 CFR0012-00 Rev 2 33 of 40 Comment Output (Data,Ary,Abs,NPrf) Input (Data,Ary,Abs,NPrf) Input (Data,Ary,Abs,NPrf) Input (Data,Ary,Abs,NPrf) Input (Data,Ary,Abs,NPrf) 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Report declaration HID_REPORT_ID (0x09), HID_USAGE_PAGE_VENDOR_DEFINED, HID_USAGE_MIN_8 (0x00), HID_USAGE_MAX_8 (0x00), HID_REPORT_COUNT (0x14), HID_REPORT_SIZE (0x08), HID_LOGICAL_MIN_8 (0x00), HID_LOGICAL_MAX_16(0xff, 0x00), HID_INPUT(HID_DATA_BIT | HID_ARY_BIT | HID_ABS_BIT | HID_NPREF_BIT), HID_END_COLLECTION Comment Input (Data,Ary,Abs,NPrf) User manual CFR0012-00 Rev 2 Revision 1.0 34 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Appendix C DA14580 reference design schematics The schematics of the DA14580 Voice and Motion Remote Control are shown in Figure 13 and Figure 14 for your reference. Always check for updated schematics in the support web site. Figure 13: DA14580 and gyro/accelerometer schematic diagram User manual CFR0012-00 Rev 2 Revision 1.0 35 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Figure 14: DA14580 key-matrix and SC14439 schematic diagram User manual CFR0012-00 Rev 2 Revision 1.0 36 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Appendix D DA14582 reference design schematics The schematics of the DA14582 Voice and Motion Remote Control are shown in Figure 15 and Figure 16 for your reference. Always check for updated schematics in the support site. Figure 15: DA14582 and gyro/accelerometer schematic diagram User manual CFR0012-00 Rev 2 Revision 1.0 37 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Figure 16: DA14582 key-matrix and gyro/accelerometer schematic diagram User manual CFR0012-00 Rev 2 Revision 1.0 38 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Revision history Revision 1.0 Date 20-Mar-2015 Description Initial version User manual CFR0012-00 Rev 2 Revision 1.0 39 of 40 20-Mar-2015 © 2015 Dialog Semiconductor UM-B-042 DA14580/582 Remote control with voice and motion Status definitions Status DRAFT APPROVED or unmarked Definition The content of this document is under review and subject to formal approval, which may result in modifications or additions. The content of this document has been approved for publication. Disclaimer Information in this document is believed to be accurate and reliable. However, Dialog Semiconductor does not give any representations or warranties, expressed or implied, as to the accuracy or completeness of such information. Dialog Semiconductor furthermore takes no responsibility whatsoever for the content in this document if provided by any information source outside of Dialog Semiconductor. Dialog Semiconductor reserves the right to change without notice the information published in this document, including without limitation the specification and the design of the related semiconductor products, software and applications. Applications, software, and semiconductor products described in this document are for illustrative purposes only. Dialog Semiconductor makes no representation or warranty that such applications, software and semiconductor products will be suitable for the specified use without further testing or modification. Unless otherwise agreed in writing, such testing or modification is the sole responsibility of the customer and Dialog Semiconductor excludes all liability in this respect. Customer notes that nothing in this document may be construed as a license for customer to use the Dialog Semiconductor products, software and applications referred to in this document. Such license must be separately sought by customer with Dialog Semiconductor. All use of Dialog Semiconductor products, software and applications referred to in this document are subject to Dialog Semiconductor’s Standard Terms and Conditions of Sale, unless otherwise stated. © Dialog Semiconductor. All rights reserved. RoHS Compliance Dialog Semiconductor complies to European Directive 2001/95/EC and from 2 January 2013 onwards to European Directive 2011/65/EU concerning Restriction of Hazardous Substances (RoHS/RoHS2). Dialog Semiconductor’s statement on RoHS can be found on the customer portal https://support.diasemi.com/. RoHS certificates from our suppliers are available on request. Contacting Dialog Semiconductor United Kingdom (Headquarters) Dialog Semiconductor PLC Phone: +44 1793 757700 Germany Dialog Semiconductor GmbH Phone: +49 7021 805-0 The Netherlands Dialog Semiconductor B.V. Phone: +31 73 640 8822 Email: enquiry@diasemi.com User manual North America Dialog Semiconductor Inc. Phone: +1 408 845 8500 Japan Dialog Semiconductor K. K. Phone: +81 3 5425 4567 Taiwan Dialog Semiconductor Taiwan Phone: +886 281 786 222 Web site: www.dialog-semiconductor.com Revision 1.0 CFR0012-00 Rev 2 40 of 40 Singapore Dialog Semiconductor Singapore Phone: +65 64 849929 China Dialog Semiconductor China Phone: +86 21 5178 2561 Korea Dialog Semiconductor Korea Phone: +82 2 3469 8291 20-Mar-2015 © 2015 Dialog Semiconductor
更多简介内容

评论

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人消费电子

$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })