mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-24 22:13:52 +01:00
drivers/ng_at86rf2xx: Refactor set_freq implementation for 212B
Uses BPSK-40 for all frequencies.
This commit is contained in:
parent
95a9bd9060
commit
c978c51da2
@ -138,38 +138,38 @@ ng_at86rf2xx_freq_t ng_at86rf2xx_get_freq(ng_at86rf2xx_t *dev)
|
||||
|
||||
void ng_at86rf2xx_set_freq(ng_at86rf2xx_t *dev, ng_at86rf2xx_freq_t freq)
|
||||
{
|
||||
uint8_t tmp1 = 0, tmp2 = 0;
|
||||
tmp1 = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__TRX_CTRL_2);
|
||||
tmp1 &= ~(NG_AT86RF2XX_TRX_CTRL_2_MASK__FREQ_MODE);
|
||||
tmp2 = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__RF_CTRL_0);
|
||||
uint8_t trx_ctrl2 = 0, rf_ctrl0 = 0;
|
||||
trx_ctrl2 = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__TRX_CTRL_2);
|
||||
trx_ctrl2 &= ~(NG_AT86RF2XX_TRX_CTRL_2_MASK__FREQ_MODE);
|
||||
rf_ctrl0 = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__RF_CTRL_0);
|
||||
/* Erase previous conf for GC_TX_OFFS */
|
||||
tmp2 &= ~NG_AT86RF2XX_RF_CTRL_0_MASK__GC_TX_OFFS;
|
||||
rf_ctrl0 &= ~NG_AT86RF2XX_RF_CTRL_0_MASK__GC_TX_OFFS;
|
||||
|
||||
if (freq == NG_AT86RF2XX_FREQ_915MHZ) {
|
||||
dev->freq = NG_AT86RF2XX_FREQ_915MHZ;
|
||||
/* settings used by Linux 4.0rc at86rf212b driver - BPSK-40*/
|
||||
tmp1 |= NG_AT86RF2XX_TRX_CTRL_2_MASK__SUB_MODE
|
||||
| NG_AT86RF2XX_TRX_CTRL_2_MASK__OQPSK_SCRAM_EN;
|
||||
tmp2 |= NG_AT86RF2XX_RF_CTRL_0_GC_TX_OFFS__2DB;
|
||||
trx_ctrl2 |= NG_AT86RF2XX_TRX_CTRL_2_MASK__SUB_MODE;
|
||||
rf_ctrl0 |= NG_AT86RF2XX_RF_CTRL_0_GC_TX_OFFS__2DB;
|
||||
|
||||
if (dev->chan == 0) {
|
||||
ng_at86rf2xx_set_chan(dev,NG_AT86RF2XX_DEFAULT_CHANNEL);
|
||||
} else {
|
||||
ng_at86rf2xx_set_chan(dev,dev->chan);
|
||||
}
|
||||
} else if (freq == NG_AT86RF2XX_FREQ_868MHZ) {
|
||||
dev->freq = NG_AT86RF2XX_FREQ_868MHZ;
|
||||
/* OQPSK-SIN-RC-100 IEEE802.15.4 for 868,3MHz */
|
||||
tmp1 |= NG_AT86RF2XX_TRX_CTRL_2_MASK__BPSK_OQPSK;
|
||||
tmp2 |= NG_AT86RF2XX_RF_CTRL_0_GC_TX_OFFS__1DB;
|
||||
switch(freq) {
|
||||
case NG_AT86RF2XX_FREQ_915MHZ:
|
||||
if (dev->chan == 0) {
|
||||
ng_at86rf2xx_set_chan(dev,NG_AT86RF2XX_DEFAULT_CHANNEL);
|
||||
} else {
|
||||
ng_at86rf2xx_set_chan(dev,dev->chan);
|
||||
}
|
||||
break;
|
||||
|
||||
/* Channel = 0 for 868MHz means 868.3MHz, only one available */
|
||||
ng_at86rf2xx_set_chan(dev,0x00);
|
||||
} else {
|
||||
return;
|
||||
case NG_AT86RF2XX_FREQ_868MHZ:
|
||||
/* Channel = 0 for 868MHz means 868.3MHz, only one available */
|
||||
ng_at86rf2xx_set_chan(dev,0x00);
|
||||
break;
|
||||
|
||||
default:
|
||||
DEBUG("ng_at86rf2xx: Trying to set unknown frequency 0x%lx\n",
|
||||
(unsigned long) freq);
|
||||
return;
|
||||
}
|
||||
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__TRX_CTRL_2, tmp1);
|
||||
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__RF_CTRL_0, tmp2);
|
||||
dev->freq = freq;
|
||||
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__TRX_CTRL_2, trx_ctrl2);
|
||||
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__RF_CTRL_0, rf_ctrl0);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user