Ulta Low Power I2C Multi-Sensor: Capacitive Touch, Magnetic Field & Inductive Proximity.

Dependencies:   IQS620DisplayTerminal IQS62x mbed

Fork of IQS620_HelloWorld by Azq Dev

Hello World! From Azoteq's IQS620 Ultra Low Power Multi-Sensor

This is an mbed hardware demo program for the Azoteq IQS620 ultra low power multisensor.

More details on the IQS620 (and verified mbed boards) on these component pages:

Components / IQS620A
Ultra low power sensor for magnetic field, capacitive touch and inductive proximity. Empowers next-generation user interfaces.

Low Cost Evaluation Board For Azoteq IQS620A ultra low power sensor for magnetic field, capacitance, inductive proximity and temperature. Empowers next-generation user interfaces.


/media/uploads/AzqDev/iqs620-mbed-lpc1768-azoteq-touch-magnetic-inductive-temperature-sensor.gif
IQS620 Eval Kit board Connected to mbed LPC1768 board.

Files at this revision

API Documentation at this revision

Comitter:
AzqDev
Date:
Fri May 12 16:33:08 2017 +0000
Parent:
5:857c78cf506d
Child:
7:7abb59b94800
Commit message:
Added IQS620_Init.h processing

Changed in this revision

IQS620_Init/IQS620_Init.cpp Show annotated file Show diff for this revision Revisions of this file
IQS620_Init/IQS620_Init.h Show annotated file Show diff for this revision Revisions of this file
IQS62x.lib Show annotated file Show diff for this revision Revisions of this file
deviceType.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IQS620_Init/IQS620_Init.cpp	Fri May 12 16:33:08 2017 +0000
@@ -0,0 +1,97 @@
+#include "IQS62x.h"
+
+// Function to configure/initialize the IQS624
+// Uses the configuration data provided in "IQS624_Init.h"
+// The file "IQS624_Init.h" can be created/exported by the Azoteq software tools
+// The included version of "IQS624_Init.h" is a robust demo configuration
+// More info on IQS624: http://www.azoteq.com/products/proxfusion/iqs624?mbed
+
+#include "IQS620_Init.h"
+
+void IQS62xIO::configure() {
+
+/* Change the Prox Sensor Settings 0 */
+/* Memory Map Position 0x40 - 0x4B */
+  writeRegister( 0x40,  PXS_SETTINGS0_0     );
+  writeRegister( 0x41,  PXS_SETTINGS0_1     );
+  writeRegister( 0x42,  PXS_SETTINGS0_2     );      
+  writeRegister( 0x43,  PXS_SETTINGS0_3     );
+  writeRegister( 0x44,  PXS_SETTINGS0_4     );
+  writeRegister( 0x45,  PXS_SETTINGS0_5     );
+  writeRegister( 0x46,  PXS_SETTINGS0_6     );     
+  writeRegister( 0x47,  PXS_SETTINGS0_7     );
+  writeRegister( 0x48,  PXS_SETTINGS0_8     );
+  writeRegister( 0x49,  PXS_SETTINGS0_9     );     
+  writeRegister( 0x4a,  PXS_SETTINGS0_10    );     
+  writeRegister( 0x4b,  PXS_SETTINGS0_11    );     
+
+/* Change the Prox Sensor Settings 1 */
+/* Memory Map Position 0x50 - 0x57 */
+  writeRegister( 0x50,  PXS_SETTINGS1_0  );
+  writeRegister( 0x51,  PXS_SETTINGS1_1  );
+  writeRegister( 0x52,  PXS_SETTINGS1_2  );
+  writeRegister( 0x53,  PXS_SETTINGS1_3  );
+  writeRegister( 0x54,  PXS_SETTINGS1_4  );
+  writeRegister( 0x55,  PXS_SETTINGS1_5  );
+  writeRegister( 0x56,  PXS_SETTINGS1_6  );
+  writeRegister( 0x57,  PXS_SETTINGS1_7  );
+  
+/* Change the Prox UI Settings */
+/* Memory Map Position 0x60 - 0x66 */
+  writeRegister( 0x60,  PXS_UI_SETTINGS_0    );
+  writeRegister( 0x61,  PXS_UI_SETTINGS_1    );
+  writeRegister( 0x62,  PXS_UI_SETTINGS_2    );
+  writeRegister( 0x63,  PXS_UI_SETTINGS_3    );
+  writeRegister( 0x64,  PXS_UI_SETTINGS_4    );
+  writeRegister( 0x65,  PXS_UI_SETTINGS_5    );
+  writeRegister( 0x66,  PXS_UI_SETTINGS_6    );
+
+/* Change the SAR UI Settings */
+/* Memory Map Position 0x70 - 0x75 */
+  writeRegister( 0x70,  SAR_UI_SETTINGS_0    );
+  writeRegister( 0x71,  SAR_UI_SETTINGS_1    );
+  writeRegister( 0x72,  SAR_UI_SETTINGS_2    );
+  writeRegister( 0x73,  SAR_UI_SETTINGS_3    );
+  writeRegister( 0x74,  SAR_UI_SETTINGS_4    );
+  writeRegister( 0x75,  SAR_UI_SETTINGS_5    );
+  
+/* Change the Metal Detect UI Settings */
+/* Memory Map Position 0x80 - 0x83 */
+  writeRegister( 0x80,  METAL_DETECT_UI_SETTINGS_0    );
+  writeRegister( 0x81,  METAL_DETECT_UI_SETTINGS_1    );
+  writeRegister( 0x82,  METAL_DETECT_UI_SETTINGS_2    );
+  writeRegister( 0x83,  METAL_DETECT_UI_SETTINGS_3    );
+
+/* Change the HALL Sensor Settings */
+/* Memory Map Position 0x90 - 0x93 */
+  writeRegister( 0x90,  HALL_SENSOR_SETTINGS_0    );
+  writeRegister( 0x91,  HALL_SENSOR_SETTINGS_1    );
+  writeRegister( 0x92,  HALL_SENSOR_SETTINGS_2    );
+  writeRegister( 0x93,  HALL_SENSOR_SETTINGS_3    );
+
+/* Change the HALL Switch UI Settings */
+/* Memory Map Position 0xA0 - 0xA2 */
+  writeRegister( 0xa0,  HALL_UI_SETTINGS_0    );
+  writeRegister( 0xa1,  HALL_UI_SETTINGS_1    );
+  writeRegister( 0xa2,  HALL_UI_SETTINGS_2    );
+
+/* Change the Temperature UI Settings */
+/* Memory Map Position 0xC0 - 0xC3 */
+  writeRegister( 0xc0,  TEMP_UI_SETTINGS_0    );
+  writeRegister( 0xc1,  TEMP_UI_SETTINGS_1    );
+  writeRegister( 0xc2,  TEMP_UI_SETTINGS_2    );
+  writeRegister( 0xc3,  TEMP_UI_SETTINGS_3    );
+
+/* Change the Device & PMU Settings */
+/* Memory Map Position 0xD0 - 0xD7 */
+  writeRegister( 0xd0,  SYSTEM_SETTINGS        );
+  writeRegister( 0xd1,  ACTIVE_CHS             );            
+  writeRegister( 0xd2,  PMU_SETTINGS           );
+  writeRegister( 0xd3,  REPORT_RATES_TIMINGS_0 );    
+  writeRegister( 0xd4,  REPORT_RATES_TIMINGS_1 );
+  writeRegister( 0xd5,  REPORT_RATES_TIMINGS_2 );
+  writeRegister( 0xd6,  GLOBAL_EVENT_MASK      );
+  writeRegister( 0xd7,  PWM_DUTY_CYCLE         );
+
+}
+// end of IQS624_Init.cpp
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IQS620_Init/IQS620_Init.h	Fri May 12 16:33:08 2017 +0000
@@ -0,0 +1,95 @@
+/*
+* This file contains all the necessary settings for the IQS620 and this file can
+* be changed from the GUI or edited here
+* File:   IQS620_init.h
+* Author: Azoteq
+*/
+
+#ifndef IQS620_INIT_H
+#define IQS620_INIT_H
+
+/* Change the Prox Sensor Settings 0 */
+/* Memory Map Position 0x40 - 0x4F */
+#define PXS_SETTINGS0_0                     0x01
+#define PXS_SETTINGS0_1                     0x02
+#define PXS_SETTINGS0_2                     0x03
+#define PXS_SETTINGS0_3                     0x57
+#define PXS_SETTINGS0_4                     0x57
+#define PXS_SETTINGS0_5                     0x1F
+#define PXS_SETTINGS0_6                     0x58
+#define PXS_SETTINGS0_7                     0xD0
+#define PXS_SETTINGS0_8                     0x10
+#define PXS_SETTINGS0_9                     0x06
+#define PXS_SETTINGS0_10                        0x06
+#define PXS_SETTINGS0_11                        0x06
+
+/* Change the Prox Sensor Settings 1 */
+/* Memory Map Position 0x50 - 0x59 */
+#define PXS_SETTINGS1_0                     0x00
+#define PXS_SETTINGS1_1                     0x01
+#define PXS_SETTINGS1_2                     0xD1
+#define PXS_SETTINGS1_3                     0xA0
+#define PXS_SETTINGS1_4                     0xAA
+#define PXS_SETTINGS1_5                     0x42
+#define PXS_SETTINGS1_6                     0x03
+#define PXS_SETTINGS1_7                     0x0C
+
+/* Change the Prox UI Settings */
+/* Memory Map Position 0x60 - 0x68 */
+#define PXS_UI_SETTINGS_0                   0x14
+#define PXS_UI_SETTINGS_1                   0x28
+#define PXS_UI_SETTINGS_2                   0x14
+#define PXS_UI_SETTINGS_3                   0x28
+#define PXS_UI_SETTINGS_4                   0x14
+#define PXS_UI_SETTINGS_5                   0x28
+#define PXS_UI_SETTINGS_6                   0x28
+
+/* Change the SAR UI Settings */
+/* Memory Map Position 0x70 - 0x75 */
+#define SAR_UI_SETTINGS_0                   0x14
+#define SAR_UI_SETTINGS_1                   0x28
+#define SAR_UI_SETTINGS_2                   0x05
+#define SAR_UI_SETTINGS_3                   0x14
+#define SAR_UI_SETTINGS_4                   0x28
+#define SAR_UI_SETTINGS_5                   0x28
+
+/* Change the Metal Detect UI Settings */
+/* Memory Map Position 0x80 - 0x83 */
+#define METAL_DETECT_UI_SETTINGS_0              0xA2
+#define METAL_DETECT_UI_SETTINGS_1              0x0A
+#define METAL_DETECT_UI_SETTINGS_2              0x14
+#define METAL_DETECT_UI_SETTINGS_3              0x28
+
+/* Change the HALL Sensor Settings */
+/* Memory Map Position 0x90 - 0x93 */
+#define HALL_SENSOR_SETTINGS_0              0x03
+#define HALL_SENSOR_SETTINGS_1              0x50
+#define HALL_SENSOR_SETTINGS_2              0x30
+#define HALL_SENSOR_SETTINGS_3              0x48
+
+/* Change the HALL Switch UI Settings */
+/* Memory Map Position 0xA0 - 0xA2 */
+#define HALL_UI_SETTINGS_0                  0x00
+#define HALL_UI_SETTINGS_1                  0x19
+#define HALL_UI_SETTINGS_2                  0x19
+
+/* Change the Temperature UI Settings */
+/* Memory Map Position 0xC0 - 0xC3 */
+#define TEMP_UI_SETTINGS_0                  0x00
+#define TEMP_UI_SETTINGS_1                  0x08
+#define TEMP_UI_SETTINGS_2                  0x79
+#define TEMP_UI_SETTINGS_3                  0xFF
+
+/* Change the Device & PMU Settings */
+/* Memory Map Position 0xD0 - 0xD7 */
+#define SYSTEM_SETTINGS                     0x08
+#define ACTIVE_CHS                          0x3F
+#define PMU_SETTINGS                        0x03
+#define REPORT_RATES_TIMINGS_0              0x10
+#define REPORT_RATES_TIMINGS_1              0x64
+#define REPORT_RATES_TIMINGS_2              0x0A
+#define REPORT_RATES_TIMINGS_3              0x14
+#define GLOBAL_EVENT_MASK                   0x00
+#define PWM_DUTY_CYCLE                  0x00
+
+#endif  /* IQS620_INIT_H */
--- a/IQS62x.lib	Fri May 12 05:11:12 2017 +0000
+++ b/IQS62x.lib	Fri May 12 16:33:08 2017 +0000
@@ -1,1 +1,1 @@
-https://mbed.org/teams/Azoteq/code/IQS62x/#7c2666dfbc9a
+https://mbed.org/teams/Azoteq/code/IQS62x/#4d6d1da5bd31
--- a/deviceType.h	Fri May 12 05:11:12 2017 +0000
+++ b/deviceType.h	Fri May 12 16:33:08 2017 +0000
@@ -1,2 +1,5 @@
-// device type
-#define DEVICE_TYPE_IQS620 1
\ No newline at end of file
+// device type - not used at the moment
+#define DEVICE_TYPE_IQS620 1
+
+// used by IQS62x lib when we want to override the simple configure() function
+#define OVERRIDE_CONFIGURE 1
\ No newline at end of file
--- a/main.cpp	Fri May 12 05:11:12 2017 +0000
+++ b/main.cpp	Fri May 12 16:33:08 2017 +0000
@@ -44,7 +44,7 @@
     wait(3);
     iqs62x.configure(); // configure the IC
     while(1) {
-        iqs62x.readAll(); // read all the registers
+        iqs62x.readIqsRegisters(0,NUMBER_OF_REGISTERS); // read all the registers
         terminal.showStatus(iqs62x.I2Cspeed,iqs62x.I2CErrorCount); // show heading and number of I2C errors
         terminal.showRegisters(iqs62x.registers); // show IQS62x registers
     }