SoftDevice: S113 v7.0.1
SDK: 15
Chip: nRF52840
It looks like setting PA/LNA pins on port 1 result in NRF_ERROR_INVALID_PARAM being returned by sd_ble_opt_set().
When PA/LNA pins are set on port 0, the problem does not exist.
I can't find such a constraint anywhere in the documentation. I need PA/LNA pins on port 1 because I use u-blox BMD-345 module.
Please advise.
My code:
void Amplifier_Init(uint32_t pa_pin, uint32_t lna_pin)
{
Amplifier.is_init = true;
Amplifier.pa_pin = pa_pin;
Amplifier.lna_pin = lna_pin;
nrf_gpio_cfg_output(Amplifier.pa_pin);
nrf_gpio_cfg_output(Amplifier.lna_pin);
uint32_t eep = (uint32_t)(&NRF_RADIO->EVENTS_READY);
uint32_t tep = nrf_gpiote_task_addr_get(AMPLIFIER_GPIOTE_SET_TASK);
nrf_ppi_channel_endpoint_setup(AMPLIFIER_PPI_SET_CHAN, eep, tep);
nrf_ppi_channel_enable(AMPLIFIER_PPI_SET_CHAN);
ble_opt_t opt;
memset(&opt, 0, sizeof(ble_opt_t));
opt.common_opt.pa_lna.gpiote_ch_id = AMPLIFIER_GPIOTE_IDX;
opt.common_opt.pa_lna.ppi_ch_id_clr = AMPLIFIER_PPI_SD_SET_CHAN;
opt.common_opt.pa_lna.ppi_ch_id_set = AMPLIFIER_PPI_SD_CLR_CHAN;
opt.common_opt.pa_lna.pa_cfg.active_high = 1;
opt.common_opt.pa_lna.pa_cfg.enable = 1;
opt.common_opt.pa_lna.pa_cfg.gpio_pin = pa_pin;
opt.common_opt.pa_lna.lna_cfg.active_high = 1;
opt.common_opt.pa_lna.lna_cfg.enable = 1;
opt.common_opt.pa_lna.lna_cfg.gpio_pin = lna_pin;
// FIXME: this fails with NRF_ERROR_INVALID_PARAM
uint32_t err_code = sd_ble_opt_set(BLE_COMMON_OPT_PA_LNA, &opt);
NRF_STATUS_CHECK(err_code);
}
------ // used #define constants
#define AMPLIFIER_GPIOTE_IDX 0
#define AMPLIFIER_GPIOTE_SET_TASK NRF_GPIOTE_TASKS_SET_0
#define AMPLIFIER_PPI_SD_SET_CHAN NRF_PPI_CHANNEL6
#define AMPLIFIER_PPI_SD_CLR_CHAN NRF_PPI_CHANNEL7
#define AMPLIFIER_PPI_SET_CHAN NRF_PPI_CHANNEL8
#define AMPLIFIER_PA_PIN_NUMBER NRF_GPIO_PIN_MAP(1, 5)
#define AMPLIFIER_LNA_PIN_NUMBER NRF_GPIO_PIN_MAP(1, 6)