mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-08-04 06:57:48 +00:00
b6c750ccd1
This first version of the driver has been tested with STM32WL SoC, which embeddeds SX1262 radio on the same die.
81 lines
2.2 KiB
Go
81 lines
2.2 KiB
Go
package main
|
|
|
|
// This example will periodically enable Continuous "Preamble" and "Wave" modes on 868.1 Mhz
|
|
import (
|
|
"machine"
|
|
"time"
|
|
|
|
rfswitch "tinygo.org/x/drivers/examples/sx126x/rfswitch"
|
|
|
|
"tinygo.org/x/drivers/sx126x"
|
|
)
|
|
|
|
const FREQ = 868100000
|
|
|
|
var (
|
|
loraRadio *sx126x.Device
|
|
)
|
|
|
|
func main() {
|
|
println("\n# TinyGo Lora continuous Wave/Preamble test")
|
|
println("# -----------------------------------------")
|
|
|
|
machine.LED.Configure(machine.PinConfig{Mode: machine.PinOutput})
|
|
|
|
// Create the driver
|
|
loraRadio = sx126x.New(machine.SPI3)
|
|
loraRadio.SetDeviceType(sx126x.DEVICE_TYPE_SX1262)
|
|
|
|
// Create RF Switch
|
|
var radioSwitch rfswitch.CustomSwitch
|
|
loraRadio.SetRfSwitch(radioSwitch)
|
|
|
|
state := loraRadio.DetectDevice()
|
|
if !state {
|
|
panic("sx126x not detected. ")
|
|
}
|
|
|
|
// Prepare for Lora operation
|
|
loraConf := sx126x.LoraConfig{
|
|
Freq: FREQ,
|
|
Bw: sx126x.SX126X_LORA_BW_500_0,
|
|
Sf: sx126x.SX126X_LORA_SF9,
|
|
Cr: sx126x.SX126X_LORA_CR_4_7,
|
|
HeaderType: sx126x.SX126X_LORA_HEADER_EXPLICIT,
|
|
Preamble: 12,
|
|
Ldr: sx126x.SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF,
|
|
Iq: sx126x.SX126X_LORA_IQ_STANDARD,
|
|
Crc: sx126x.SX126X_LORA_CRC_ON,
|
|
SyncWord: sx126x.SX126X_LORA_MAC_PRIVATE_SYNCWORD,
|
|
LoraTxPowerDBm: 14,
|
|
}
|
|
loraRadio.LoraConfig(loraConf)
|
|
|
|
// Although LoraConfig has already configured most of Lora settings,
|
|
// the following lines are still required to enable Continuous Preamble/Wave
|
|
loraRadio.SetPacketType(sx126x.SX126X_PACKET_TYPE_LORA)
|
|
loraRadio.SetRfFrequency(loraConf.Freq)
|
|
loraRadio.SetModulationParams(loraConf.Sf, loraConf.Bw, loraConf.Cr, loraConf.Ldr)
|
|
loraRadio.SetTxParams(loraConf.LoraTxPowerDBm, sx126x.SX126X_PA_RAMP_200U)
|
|
|
|
for {
|
|
println("2 seconds in Continuous Preamble")
|
|
loraRadio.SetStandby()
|
|
loraRadio.SetTxContinuousPreamble()
|
|
time.Sleep(2 * time.Second)
|
|
println("Continuous Preamble Stopped")
|
|
|
|
loraRadio.SetStandby()
|
|
time.Sleep(10 * time.Second)
|
|
|
|
println("2 seconds in Continuous Wave")
|
|
loraRadio.SetTxContinuousWave()
|
|
time.Sleep(2 * time.Second)
|
|
println(" Continuous Wave Stopped")
|
|
|
|
loraRadio.SetStandby()
|
|
time.Sleep(60 * time.Second)
|
|
|
|
}
|
|
}
|