@@ -7,7 +7,7 @@ Original Creation Date: March, 2021
77This file implements the QwiicKX13XCore, QwiicKX132, and QwiicKX134 class
88
99Development environment specifics:
10- IDE: Arduino 1.8.12
10+ IDE: Arduino 1.8.12
1111
1212This code is Lemonadeware; if you see me (or any other SparkFun employee) at the
1313local, and you've found our code helpful, please buy us a round!
@@ -64,6 +64,9 @@ uint8_t QwiicKX13xCore::beginSPICore(uint8_t CSPin, uint32_t spiPortSpeed, SPICl
6464 return partID;
6565}
6666
67+ // This function sets various register with regards to these pre-determined
68+ // settings. These settings are set according to "AN092 Getting Started" guide and can easily
69+ // have additional presets added.
6770bool QwiicKX13xCore::initialize (uint8_t settings)
6871{
6972
@@ -97,6 +100,9 @@ bool QwiicKX13xCore::initialize(uint8_t settings)
97100 return false ;
98101}
99102
103+ // Address: 0x1B, bit[7]: default value is: 0x00
104+ // This function sets the accelerometer into stand-by mode or
105+ // an active mode depending on the given argument.
100106bool QwiicKX13xCore::accelControl (bool standby){
101107
102108 if ( standby != true && standby != false )
@@ -111,14 +117,20 @@ bool QwiicKX13xCore::accelControl(bool standby){
111117
112118}
113119
120+ // Address: 0x1B, bit[7]: default value is: 0x00
121+ // This function reads whether the accelerometer is in stand by or an active
122+ // mode.
114123uint8_t QwiicKX13xCore::readAccelState (){
115124
116125 uint8_t tempRegVal;
117126 readRegister (&tempRegVal, KX13X_CNTL1);
118127 return (tempRegVal & 0x80 ) >> 7 ;
119128
120129}
121-
130+ // Address: 0x1B, bit[1:0]: default value is: 0x00 (2g)
131+ // This function sets the acceleration range of the accelerometer outputs.
132+ // Possible KX132 arguments: 0x00 (2g), 0x01 (4g), 0x02 (8g), 0x03 (16g)
133+ // Possible KX134 arguments: 0x00 (8g), 0x01 (16g), 0x02 (32g), 0x03 (64g)
122134bool QwiicKX13xCore::setRange (uint8_t range){
123135
124136 if ( range < 0 | range > 3 )
@@ -139,7 +151,7 @@ bool QwiicKX13xCore::setRange(uint8_t range){
139151}
140152
141153
142- // Address: 0x21, bits[3:0] - default value is 50Hz: 0b0110
154+ // Address: 0x21, bits[3:0] - default value is 0x06 (50Hz)
143155// Sets the refresh rate of the accelerometer's data.
144156// 0.781 * (2 * (n)) derived from pg. 26 of Techincal Reference Manual
145157bool QwiicKX13xCore::setOutputDataRate (uint8_t rate){
@@ -151,7 +163,7 @@ bool QwiicKX13xCore::setOutputDataRate(uint8_t rate){
151163 accelControl (false ); // Can't adjust without putting to sleep
152164
153165 KX13X_STATUS_t returnError;
154- returnError = writeRegister (KX13X_ODCNTL, 0x40 , rate, 0 );
166+ returnError = writeRegister (KX13X_ODCNTL, 0xF0 , rate, 0 );
155167 if ( returnError == KX13X_SUCCESS )
156168 return true ;
157169 else
@@ -164,11 +176,13 @@ bool QwiicKX13xCore::setOutputDataRate(uint8_t rate){
164176 return false ;
165177}
166178
179+ // Address:0x21 , bit[3:0]: default value is: 0x06 (50Hz)
180+ // Gets the accelerometer's output data rate.
167181float QwiicKX13xCore::readOutputDataRate (){
168182
169183 uint8_t tempRegVal;
170184 readRegister (&tempRegVal, KX13X_ODCNTL);
171- tempRegVal &= 0x40 ;
185+ tempRegVal &= 0x0F ;
172186 tempRegVal = (float )tempRegVal;
173187 return (0.78 * (2 * tempRegVal));
174188
@@ -238,8 +252,9 @@ bool QwiicKX13xCore::routeHardwareInterrupt(uint8_t rdr, uint8_t pin){
238252
239253}
240254
241-
242-
255+ // Address: 0x1A , bit[7:0]: default value is: 0x00
256+ // This function reads the interrupt latch release register, thus clearing any
257+ // interrupts.
243258bool QwiicKX13xCore::clearInterrupt (){
244259
245260 uint8_t tempRegVal;
@@ -340,7 +355,10 @@ bool QwiicKX13xCore::enableBuffer(bool enable, bool enableInterrupt){
340355 return false ;
341356}
342357
343- // Tests functionality of the integrated circuit
358+ // Address: 0x1C, bit[6]: default value is: 0x00
359+ // Tests functionality of the integrated circuit by setting the command test
360+ // control bit, then checks the results in the COTR register (0x12): 0xAA is a
361+ // successful read, 0x55 is the default state.
344362bool QwiicKX13xCore::runCommandTest ()
345363{
346364
@@ -358,6 +376,9 @@ bool QwiicKX13xCore::runCommandTest()
358376 return false ;
359377}
360378
379+ // Address:0x08 - 0x0D or 0x63 , bit[7:0]
380+ // Reads acceleration data from either the buffer or the output registers
381+ // depending on if the user specified buffer usage.
361382bool QwiicKX13xCore::getRawAccelData (rawOutputData *rawAccelData){
362383
363384
0 commit comments