Ultra Low Power (5uA) 2D Rotating Magnetic Angle Sensor + Touch + Inductive Proximity (Metal Detect)

Dependencies:   IQS62x IQSDisplayTerminal mbed

IQS624 Hello World

Ultra Low Power (5uA) I2C ProxFusion™ sensor for 2D Magnetic Angle + Touch + Proximity

/media/uploads/AzqDev/iqs624-and-lpc1768-tiny.gif
IQS624 connected to mbed LPC1768. The five wires are - 2x I2C, 2x Power, 1x RDY.
You can get get a low cost (<$10) evaluation kit containing the small board shown above (cables & LPC1768 not included) from Mouser - http://bit.ly/IQS624-Eval-Kit-Mouser

IQS624 Information

Azoteq IQS624 is an ultra low power (5uA) I2C sensor for 2D Rotating Magnetic Fields, Capactive Touch and Inductive Proximity.
Designed for next generation user interfaces.

Data sheet & eval kit info: http://www.azoteq.com/products/proxfusion/iqs624?mbed

IQS624 mbed Component Link

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

IQS624 Pinout

/media/uploads/AzqDev/iqs624-5-pinout-for-i2c-ultra-low-power-sensor-with-2d-magnetic-angle-capacitive-touch-inductive.gif

IQS624 Data Sheet & Evaluation Kit Information


http://www.azoteq.com/products/proxfusion/iqs624?mbed

IQS624 Interconnection

/media/uploads/AzqDev/iqs624-3-connect-mbed-i2c-ultra-low-power-sensor-with-2d-magnetic-angle-capacitive-touch.gif
/media/uploads/AzqDev/iqs624-and-teensy-tiny.gif
IQS624 connected to mbed Teensy 3.1 (actually Teensy 3.2) using 5 wires - 2x I2C, 2x Power, 1x RDY.

IQS624 YouTube Links


IQS624 1-minute YouTube video: http://bit.ly/IQS624Video

ProxFusion for active pens: https://youtu.be/tUImswNPQY4

Files at this revision

API Documentation at this revision

Comitter:
AzqDev
Date:
Fri May 12 05:02:51 2017 +0000
Parent:
10:6fc446a71987
Child:
12:a11d7e10f39c
Commit message:
added deviceType.h

Changed in this revision

