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
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
IQS624 Pinout
IQS624 Data Sheet & Evaluation Kit Information
http://www.azoteq.com/products/proxfusion/iqs624?mbed
IQS624 Interconnection
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
Revision 11:1a328b8ebbce, committed 2017-05-12
- 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
--- /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
IQS624
IQS620A-EVAL-1
IQS624-EVAL-1