forked from xuos/xiuos
fix bug aiit-arm32-board support sx127x on nuttx
This commit is contained in:
parent
acd1cebad3
commit
35f1cc5d88
|
@ -143,7 +143,7 @@ static int sx127x_freq_select(uint32_t freq)
|
|||
|
||||
/* Only HF supported (BAND3 - 860-930 MHz) */
|
||||
|
||||
if (freq < SX127X_HFBAND_THR)
|
||||
if (freq > SX127X_HFBAND_THR)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
wlerr("LF band not supported\n");
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see the file kconfig-language.txt in the NuttX tools repository.
|
||||
#
|
||||
|
||||
if DRIVERS_LPWAN
|
||||
|
||||
config LPWAN_SX127X
|
||||
bool "SX127X Low Power Long Range transceiver support"
|
||||
default n
|
||||
select SPI
|
||||
select SCHED_HPWORK
|
||||
---help---
|
||||
This options adds driver support for the Samtech SX127X chip.
|
||||
|
||||
if LPWAN_SX127X
|
||||
|
||||
config LPWAN_SX127X_RFFREQ_DEFAULT
|
||||
int "SX127X default RF frequency"
|
||||
default 433000000
|
||||
|
||||
config LPWAN_SX127X_SPIFREQ
|
||||
int "SX127X SPI frequency"
|
||||
default 1000000
|
||||
---help---
|
||||
SX127X SPI frequency up to 10MHz
|
||||
|
||||
config LPWAN_SX127X_TXPOWER_DEFAULT
|
||||
int "SX127X default TX power"
|
||||
default 20
|
||||
|
||||
config LPWAN_SX127X_PREAMBLE_DEFAULT
|
||||
int "SX127X default preamble length"
|
||||
default 8
|
||||
|
||||
config LPWAN_SX127X_MODULATION_DEFAULT
|
||||
int "SX127X default modulation scheme"
|
||||
default 3 if LPWAN_SX127X_LORA
|
||||
default 1 if LPWAN_SX127X_FSKOOK
|
||||
range 1 3
|
||||
---help---
|
||||
1 - FSK, 2 - OOK, 3 - LORA
|
||||
|
||||
config LPWAN_SX127X_CRCON
|
||||
int "SX127X CRC ON"
|
||||
range 0 1
|
||||
default 1
|
||||
|
||||
config LPWAN_SX127X_RXSUPPORT
|
||||
bool "SX127X RX support"
|
||||
default y
|
||||
|
||||
if LPWAN_SX127X_RXSUPPORT
|
||||
|
||||
config LPWAN_SX127X_RXFIFO_LEN
|
||||
int "SX127X RX FIFO length"
|
||||
default 5
|
||||
|
||||
config LPWAN_SX127X_RXFIFO_DATA_LEN
|
||||
int "SX127X RX FIFO data length"
|
||||
default 256
|
||||
|
||||
endif #LPWAN_SX127X_RXSUPPORT
|
||||
|
||||
config LPWAN_SX127X_TXSUPPORT
|
||||
bool "SX127X TX support"
|
||||
default y
|
||||
|
||||
config LPWAN_SX127X_LORA
|
||||
bool "SX127X LORA support"
|
||||
default y
|
||||
|
||||
if LPWAN_SX127X_LORA
|
||||
|
||||
config LPWAN_SX127X_LORA_IMPHEADER
|
||||
int "SX127X LORA implicit header ON"
|
||||
range 0 1
|
||||
default 0
|
||||
|
||||
endif # LPWAN_SX127X_LORA
|
||||
|
||||
config LPWAN_SX127X_FSKOOK
|
||||
bool "SX127X FSK/OOK support"
|
||||
default n
|
||||
|
||||
endif # WL_SX127X
|
||||
|
||||
endif # DRIVERS_LPWAN
|
|
@ -769,6 +769,36 @@ static int sx127x_open(FAR struct file *filep)
|
|||
goto errout;
|
||||
}
|
||||
|
||||
/* Set modulation */
|
||||
|
||||
wlinfo("Set modulation mode to %d\n", CONFIG_LPWAN_SX127X_MODULATION_DEFAULT);
|
||||
ret = sx127x_modulation_set(dev, CONFIG_LPWAN_SX127X_MODULATION_DEFAULT);
|
||||
if (ret < 0)
|
||||
{
|
||||
wlerr("modulation_set failed\n");
|
||||
goto errout;
|
||||
}
|
||||
|
||||
/* Set RF frequency */
|
||||
|
||||
wlinfo("Set frequency to %" PRId32 "\n", CONFIG_LPWAN_SX127X_RFFREQ_DEFAULT);
|
||||
ret = sx127x_frequency_set(dev, CONFIG_LPWAN_SX127X_RFFREQ_DEFAULT);
|
||||
if (ret < 0)
|
||||
{
|
||||
wlerr("failed to change frequency %d!\n", ret);
|
||||
goto errout;
|
||||
}
|
||||
|
||||
/* Set TX power */
|
||||
|
||||
wlinfo("Set power to %d\n", CONFIG_LPWAN_SX127X_TXPOWER_DEFAULT);
|
||||
ret = sx127x_power_set(dev, CONFIG_LPWAN_SX127X_TXPOWER_DEFAULT);
|
||||
if (ret < 0)
|
||||
{
|
||||
wlerr("failed to change power %d!\n", ret);
|
||||
goto errout;
|
||||
}
|
||||
|
||||
dev->nopens++;
|
||||
|
||||
errout:
|
||||
|
@ -844,6 +874,13 @@ static ssize_t sx127x_read(FAR struct file *filep, FAR char *buffer,
|
|||
DEBUGASSERT(inode && inode->i_private);
|
||||
dev = (FAR struct sx127x_dev_s *)inode->i_private;
|
||||
|
||||
/* Set mode to RX */
|
||||
|
||||
wlinfo("Set opmode to %" PRId32 "\n", SX127X_OPMODE_RX);
|
||||
sx127x_opmode_set(dev, SX127X_OPMODE_RX);
|
||||
|
||||
sx127x_writeregbyte(dev, SX127X_LRM_IRQ, 8);
|
||||
|
||||
ret = nxsem_wait(&dev->dev_sem);
|
||||
if (ret < 0)
|
||||
{
|
||||
|
@ -912,9 +949,10 @@ static ssize_t sx127x_write(FAR struct file *filep, FAR const char *buffer,
|
|||
|
||||
sx127x_opmode_set(dev, SX127X_OPMODE_STANDBY);
|
||||
|
||||
/* Initialize TX mode */
|
||||
sx127x_writeregbyte(dev, SX127X_LRM_IRQ, 8);
|
||||
|
||||
/* Initialize TX mode */
|
||||
|
||||
ret = sx127x_opmode_init(dev, SX127X_OPMODE_TX);
|
||||
if (ret < 0)
|
||||
{
|
||||
|
@ -940,6 +978,8 @@ static ssize_t sx127x_write(FAR struct file *filep, FAR const char *buffer,
|
|||
|
||||
nxsem_wait(&dev->tx_sem);
|
||||
|
||||
sx127x_writeregbyte(dev, SX127X_LRM_IRQ, 8);
|
||||
|
||||
errout:
|
||||
/* Change mode to IDLE after transfer
|
||||
* NOTE: if sequencer for FSK/OOK is ON - this should be done automatically
|
||||
|
|
Loading…
Reference in New Issue