IQS624_Init/IQS624_Init.cpp Show annotated file Show diff for this revision Revisions of this file
IQS624_Init/IQS624_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/IQS624_Init/IQS624_Init.cpp	Fri May 12 05:02:51 2017 +0000
@@ -0,0 +1,60 @@
+#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 "IQS624_Init.h"
+
+void IQS62xIO::configure() {
+
+/* Change the Prox Sensor Settings */
+/* Memory Map Position 0x40 - 0x49 */
+  writeRegister( 0x40,  PXS_SETTINGS_0     );
+  writeRegister( 0x41,  PXS_SETTINGS_1     );
+  writeRegister( 0x42,  PXS_SETTINGS_2     );      
+  writeRegister( 0x43,  PXS_SETTINGS_3     );
+  writeRegister( 0x44,  PXS_SETTINGS_4     );
+  writeRegister( 0x45,  PXS_SETTINGS_5     );
+  writeRegister( 0x46,  PXS_SETTINGS_6     );     
+  writeRegister( 0x47,  PXS_SETTINGS_7     );
+  writeRegister( 0x48,  PXS_SETTINGS_8     );
+  writeRegister( 0x49,  PXS_SETTINGS_9     );     
+
+/* Change the Prox UI Settings */
+/* Memory Map Position 0x50 - 0x54 */
+  writeRegister( 0x50,  PXS_UI_SETTINGS_0  );
+  writeRegister( 0x51,  PXS_UI_SETTINGS_1  );
+  writeRegister( 0x52,  PXS_UI_SETTINGS_2  );
+  writeRegister( 0x53,  PXS_UI_SETTINGS_3  );
+  writeRegister( 0x54,  PXS_UI_SETTINGS_4  );
+
+/* Change the HALL Sensor Settings */
+/* Memory Map Position 0x70 - 0x7A */
+  writeRegister( 0x70,  HALL_SETTINGS_0    );
+  writeRegister( 0x71,  HALL_SETTINGS_1    );
+  writeRegister( 0x72,  HALL_SETTINGS_2    );
+  writeRegister( 0x73,  HALL_SETTINGS_3    );
+  writeRegister( 0x74,  HALL_SETTINGS_4    );
+  writeRegister( 0x75,  HALL_SETTINGS_5    );
+  writeRegister( 0x76,  HALL_SETTINGS_6    );
+  writeRegister( 0x77,  HALL_SETTINGS_7    );
+  writeRegister( 0x78,  HALL_SETTINGS_8    );
+  writeRegister( 0x79,  HALL_SETTINGS_9    );
+  writeRegister( 0x7a,  HALL_SETTINGS_10   );           
+
+/* 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,  REPORT_RATES_TIMINGS_3 );
+  writeRegister( 0xd7,  REPORT_RATES_TIMINGS_4 );
+
+}
+// end of IQS624_Init.cpp
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IQS624_Init/IQS624_Init.h	Fri May 12 05:02:51 2017 +0000
@@ -0,0 +1,57 @@
+/*
+* This file contains all the necessary settings for the IQS624 and this file can
+* be changed from the GUI or edited here
+* File:   IQS624_init.h
+* Author: Azoteq
+*/
+
+#ifndef IQS624_INIT_H
+#define IQS624_INIT_H
+
+/* Change the Prox Sensor Settings */
+/* Memory Map Position 0x40 - 0x49 */
+#define PXS_SETTINGS_0                      0x01
+#define PXS_SETTINGS_1                      0x02
+#define PXS_SETTINGS_2                      0x5A
+#define PXS_SETTINGS_3                      0x10
+#define PXS_SETTINGS_4                      0x50
+#define PXS_SETTINGS_5                      0x00
+#define PXS_SETTINGS_6                      0xDA
+#define PXS_SETTINGS_7                      0x62
+#define PXS_SETTINGS_8                      0x47
+#define PXS_SETTINGS_9                      0x4D
+
+/* Change the Prox UI Settings */
+/* Memory Map Position 0x50 - 0x54 */
+#define PXS_UI_SETTINGS_0                   0x16
+#define PXS_UI_SETTINGS_1                   0x20
+#define PXS_UI_SETTINGS_2                   0x33
+#define PXS_UI_SETTINGS_3                   0x69
+#define PXS_UI_SETTINGS_4                   0x28
+
+/* Change the HALL Sensor Settings */
+/* Memory Map Position 0x70 - 0x7A */
+#define HALL_SETTINGS_0                     0x04
+#define HALL_SETTINGS_1                     0x03
+#define HALL_SETTINGS_2                     0x93
+#define HALL_SETTINGS_3                     0x93
+#define HALL_SETTINGS_4                     0x00
+#define HALL_SETTINGS_5                     0x00
+#define HALL_SETTINGS_6                     0x08
+#define HALL_SETTINGS_7                     0x00
+#define HALL_SETTINGS_8                     0x00
+#define HALL_SETTINGS_9                     0x63
+#define HALL_SETTINGS_10                    0xEB
+
+/* 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              0x0A
+#define REPORT_RATES_TIMINGS_1              0x30
+#define REPORT_RATES_TIMINGS_2              0x08
+#define REPORT_RATES_TIMINGS_3              0x14
+#define REPORT_RATES_TIMINGS_4              0x07
+
+#endif  /* IQS624_INIT_H */
--- a/IQS62x.lib	Mon May 08 06:15:31 2017 +0000
+++ b/IQS62x.lib	Fri May 12 05:02:51 2017 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/teams/Azoteq/code/IQS62x/#89bdb6f6a5c1
+https://developer.mbed.org/teams/Azoteq/code/IQS62x/#7c2666dfbc9a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deviceType.h	Fri May 12 05:02:51 2017 +0000
@@ -0,0 +1,5 @@
+// the device type, not used at the moment, but we have it
+#define DEVICE_TYPE_IQS624 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	Mon May 08 06:15:31 2017 +0000
+++ b/main.cpp	Fri May 12 05:02:51 2017 +0000
@@ -2,7 +2,7 @@
 
 // Hello World program for Azoteq IQS624 ultra low power sensor for 2D magnetic angle, capacitive touch and inductive proximity sensor.
 
-// More info on IQS624 sensor IC: http://bit.ly/IQS624_info
+// More info on IQS624 sensor IC: http://www.azoteq.com/products/proxfusion/iqs624?mbed
 
 // IQS624 1-minute youtube video: http://bit.ly/IQS624Video
 
@@ -36,8 +36,6 @@
 #include "IQS62x.h"
 #include "IQSdisplayTerminal.h"
 
-// Library note: USBDevice library is only required for Teensy 3.1, Teensy 3.2 or if you WANT to use the native USB port as a serial port.
-
 IQS62xDisplay terminal;   // class to display IQS62x registers on a terminal
 IQS62xIO iqs62x;          // class for basic IQS62x block read and write