3D Low Frequency Wakeup Receiver
Diff: AS3933.cpp
- Revision:
- 3:2de552c4ffbc
- Parent:
- 2:c3435a136e50
- Child:
- 4:10d482ca4eb1
--- a/AS3933.cpp Wed Mar 07 15:04:16 2018 +0000 +++ b/AS3933.cpp Wed Mar 07 16:43:51 2018 +0000 @@ -71,7 +71,7 @@ // Read R0 register cmd[0] = ( AS3933_READ | AS3933_R0 ); - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); // Mask Channels 1:3 cmd[1] &= ~( EN_A1_MASK | EN_A2_MASK | EN_A3_MASK ); @@ -155,7 +155,7 @@ // Read R4 register cmd[0] = ( AS3933_READ | AS3933_R4 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask T_OFF @@ -207,7 +207,7 @@ // Read R8 register cmd[0] = ( AS3933_READ | AS3933_R8 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Artificial wakeup @@ -254,15 +254,17 @@ */ AS3933::AS3933_status_t AS3933::AS3933_ReadFalseWakeUpRegister ( AS3933_data_t* myF_WAKE ) { - char cmd = ( AS3933_READ | AS3933_R13 ); + char cmd[] = { ( AS3933_READ | AS3933_R13 ), 0 }; int mySPI_status; // Read R13 register _cs = 1; - mySPI_status = _spi.write ( &cmd, 1, (char*)( &myF_WAKE->f_wake ), 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; - + + + myF_WAKE->f_wake = cmd[1]; @@ -303,7 +305,7 @@ // Read R1 register cmd[0] = ( AS3933_READ | AS3933_R1 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Crystal oscillator @@ -324,7 +326,7 @@ // Read R16 register cmd[0] = ( AS3933_READ | AS3933_R16 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Clock Generator output signal @@ -372,27 +374,27 @@ */ AS3933::AS3933_status_t AS3933::AS3933_CalibrateRC_Oscillator ( void ) { - char cmd = 0; + char cmd[] = { 0, 0 }; uint32_t myTimeout = 0; int mySPI_status; // Start the calibration - cmd = ( AS3933_DIRECT_COMMAND | CALIB_RCO_LC ); + cmd[0] = ( AS3933_DIRECT_COMMAND | CALIB_RCO_LC ); _cs = 1; - mySPI_status = _spi.write ( &cmd, 1, &cmd, 0 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 0 ); _cs = 0; // RC oscillator will be calibrated when RC_CAL_OK = '1' ( R14<6> ) myTimeout = 23232323; do{ - cmd = ( AS3933_READ | AS3933_R14 ); + cmd[0] = ( AS3933_READ | AS3933_R14 ); _cs = 1; - mySPI_status = _spi.write ( &cmd, 1, &cmd, 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; myTimeout--; - } while ( ( ( cmd & RC_CAL_OK_MASK ) != RC_CAL_OK_HIGH ) && ( myTimeout > 0 ) ); + } while ( ( ( cmd[1] & RC_CAL_OK_MASK ) != RC_CAL_OK_HIGH ) && ( myTimeout > 0 ) ); @@ -433,7 +435,7 @@ // Read R1 register cmd[0] = ( AS3933_READ | AS3933_R1 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Antenna dumper @@ -451,7 +453,7 @@ // Read R4 register cmd[0] = ( AS3933_READ | AS3933_R4 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Antenna dumper resistor @@ -502,7 +504,7 @@ // Read R3 register cmd[0] = ( AS3933_READ | AS3933_R3 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Symbol rate @@ -556,7 +558,7 @@ // Read R1 register cmd[0] = ( AS3933_READ | AS3933_R1 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Data slicer absolute reference @@ -574,7 +576,7 @@ // Read R3 register cmd[0] = ( AS3933_READ | AS3933_R3 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Data slices time constant @@ -626,7 +628,7 @@ // Read R3 register cmd[0] = ( AS3933_READ | AS3933_R3 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask both hysteresis edge and comparator @@ -677,7 +679,7 @@ // Read R4 register cmd[0] = ( AS3933_READ | AS3933_R4 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Gain reduction @@ -728,7 +730,7 @@ // Read R8 register cmd[0] = ( AS3933_READ | AS3933_R8 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Band selection @@ -779,7 +781,7 @@ // Read R2 register cmd[0] = ( AS3933_READ | AS3933_R2 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Tolerance band @@ -830,7 +832,7 @@ // Read R2 register cmd[0] = ( AS3933_READ | AS3933_R2 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Gain boost @@ -882,7 +884,7 @@ // Read R1 register cmd[0] = ( AS3933_READ | AS3933_R1 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask both AGC acting only on the first carrier burst and AGC direction operating @@ -933,7 +935,7 @@ // Read R0 register cmd[0] = ( AS3933_READ | AS3933_R0 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Mask data on DAT pin before wakeup happens @@ -989,7 +991,7 @@ // Read R1 register cmd[0] = ( AS3933_READ | AS3933_R1 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask both Correlator mode and Manchester decoder mode @@ -1025,7 +1027,7 @@ // Read R7 register cmd[0] = ( AS3933_READ | AS3933_R7 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Bit rate definition @@ -1078,14 +1080,14 @@ cmd[0] = ( AS3933_WRITE | AS3933_R5 ); cmd[1] = ( myWakeUpPattern.patt2b ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 0 ); + mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 1 ); _cs = 0; // Update PATT1B cmd[0] = ( AS3933_WRITE | AS3933_R6 ); cmd[1] = ( myWakeUpPattern.patt1b ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 0 ); + mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 1 ); _cs = 0; @@ -1119,23 +1121,25 @@ */ AS3933::AS3933_status_t AS3933::AS3933_GetWakeUpPattern ( AS3933_data_t* myWakeUpPattern ) { - char cmd = 0; + char cmd[] = { 0, 0 }; int mySPI_status; // Read R5 register - cmd = ( AS3933_READ | AS3933_R5 ); + cmd[0] = ( AS3933_READ | AS3933_R5 ); _cs = 1; - mySPI_status = _spi.write ( &cmd, 1, (char*)&myWakeUpPattern->patt2b, 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); + _cs = 0; + + myWakeUpPattern->patt2b = cmd[1]; + + // Read R6 register + cmd[0] = ( AS3933_READ | AS3933_R6 ); + _cs = 1; + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; - // Read R6 register - cmd = ( AS3933_READ | AS3933_R6 ); - _cs = 1; - mySPI_status = _spi.write ( &cmd, 1, (char*)&myWakeUpPattern->patt1b, 1 ); - _cs = 0; - - + myWakeUpPattern->patt1b = cmd[1]; if ( mySPI_status == SPI_SUCCESS ) @@ -1173,7 +1177,7 @@ // Read R7 register cmd[0] = ( AS3933_READ | AS3933_R7 ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Automatic time-out @@ -1244,7 +1248,7 @@ // Read register cmd[0] = ( AS3933_READ | myAuxRegister ); _cs = 1; - mySPI_status = _spi.write ( &cmd[0], 1, &cmd[1], 1 ); + mySPI_status = _spi.write ( &cmd[0], 1, &cmd[0], 2 ); _cs = 0; // Mask Parallel Tuning Capacitance @@ -1338,7 +1342,7 @@ */ AS3933::AS3933_status_t AS3933::AS3933_Send_DirectCommand ( AS3933_spi_direct_commands_t myDirectCommand ) { - char cmd = 0; + char cmd = 0; int mySPI_status;