From 4e4130e524edf987d56c5ec081697f32091b47ef Mon Sep 17 00:00:00 2001 From: Silvano Seva Date: Sat, 23 Jan 2021 18:58:31 +0100 Subject: [PATCH] Added some missing setters for AT1846S calibration and fixed other ones --- platform/drivers/baseband/AT1846S.c | 26 ++++++++++++++-- platform/drivers/baseband/AT1846S.h | 46 +++++++++++++++++++---------- 2 files changed, 54 insertions(+), 18 deletions(-) diff --git a/platform/drivers/baseband/AT1846S.c b/platform/drivers/baseband/AT1846S.c index f317840e..3a68ba37 100644 --- a/platform/drivers/baseband/AT1846S.c +++ b/platform/drivers/baseband/AT1846S.c @@ -200,6 +200,9 @@ void AT1846S_setOpMode(AT1846S_op_t mode) i2c_writeReg16(0x58, 0xBC05); i2c_writeReg16(0x44, 0x06FF); i2c_writeReg16(0x40, 0x0030); + + _maskSetRegister(0x57, 0x0001, 0x00); /* Audio feedback off */ + _maskSetRegister(0x3A, 0x7000, 0x4000); /* Select voice channel */ } _reloadConfig(); @@ -242,9 +245,10 @@ void AT1846S_setAgcGain(uint8_t gain) _maskSetRegister(0x44, 0x0F00, agc); } -void AT1846S_setTxDeviation(uint8_t dev) +void AT1846S_setTxDeviation(uint16_t dev) { - _maskSetRegister(0x59, 0x003F, ((uint16_t) dev)); + uint16_t value = (dev & 0x03FF) << 6; + _maskSetRegister(0x59, 0xFFC0, value); } void AT1846S_setRxAudioGain(uint8_t gainWb, uint8_t gainNb) @@ -254,6 +258,24 @@ void AT1846S_setRxAudioGain(uint8_t gainWb, uint8_t gainNb) _maskSetRegister(0x44, 0x000F, ((uint16_t) gainNb)); } +void AT1846S_setNoise1Thresholds(uint8_t highTsh, uint8_t lowTsh) +{ + uint16_t value = ((highTsh & 0x1f) << 8) | (lowTsh & 0x1F); + i2c_writeReg16(0x48, value); +} + +void AT1846S_setNoise2Thresholds(uint8_t highTsh, uint8_t lowTsh) +{ + uint16_t value = ((highTsh & 0x1f) << 8) | (lowTsh & 0x1F); + i2c_writeReg16(0x60, value); +} + +void AT1846S_setRssiThresholds(uint8_t highTsh, uint8_t lowTsh) +{ + uint16_t value = ((highTsh & 0x1f) << 8) | (lowTsh & 0x1F); + i2c_writeReg16(0x3F, value); +} + void AT1846S_setPaDrive(uint8_t value) { uint16_t pa = value << 11; diff --git a/platform/drivers/baseband/AT1846S.h b/platform/drivers/baseband/AT1846S.h index 1e44eab5..efcc5996 100644 --- a/platform/drivers/baseband/AT1846S.h +++ b/platform/drivers/baseband/AT1846S.h @@ -48,73 +48,87 @@ typedef enum AT1846S_func_t; /** - * + * */ void AT1846S_init(); /** - * + * */ void AT1846S_postInit(); /** - * + * */ void AT1846S_setFrequency(const freq_t freq); /** - * + * */ void AT1846S_setBandwidth(AT1846S_bw_t band); /** - * + * */ void AT1846S_setOpMode(AT1846S_op_t mode); /** - * + * */ void AT1846S_setFuncMode(AT1846S_func_t mode); /** - * + * */ uint16_t AT1846S_readRSSI(); /** - * + * */ void AT1846S_setPgaGain(uint8_t gain); /** - * + * */ void AT1846S_setMicGain(uint8_t gain); - /** - * + * */ -void AT1846S_setTxDeviation(uint8_t dev); +void AT1846S_setTxDeviation(uint16_t dev); /** - * + * */ void AT1846S_setAgcGain(uint8_t gain); /** - * + * */ void AT1846S_setRxAudioGain(uint8_t gainWb, uint8_t gainNb); /** - * + * + */ +void AT1846S_setNoise1Thresholds(uint8_t highTsh, uint8_t lowTsh); + +/** + * + */ +void AT1846S_setNoise2Thresholds(uint8_t highTsh, uint8_t lowTsh); + +/** + * + */ +void AT1846S_setRssiThresholds(uint8_t highTsh, uint8_t lowTsh); + +/** + * */ void AT1846S_setPaDrive(uint8_t value); /** - * + * */ void AT1846S_setAnalogSqlThresh(uint8_t thresh);