Skip to content

Commit 6ddb182

Browse files
committed
Fixes the SPI_READ macro -> 0x80
*Fixes SPI reads by first sending address and read bit on reads, then reading *Fixes SPI write which made an assignment within the transfer argument
1 parent fcbfc39 commit 6ddb182

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

src/SparkFun_Qwiic_KX13X.cpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ uint8_t QwiicKX13xCore::beginSPICore(uint8_t CSPin, uint32_t spiPortSpeed, SPICl
6363
return status;
6464
else
6565
return partID;
66+
6667
}
6768

6869
// This function sets various register with regards to these pre-determined
@@ -413,7 +414,8 @@ KX13X_STATUS_t QwiicKX13xCore::readRegister(uint8_t *dataPointer, uint8_t reg)
413414
_spiPort->beginTransaction(kxSPISettings);
414415
digitalWrite(_cs, LOW);
415416
reg |= SPI_READ;
416-
*dataPointer = _spiPort->transfer(reg);
417+
_spiPort->transfer(reg);
418+
*dataPointer = _spiPort->transfer(0x00);
417419
digitalWrite(_cs, HIGH);
418420
_spiPort->endTransaction();
419421
return KX13X_SUCCESS;
@@ -444,9 +446,10 @@ KX13X_STATUS_t QwiicKX13xCore::readMultipleRegisters(uint8_t reg, uint8_t dataBu
444446
_spiPort->beginTransaction(kxSPISettings);
445447
digitalWrite(_cs, LOW);
446448
reg |= SPI_READ;
447-
dataBuffer[0] = _spiPort->transfer(reg); //first byte on transfer of address and read bit
449+
_spiPort->transfer(reg);
450+
dataBuffer[0] = _spiPort->transfer(0x00); //first byte on transfer of address and read bit
448451
for(size_t i = 1; i < numBytes; i++) {
449-
dataBuffer[i] = _spiPort->transfer(0); //Assuming this will initiate auto-increment behavior
452+
dataBuffer[i] = _spiPort->transfer(0x00); //Assuming this will initiate auto-increment behavior
450453
}
451454
digitalWrite(_cs, HIGH);
452455
_spiPort->endTransaction();
@@ -528,7 +531,7 @@ KX13X_STATUS_t QwiicKX13xCore::writeRegister(uint8_t reg, uint8_t mask, uint8_t
528531

529532
_spiPort->beginTransaction(kxSPISettings);
530533
digitalWrite(_cs, LOW);
531-
_spiPort->transfer(reg |= SPI_WRITE);
534+
_spiPort->transfer(reg | SPI_WRITE);
532535
_spiPort->transfer(tempRegVal);
533536
digitalWrite(_cs, HIGH);
534537
_spiPort->endTransaction();

src/SparkFun_Qwiic_KX13X.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Distributed as-is; no warranty is given.
3838
#define ZLSB 4
3939
#define ZMSB 5
4040

41-
#define SPI_READ 0x01 // OR'ed at most sig BIT with register address
41+
#define SPI_READ 0x80 // OR'ed at most sig BIT with register address
4242
#define SPI_WRITE 0x00 // OR'ed at most sig BIT with register address
4343

4444
#define DEFAULT_SETTINGS 0xC0

0 commit comments

Comments
 (0)