this is a first compilation of a library for IQS5xx. For now, it work with the iqs572ev02 devellopment board. The code is inspired with the sample code provide by Azotech. I have some issu with the interrupt pin RDY, which seem to be high even I don't touch de board.

Dependencies:   mbed

Committer:
skydarc
Date:
Wed Jan 01 16:39:19 2020 +0000
Revision:
2:bd4b620316aa
Parent:
1:65f5b13e6177
done ! the rdy pin is functionnal. the "system config 1" register need to be properly configured.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
skydarc 0:4907da2299a4 1 #include "mbed.h"
skydarc 0:4907da2299a4 2 #include <IQS5xx.h>
skydarc 0:4907da2299a4 3
skydarc 0:4907da2299a4 4 /***** Object Declarations *****/
skydarc 0:4907da2299a4 5 IQS5xx trackPad(p28, p27, p17);
skydarc 0:4907da2299a4 6
skydarc 0:4907da2299a4 7 DigitalOut led1(LED1);
skydarc 0:4907da2299a4 8
skydarc 2:bd4b620316aa 9 //DigitalIn rdy(p17);
skydarc 2:bd4b620316aa 10 InterruptIn rdyInter(p17);
skydarc 0:4907da2299a4 11
skydarc 0:4907da2299a4 12 void ISR1() { //this is the response to interrupt, i.e. the ISR
skydarc 0:4907da2299a4 13
skydarc 2:bd4b620316aa 14 uint8_t ui8TempData[30], i;
skydarc 0:4907da2299a4 15
skydarc 0:4907da2299a4 16 trackPad.I2C_Read(GestureEvents0_adr, &trackPad.Data_Buff[0], 44);
skydarc 0:4907da2299a4 17
skydarc 0:4907da2299a4 18 if((trackPad.Data_Buff[3] & SNAP_TOGGLE) != 0) {
skydarc 0:4907da2299a4 19
skydarc 0:4907da2299a4 20 // If there was a change in a snap status, then read the snap status
skydarc 0:4907da2299a4 21 // bytes additionally. Keep previous valus to identify a state change
skydarc 0:4907da2299a4 22 //
skydarc 0:4907da2299a4 23 trackPad.I2C_Read(SnapStatus_adr, &ui8TempData[0], 30);
skydarc 0:4907da2299a4 24 for(i = 0; i < 15; i++) {
skydarc 0:4907da2299a4 25 trackPad.ui16PrevSnap[i] = trackPad.ui16SnapStatus[i];
skydarc 0:4907da2299a4 26 trackPad.ui16SnapStatus[i] = ((uint16_t)(ui8TempData[2*i])<<8) + (uint16_t)ui8TempData[(2*i)+1];
skydarc 0:4907da2299a4 27 }
skydarc 0:4907da2299a4 28 }
skydarc 0:4907da2299a4 29
skydarc 0:4907da2299a4 30 //
skydarc 0:4907da2299a4 31 // Terminate the communication session, so that the IQS5xx can continue
skydarc 0:4907da2299a4 32 // with sensing and processing
skydarc 0:4907da2299a4 33 //
skydarc 0:4907da2299a4 34 trackPad.Close_Comms();
skydarc 0:4907da2299a4 35 //
skydarc 0:4907da2299a4 36 // Process received data
skydarc 0:4907da2299a4 37 //
skydarc 0:4907da2299a4 38 trackPad.Process_XY();
skydarc 2:bd4b620316aa 39 }
skydarc 2:bd4b620316aa 40
skydarc 2:bd4b620316aa 41 int main() {
skydarc 2:bd4b620316aa 42
skydarc 2:bd4b620316aa 43 //rdy.mode(PullUp);
skydarc 2:bd4b620316aa 44
skydarc 2:bd4b620316aa 45 rdyInter.rise(&ISR1);
skydarc 2:bd4b620316aa 46
skydarc 2:bd4b620316aa 47 trackPad.AcknowledgeReset();
skydarc 2:bd4b620316aa 48
skydarc 2:bd4b620316aa 49 trackPad.checkVersion();
skydarc 2:bd4b620316aa 50
skydarc 2:bd4b620316aa 51 while(1) {
skydarc 2:bd4b620316aa 52
skydarc 2:bd4b620316aa 53
skydarc 0:4907da2299a4 54
skydarc 0:4907da2299a4 55 led1 = 1;
skydarc 2:bd4b620316aa 56 wait(0.5);
skydarc 0:4907da2299a4 57 led1 = 0;
skydarc 2:bd4b620316aa 58 wait(0.5);
skydarc 0:4907da2299a4 59 }
skydarc 0:4907da2299a4 60 }
skydarc 0:4907da2299a4 61