@@ -33,37 +33,32 @@ uint8_t QwiicKX13xCore::beginCore(uint8_t deviceAddress, TwoWire &i2cPort)
33
33
34
34
uint8_t QwiicKX13xCore::beginSPICore (uint8_t CSPin, uint32_t spiPortSpeed, SPIClass &spiPort)
35
35
{
36
+ uint8_t partID;
37
+
36
38
_i2cPort = NULL ;
37
- _spiPortSpeed = spiPortSpeed;
38
39
_spiPort = &spiPort;
40
+ _cs = CSPin;
39
41
40
42
if ( _spiPortSpeed > 10000000 )
41
43
_spiPortSpeed = 10000000 ;
42
44
43
- _cs = CSPin;
44
- pinMode (_cs, OUTPUT);
45
- digitalWrite (_cs, HIGH);
46
- // writeBit(INC1, SPI3E, 1); //Enable SPI
47
- // _i2cPort->end();
45
+ _spiPortSpeed = spiPortSpeed;
46
+
48
47
49
- // CPOL and CPHA are demonstrated on pg 25 of Specification Data sheet
50
- // CPOL = 0, CPHA = 0 SPI_MODE0
48
+ // CPOL and CPHA are demonstrated on pg 25 of Specification Data sheet
49
+ // CPOL = 0, CPHA = 0 SPI_MODE0
51
50
#ifdef ESP32
52
51
kxSPISettings = SPISettings (spiPortSpeed, SPI_MSBFIRST, SPI_MODE0);
53
52
#else
54
53
kxSPISettings = SPISettings (spiPortSpeed, MSBFIRST, SPI_MODE0);
55
54
#endif
56
- // #ifdef _MK20DX256_ //Teensy
57
- // kxSPISettings = SPISettings(spiPortSpeed, MSBFIRST, SPI_MODE0)
58
- // #endif
59
55
60
- uint8_t partID;
61
56
KX13X_STATUS_t status = readRegister (&partID, KX13X_WHO_AM_I);
57
+
62
58
if ( status != KX13X_SUCCESS )
63
59
return status;
64
- else
65
- return partID;
66
-
60
+
61
+ return partID;
67
62
}
68
63
69
64
// This function sets various register with regards to these pre-determined
@@ -411,31 +406,36 @@ KX13X_STATUS_t QwiicKX13xCore::readRegister(uint8_t *dataPointer, uint8_t reg)
411
406
{
412
407
413
408
if ( _i2cPort == NULL ) {
409
+
414
410
_spiPort->beginTransaction (kxSPISettings);
415
411
digitalWrite (_cs, LOW);
416
- reg |= SPI_READ;
412
+
413
+ reg = (reg | SPI_READ);
417
414
_spiPort->transfer (reg);
418
- *dataPointer = _spiPort->transfer (0x00 );
415
+
416
+ *dataPointer = _spiPort->transfer (0x00 );
417
+
419
418
digitalWrite (_cs, HIGH);
420
419
_spiPort->endTransaction ();
420
+
421
421
return KX13X_SUCCESS;
422
422
}
423
423
424
- else {
425
424
426
- uint8_t i2cResult;
427
- _i2cPort->beginTransmission (_deviceAddress);
428
- _i2cPort->write (reg);
429
- i2cResult = _i2cPort->endTransmission (false );
430
- if ( i2cResult != 0 )
431
- return KX13X_I2C_ERROR; // Error: Sensor did not ack
432
- i2cResult = _i2cPort->requestFrom (static_cast <uint8_t >(_deviceAddress), static_cast <uint8_t >(1 )); // returns number of bytes
433
- if ( i2cResult != 0 ) {
434
- *dataPointer = _i2cPort->read ();
435
- return KX13X_SUCCESS;
436
- }
437
- return KX13X_I2C_ERROR; // Error: Sensor did not ack
438
- }
425
+ uint8_t i2cResult;
426
+
427
+ _i2cPort->beginTransmission (_deviceAddress);
428
+ _i2cPort->write (reg);
429
+ i2cResult = _i2cPort->endTransmission (false );
430
+
431
+ if ( i2cResult != 0 )
432
+ return KX13X_I2C_ERROR; // Error: Sensor did not ack
433
+ //
434
+ _i2cPort->requestFrom (static_cast <uint8_t >(_deviceAddress), static_cast <uint8_t >(1 )); // returns number of bytes
435
+ //
436
+ *dataPointer = _i2cPort->read ();
437
+ return KX13X_SUCCESS;
438
+
439
439
}
440
440
441
441
// Sends a request to read a number of registers
@@ -445,7 +445,7 @@ KX13X_STATUS_t QwiicKX13xCore::readMultipleRegisters(uint8_t reg, uint8_t dataBu
445
445
if ( _i2cPort == NULL ) {
446
446
_spiPort->beginTransaction (kxSPISettings);
447
447
digitalWrite (_cs, LOW);
448
- reg |= SPI_READ;
448
+ reg = (reg | SPI_READ) ;
449
449
_spiPort->transfer (reg);
450
450
dataBuffer[0 ] = _spiPort->transfer (0x00 ); // first byte on transfer of address and read bit
451
451
for (size_t i = 1 ; i < numBytes; i++) {
@@ -581,11 +581,14 @@ bool QwiicKX132::begin(uint8_t kxAddress, TwoWire &i2cPort){
581
581
// register matches the correct value. Uses SPI for data transfer.
582
582
bool QwiicKX132::beginSPI (uint8_t csPin, uint32_t spiPortSpeed, SPIClass &spiPort){
583
583
584
- uint8_t partID = beginSPICore (csPin, spiPortSpeed, spiPort);
584
+ uint8_t partID;
585
+
586
+ partID = beginSPICore (csPin, spiPortSpeed, spiPort);
587
+
585
588
if ( partID == KX132_WHO_AM_I )
586
589
return true ;
587
- else
588
- return false ;
590
+
591
+ return false ;
589
592
}
590
593
591
594
// Grabs raw accel data and passes it to the following function to be
@@ -668,11 +671,13 @@ bool QwiicKX134::begin(uint8_t kxAddress, TwoWire &i2cPort){
668
671
// register matches the correct value. Uses SPI for data transfer.
669
672
bool QwiicKX134::beginSPI (uint8_t csPin, uint32_t spiPortSpeed, SPIClass &spiPort){
670
673
671
- uint8_t partID = beginSPICore (csPin, spiPortSpeed, spiPort);
674
+ uint8_t partID;
675
+ partID = beginSPICore (csPin, spiPortSpeed, spiPort);
676
+
672
677
if ( partID == KX134_WHO_AM_I )
673
678
return true ;
674
- else
675
- return false ;
679
+
680
+ return false ;
676
681
}
677
682
678
683
// Grabs raw accel data and passes it to the following function to be
0 commit comments