mirror of
https://github.com/soypat/lora.git
synced 2026-08-22 13:18:58 +00:00
finish init bare
This commit is contained in:
@@ -24,6 +24,18 @@ func (d *DeviceLoRaBare) Configure(c lora.Config) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, irv := range initRegValues {
|
||||||
|
err = d.setModem(irv.modem)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = d.DL.Write8(irv.addr, irv.val)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return d.setModem(modeFSK)
|
||||||
|
|
||||||
// Set up FIFO
|
// Set up FIFO
|
||||||
// We configure so that we can use the entire 256 byte FIFO for either receive
|
// We configure so that we can use the entire 256 byte FIFO for either receive
|
||||||
// or transmit, but not both at the same time
|
// or transmit, but not both at the same time
|
||||||
@@ -119,3 +131,29 @@ func (d *DeviceLoRaBare) Read(addr uint8) uint8 {
|
|||||||
val, _ := d.DL.read8(addr)
|
val, _ := d.DL.read8(addr)
|
||||||
return val
|
return val
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const modeFSK, modeLoRa = 0, 1
|
||||||
|
|
||||||
|
var initRegValues = []struct {
|
||||||
|
modem uint8
|
||||||
|
addr uint8
|
||||||
|
val uint8
|
||||||
|
}{
|
||||||
|
{modeFSK, regLNA, 0x23},
|
||||||
|
{modeFSK, regRXConfig, 0x1E},
|
||||||
|
{modeFSK, regRSSIConfig, 0xD2},
|
||||||
|
{modeFSK, regAFCFEI, 0x01},
|
||||||
|
{modeFSK, regPreambleDetect, 0xAA},
|
||||||
|
{modeFSK, regOsc, 0x07},
|
||||||
|
{modeFSK, regSyncConfig, 0x12},
|
||||||
|
{modeFSK, regSyncValue1, 0xC1},
|
||||||
|
{modeFSK, regSyncValue2, 0x94},
|
||||||
|
{modeFSK, regSyncValue3, 0xC1},
|
||||||
|
{modeFSK, regPacketConfig1, 0xD8},
|
||||||
|
{modeFSK, regFifoThresh, 0x8F},
|
||||||
|
{modeFSK, regImageCal, 0x02},
|
||||||
|
{modeFSK, regDIO_MAPPING_1, 0x00},
|
||||||
|
{modeFSK, regDIO_MAPPING_2, 0x30},
|
||||||
|
{modeLoRa, regDETECTION_OPTIMIZE, 0x43},
|
||||||
|
{modeLoRa, regMAX_PAYLOAD_LENGTH, 0x40},
|
||||||
|
}
|
||||||
|
|||||||
+19
-3
@@ -160,13 +160,29 @@ const (
|
|||||||
|
|
||||||
// FSK/OOK registers.
|
// FSK/OOK registers.
|
||||||
const (
|
const (
|
||||||
regImageCal = 0x3b
|
regImageCal = 0x3b
|
||||||
regTemp = 0x3c
|
regTemp = 0x3c
|
||||||
|
regRXConfig = 0x0D
|
||||||
|
regRSSIConfig = 0x0E
|
||||||
|
regAFCFEI = 0x1a
|
||||||
|
regPreambleDetect = 0x1f
|
||||||
|
regOsc = 0x24
|
||||||
|
regSyncConfig = 0x27
|
||||||
|
regSyncValue1 = 0x28
|
||||||
|
regSyncValue2 = 0x29
|
||||||
|
regSyncValue3 = 0x2A
|
||||||
|
regSyncValue4 = 0x2B
|
||||||
|
regSyncValue5 = 0x2C
|
||||||
|
regSyncValue6 = 0x2D
|
||||||
|
regSyncValue7 = 0x2E
|
||||||
|
regSyncValue8 = 0x2F
|
||||||
|
regPacketConfig1 = 0x30
|
||||||
|
regFifoThresh = 0x35
|
||||||
// Values that would be read from regTemp:
|
// Values that would be read from regTemp:
|
||||||
lowTempVal uint8 = 64 // -40 C
|
lowTempVal uint8 = 64 // -40 C
|
||||||
medTempVal uint8 = 245 // +25 C
|
medTempVal uint8 = 245 // +25 C
|
||||||
hiTempVal uint8 = 181 // +85 C
|
hiTempVal uint8 = 181 // +85 C
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var bandwidths = [bw500_0 + 1]lora.Frequency{
|
var bandwidths = [bw500_0 + 1]lora.Frequency{
|
||||||
|
|||||||
@@ -1170,3 +1170,21 @@ func (d *DeviceLoRa) imageCal(deadline time.Time) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *DeviceLoRaBare) setModem(mode uint8) error {
|
||||||
|
d.SetOpModeBare(OpSleep)
|
||||||
|
const loramask uint8 = 0x7f
|
||||||
|
switch mode {
|
||||||
|
case modeFSK:
|
||||||
|
d.DL.writeMasked8(regOP_MODE, ^loramask, 0)
|
||||||
|
d.DL.Write8(regDIO_MAPPING_1, 0)
|
||||||
|
d.DL.Write8(regDIO_MAPPING_2, 0x30)
|
||||||
|
case modeLoRa:
|
||||||
|
d.DL.writeMasked8(regOP_MODE, (^loramask)|uint8(opLoRaBit), byte(opLoRaBit))
|
||||||
|
d.DL.Write8(regDIO_MAPPING_1, 0)
|
||||||
|
d.DL.Write8(regDIO_MAPPING_2, 0)
|
||||||
|
default:
|
||||||
|
return errors.New("invalid modem")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user