Pierre Bourdin 2 maanden geleden
bovenliggende
commit
b9c6fcff5e
5 gewijzigde bestanden met toevoegingen van 665 en 13 verwijderingen
  1. 583 0
      DS_SX1261-2_V2_1.pdf
  2. BIN
      HTIT-Tracker_V0.5.pdf
  3. 40 1
      src/main.cpp
  4. 39 11
      src/sx1262.cpp
  5. 3 1
      src/sx1262.h

File diff suppressed because it is too large
+ 583 - 0
DS_SX1261-2_V2_1.pdf


BIN
HTIT-Tracker_V0.5.pdf


+ 40 - 1
src/main.cpp

@@ -18,6 +18,25 @@ void setup_radio()
     tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
     delay(1500);
 
+    /*
+    C'est le bout trouvé dans le code kikiwi
+    pour la config
+    ==============
+        SX1276FskSetGMSK(GAUSSIAN_FILTER_0_5);	// FSK modulation shaping
+		SX1276FskBaudRate(BAUDRATE_1200);		// Data baudrate
+		SX1276FskSetRFPower(14);
+		SX1276FskSetPayloadLength( DATA_FRAME_SIZE );
+		SX1276FskPacketFormat(RF_PACKETCONFIG1_PACKETFORMAT_FIXED);
+		SX1276FskSetPacketCrcOn( true );
+    pour le Tx
+    ==========
+    	SX1276FskSetOpMode(RF_OPMODE_STANDBY);
+        SX1276WriteFIFO(RadioFrame, DATA_FRAME_SIZE);
+        SX1276FskSetOpMode(RF_OPMODE_TRANSMITTER);	
+        SYS_Delay(500); /// Validé 500
+        SX1276FskSetOpMode(RF_OPMODE_STANDBY);
+    */
+
     radio.beginSPI();
     radio.reset();
     //radio.readStatusCommand(SX126X_GET_STATUS);
@@ -46,8 +65,26 @@ void setup_radio()
     /*
      * Table 13-42: Set Modulation Prameters in GFSK Mode
      */
-    radio.SetModulationParams(48000, 0x09, 0x16, 0x10);
+    radio.SetModulationParams(1200, 0x09, 0x16, 0x10);
 
+    /*
+     * Table 13-36: SetRfFrequency SPI Transaction
+main/sx1276-Fsk.c:146:    SX1276->RegSyncConfig = RF_SYNCCONFIG_AUTORESTARTRXMODE_WAITPLL_ON | RF_SYNCCONFIG_PREAMBLEPOLARITY_AA |
+main/sx1276-Fsk.c:147:                            RF_SYNCCONFIG_SYNC_ON |
+main/sx1276-Fsk.c:148:                            RF_SYNCCONFIG_SYNCSIZE_4;
+main/sx1276-Fsk.c:150:    SX1276->RegSyncValue1 = 0x69;
+main/sx1276-Fsk.c:151:    SX1276->RegSyncValue2 = 0x81;
+main/sx1276-Fsk.c:152:    SX1276->RegSyncValue3 = 0x7E;
+main/sx1276-Fsk.c:153:    SX1276->RegSyncValue4 = 0x96;
+     */
+
+    radio.SetPacketParams(0x100, 0x05, 4, 0x00, 0x00, 50, 1);
+    radio.SetDIO3AsTCXOCtrl(0x00, 0x140);
+    // on écrit les valeurs de sync_words voulu, comme dans kikiwi
+    radio.regWrite(0x06C0, 0x69);
+    radio.regWrite(0x06C1, 0x81);
+    radio.regWrite(0x06C2, 0x7E);
+    radio.regWrite(0x06C3, 0x96);
 
 }
 
@@ -151,5 +188,7 @@ void loop()
     tft.fillCircle(150, 10, 2, ST77XX_GREEN);
     read_nmea(1000);
     tft.fillCircle(150, 10, 2, ST77XX_WHITE);
+    
+    
 
 }

+ 39 - 11
src/sx1262.cpp

@@ -6,7 +6,6 @@
  * for detailed information about the SX1262.  
  */
 
-/// Include class header
 #include "sx1262.h"
 #include "logger.h"
 #include "board.h"
@@ -208,7 +207,6 @@ uint8_t Sx1262::getStatusCommand(uint8_t opcode) const
       break;
     }
     
-    
     case (SX126X_GET_RX_BUFFER_STATUS): {
       uint8_t rxBufferStatus = SPI.transfer(0x00);
       uint8_t rxBufferPayloadLenghtRx = SPI.transfer(0x00);
@@ -241,13 +239,9 @@ uint8_t Sx1262::getStatusCommand(uint8_t opcode) const
       digitalWrite(_cs, HIGH);
       break;
     }
-
   }
 
-
-  // hé oui, on lache le trig ;)
-
- // Le 1er byte de réponse c'est le statusCode
+  // Le 1er byte de réponse c'est le statusCode
   // on va parser tout ça
   uint8_t cmdStatus = 0;
   uint8_t cmdChipMode = 0;
@@ -272,8 +266,6 @@ uint8_t Sx1262::getStatusCommand(uint8_t opcode) const
   else if (cmdChipMode == 0x06) logger.log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, "SX1262", "cmdChipMode : TX");
   else return -1;
 
-
-
   return 0;
 };
 
@@ -357,7 +349,6 @@ void Sx1262::SetRfFrequency(uint32_t freq) const
   USBSerial.print(buffer[2], HEX);
   USBSerial.print(" 0x");
   USBSerial.print(buffer[3], HEX);
-
   setOpMode(SX126X_SET_RF_FREQUENCY, buffer, 4);
 }
 
@@ -444,7 +435,44 @@ void Sx1262::SetModulationParams(uint32_t bitrate, uint8_t pulseShape, uint8_t b
   buffer[5] = (fdev >> 16) & 0xFF;
   buffer[6] = (fdev >> 8) & 0xFF;
   buffer[7] = fdev & 0xFF;
-  
   setOpMode(SX126X_SET_MODULATION_PARAMS, buffer, 8);
+}
+
+/*
+ * @brief SetPacketParams
+*/
+void Sx1262::SetPacketParams(uint16_t preambleLength, uint8_t PreambleDetectorLength, uint8_t SyncWordLength, uint8_t AddrComp, uint8_t PacketType, uint8_t PayloadLength, uint8_t CRCType) const
+{
+  uint8_t *buffer = new uint8_t[8];
+  buffer[0] = (preambleLength >> 8) & 0xFF;
+  buffer[1] = preambleLength & 0xFF;
+  buffer[2] = PreambleDetectorLength;
+  buffer[3] = SyncWordLength;
+  buffer[4] = AddrComp;
+  buffer[5] = PacketType;
+  buffer[6] = PayloadLength;
+  buffer[7] = CRCType;
+  setOpMode(SX126X_SET_PKT_PARAMS, buffer, 8);
+}
+
+/*
+ * @brief SetDIO3AsTCXOCtrl
+ */
+void Sx1262::SetDIO3AsTCXOCtrl(uint8_t tcxoVoltage, uint32_t timeout) const
+{
+  uint8_t *buffer = new uint8_t[4];
+  buffer[0] = tcxoVoltage;
+  buffer[1] = (timeout >> 16) & 0xFF;
+  buffer[2] = (timeout >> 8) & 0xFF;
+  buffer[3] = timeout & 0xFF;
+  setOpMode(SX126X_SET_DIO3_AS_TCXO_CTRL, buffer, 4);
+}
 
+/*
+ * @brief SetTx
+ */
+void Sx1262::SetTx() const
+{
+  uint8_t *buffer = new uint8_t[0];
+  setOpMode(SX126X_SET_TX, buffer, 0);
 }

+ 3 - 1
src/sx1262.h

@@ -119,7 +119,9 @@ class Sx1262
     void WriteBuffer(uint8_t *buffer, uint8_t size) const;
 
     void SetModulationParams(uint32_t bitrate, uint8_t pulseShape, uint8_t bandwidht, uint32_t fdev) const;
-
+    void SetPacketParams(uint16_t preambleLength, uint8_t PreambleDetectorLength, uint8_t SyncWordLength, uint8_t AddrComp, uint8_t PacketType, uint8_t PayloadLength, uint8_t CRCType) const;
+    void SetDIO3AsTCXOCtrl(uint8_t tcxoVoltage, uint8_t timeout) const;
+    void SetTx() const;
 
 
   private:

Some files were not shown because too many files changed in this diff