fix(rf_path): First version of rad10 path
This commit is contained in:
@ -645,10 +645,10 @@ void disable_rf_power(void) {
|
||||
|
||||
#ifdef RAD10
|
||||
void enable_rf_power(void) {
|
||||
gpio_set(PORT_VDD_ENABLE, PIN_VDD_ENABLE);
|
||||
gpio_set(PORT_VAA_ENABLE, PIN_VAA_ENABLE);
|
||||
}
|
||||
|
||||
void disable_rf_power(void) {
|
||||
gpio_clear(PORT_VDD_ENABLE, PIN_VDD_ENABLE);
|
||||
gpio_clear(PORT_VAA_ENABLE, PIN_VAA_ENABLE);
|
||||
}
|
||||
#endif
|
||||
|
@ -164,6 +164,7 @@ extern "C"
|
||||
#define SCU_MIXER_SCLK (P2_6) /* GPIO5[6] on P2_6 */
|
||||
#define SCU_MIXER_SDATA (P6_4) /* GPIO3[3] on P6_4 */
|
||||
#define SCU_MIXER_LE (P5_5) /* GPIO2[14] on P5_5 */
|
||||
#define SCU_MIXER_EN (P6_8) /* GPIO5[16] on P6_8 */
|
||||
#endif
|
||||
|
||||
/* RF LDO control */
|
||||
@ -172,10 +173,15 @@ extern "C"
|
||||
#endif
|
||||
|
||||
/* RF supply (VAA) control */
|
||||
#if (defined HACKRF_ONE || defined RAD10)
|
||||
#ifdef HACKRF_ONE
|
||||
#define SCU_NO_VAA_ENABLE (P5_0) /* GPIO2[9] on P5_0 */
|
||||
#endif
|
||||
|
||||
#ifdef RAD10
|
||||
#define SCU_VAA_ENABLE (P5_0) /* GPIO2[9] on P5_0 */
|
||||
#endif
|
||||
|
||||
|
||||
/* SPI flash */
|
||||
#define SCU_SSP0_MISO (P3_6)
|
||||
#define SCU_SSP0_MOSI (P3_7)
|
||||
@ -211,8 +217,7 @@ extern "C"
|
||||
#define SCU_LOW_HIGH_FILT (P5_2) /* GPIO2[11] on P5_2 */
|
||||
#define SCU_LOW_HIGH_FILT_N (P5_3) /* GPIO2[12] on P5_3 */
|
||||
#define SCU_TX_AMP (P5_6) /* GPIO2[15] on P5_6 */
|
||||
#define SCU_RX_LNA (P5_7) /* GPIO5[15] on P6_7 */
|
||||
#define SCU_MIXER_EN (P6_8) /* GPIO5[16] on P6_8 */
|
||||
#define SCU_RX_LNA (P6_7) /* GPIO5[15] on P6_7 */
|
||||
#endif
|
||||
|
||||
/* TODO add other Pins */
|
||||
@ -318,6 +323,8 @@ extern "C"
|
||||
#define PORT_MIXER_SDATA (GPIO3)
|
||||
#define PIN_MIXER_LE (BIT14) /* GPIO2[14] on P5_5 */
|
||||
#define PORT_MIXER_LE (GPIO2)
|
||||
#define PIN_MIXER_EN (BIT16) /* GPIO5[16] on P6_8 */
|
||||
#define PORT_MIXER_EN (GPIO5)
|
||||
#endif
|
||||
|
||||
#ifdef JAWBREAKER
|
||||
@ -331,8 +338,8 @@ extern "C"
|
||||
#endif
|
||||
|
||||
#ifdef RAD10
|
||||
#define PIN_VDD_ENABLE (BIT9) /* GPIO2[9] on P5_0 */
|
||||
#define PORT_VDD_ENABLE (GPIO2) /* PORT for VDD_ENABLE */
|
||||
#define PIN_VAA_ENABLE (BIT9) /* GPIO2[9] on P5_0 */
|
||||
#define PORT_VAA_ENABLE (GPIO2) /* PORT for VAA_ENABLE */
|
||||
#endif
|
||||
|
||||
#define PIN_FLASH_HOLD (BIT14) /* GPIO1[14] on P3_4 */
|
||||
@ -392,8 +399,6 @@ extern "C"
|
||||
#define PORT_TX_AMP (GPIO2)
|
||||
#define PIN_RX_LNA (GPIOPIN15) /* GPIO5[15] on P6_7 */
|
||||
#define PORT_RX_LNA (GPIO5)
|
||||
#define PIN_MIXER_EN (GPIOPIN16) /* GPIO5[16] on P6_8 */
|
||||
#define PORT_MIXER_EN (GPIO5)
|
||||
#endif
|
||||
|
||||
/* GPIO Input */
|
||||
@ -454,7 +459,7 @@ bool sample_rate_frac_set(uint32_t rate_num, uint32_t rate_denom);
|
||||
bool sample_rate_set(const uint32_t sampling_rate_hz);
|
||||
bool baseband_filter_bandwidth_set(const uint32_t bandwidth_hz);
|
||||
|
||||
#ifdef HACKRF_ONE
|
||||
#if (defined HACKRF_ONE || defined RAD10)
|
||||
void enable_rf_power(void);
|
||||
void disable_rf_power(void);
|
||||
#endif
|
||||
|
@ -96,50 +96,52 @@ static void switchctrl_set_rad10(uint8_t ctrl) {
|
||||
gpio_set(PORT_TX_RX, PIN_TX_RX);
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (ctrl & SWITCHCTRL_MIX_BYPASS) {
|
||||
gpio_set(PORT_MIX_BYPASS, PIN_MIX_BYPASS);
|
||||
gpio_clear(PORT_NO_MIX_BYPASS, PIN_NO_MIX_BYPASS);
|
||||
if (ctrl & SWITCHCTRL_TX) {
|
||||
gpio_set(PORT_TX_MIX_BP, PIN_TX_MIX_BP);
|
||||
gpio_clear(PORT_RX_MIX_BP, PIN_RX_MIX_BP);
|
||||
} else {
|
||||
gpio_clear(PORT_TX_MIX_BP, PIN_TX_MIX_BP);
|
||||
gpio_set(PORT_RX_MIX_BP, PIN_RX_MIX_BP);
|
||||
}
|
||||
gpio_clear(PORT_BY_MIX, PIN_BY_MIX);
|
||||
gpio_set(PORT_BY_MIX_N, PIN_BY_MIX_N);
|
||||
} else {
|
||||
gpio_clear(PORT_MIX_BYPASS, PIN_MIX_BYPASS);
|
||||
gpio_set(PORT_NO_MIX_BYPASS, PIN_NO_MIX_BYPASS);
|
||||
gpio_clear(PORT_TX_MIX_BP, PIN_TX_MIX_BP);
|
||||
gpio_clear(PORT_RX_MIX_BP, PIN_RX_MIX_BP);
|
||||
gpio_set(PORT_BY_MIX, PIN_BY_MIX);
|
||||
gpio_clear(PORT_BY_MIX_N, PIN_BY_MIX_N);
|
||||
}
|
||||
|
||||
if (ctrl & SWITCHCTRL_HP) {
|
||||
gpio_set(PORT_HP, PIN_HP);
|
||||
gpio_clear(PORT_LP, PIN_LP);
|
||||
gpio_set(PORT_LOW_HIGH_FILT, PIN_LOW_HIGH_FILT);
|
||||
gpio_clear(PORT_LOW_HIGH_FILT_N, PIN_LOW_HIGH_FILT_N);
|
||||
} else {
|
||||
gpio_clear(PORT_HP, PIN_HP);
|
||||
gpio_set(PORT_LP, PIN_LP);
|
||||
gpio_clear(PORT_LOW_HIGH_FILT, PIN_LOW_HIGH_FILT);
|
||||
gpio_set(PORT_LOW_HIGH_FILT_N, PIN_LOW_HIGH_FILT_N);
|
||||
}
|
||||
|
||||
if (ctrl & SWITCHCTRL_AMP_BYPASS) {
|
||||
gpio_set(PORT_AMP_BYPASS, PIN_AMP_BYPASS);
|
||||
gpio_clear(PORT_BY_AMP, PIN_BY_AMP);
|
||||
gpio_set(PORT_BY_AMP_N, PIN_BY_AMP_N);
|
||||
|
||||
gpio_clear(PORT_TX_RX, PIN_TX_RX);
|
||||
gpio_set(PORT_TX_RX_N, PIN_TX_RX_N);
|
||||
|
||||
gpio_clear(PORT_TX_AMP, PIN_TX_AMP);
|
||||
gpio_set(PORT_NO_TX_AMP_PWR, PIN_NO_TX_AMP_PWR);
|
||||
gpio_clear(PORT_RX_AMP, PIN_RX_AMP);
|
||||
gpio_set(PORT_NO_RX_AMP_PWR, PIN_NO_RX_AMP_PWR);
|
||||
gpio_clear(PORT_RX_LNA, PIN_RX_LNA);
|
||||
|
||||
} else if (ctrl & SWITCHCTRL_TX) {
|
||||
gpio_clear(PORT_AMP_BYPASS, PIN_AMP_BYPASS);
|
||||
gpio_set(PORT_BY_AMP, PIN_BY_AMP);
|
||||
gpio_clear(PORT_BY_AMP_N, PIN_BY_AMP_N);
|
||||
|
||||
gpio_clear(PORT_TX_RX, PIN_TX_RX);
|
||||
gpio_set(PORT_TX_RX_N, PIN_TX_RX_N);
|
||||
|
||||
gpio_set(PORT_TX_AMP, PIN_TX_AMP);
|
||||
gpio_clear(PORT_NO_TX_AMP_PWR, PIN_NO_TX_AMP_PWR);
|
||||
gpio_clear(PORT_RX_AMP, PIN_RX_AMP);
|
||||
gpio_set(PORT_NO_RX_AMP_PWR, PIN_NO_RX_AMP_PWR);
|
||||
gpio_clear(PORT_RX_LNA, PIN_RX_LNA);
|
||||
|
||||
} else {
|
||||
gpio_clear(PORT_AMP_BYPASS, PIN_AMP_BYPASS);
|
||||
gpio_set(PORT_BY_AMP, PIN_BY_AMP);
|
||||
gpio_clear(PORT_BY_AMP_N, PIN_BY_AMP_N);
|
||||
|
||||
gpio_set(PORT_TX_RX, PIN_TX_RX);
|
||||
gpio_clear(PORT_TX_RX_N, PIN_TX_RX_N);
|
||||
|
||||
gpio_clear(PORT_TX_AMP, PIN_TX_AMP);
|
||||
gpio_set(PORT_NO_TX_AMP_PWR, PIN_NO_TX_AMP_PWR);
|
||||
gpio_set(PORT_RX_AMP, PIN_RX_AMP);
|
||||
gpio_clear(PORT_NO_RX_AMP_PWR, PIN_NO_RX_AMP_PWR);
|
||||
gpio_set(PORT_RX_LNA, PIN_RX_LNA);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -147,17 +149,17 @@ static void switchctrl_set_rad10(uint8_t ctrl) {
|
||||
* used to explicitly turn off power to the amplifiers while AMP_BYPASS
|
||||
* is unset:
|
||||
*/
|
||||
if (ctrl & SWITCHCTRL_NO_TX_AMP_PWR)
|
||||
gpio_set(PORT_NO_TX_AMP_PWR, PIN_NO_TX_AMP_PWR);
|
||||
if (ctrl & SWITCHCTRL_NO_RX_AMP_PWR)
|
||||
gpio_set(PORT_NO_RX_AMP_PWR, PIN_NO_RX_AMP_PWR);
|
||||
if (ctrl & SWITCHCTRL_NO_TX_AMP_PWR) {
|
||||
gpio_clear(PORT_TX_AMP, PIN_TX_AMP);
|
||||
}
|
||||
if (ctrl & SWITCHCTRL_NO_RX_AMP_PWR) {
|
||||
gpio_clear(PORT_RX_LNA, PIN_RX_LNA);
|
||||
}
|
||||
|
||||
if (ctrl & SWITCHCTRL_ANT_PWR) {
|
||||
mixer_set_gpo(0x00); /* turn on antenna power by clearing GPO1 */
|
||||
} else {
|
||||
mixer_set_gpo(0x01); /* turn off antenna power by setting GPO1 */
|
||||
// TODO
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -286,6 +288,42 @@ void rf_path_pin_setup() {
|
||||
/* Safe state: start with VAA turned off: */
|
||||
disable_rf_power();
|
||||
#endif
|
||||
|
||||
#ifdef RAD10
|
||||
/* Configure RF switch control signals */
|
||||
scu_pinmux(SCU_BY_AMP, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_BY_AMP_N, SCU_GPIO_FAST | SCU_CONF_FUNCTION4);
|
||||
scu_pinmux(SCU_TX_RX, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_TX_RX_N, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_BY_MIX, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_BY_MIX_N, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_LOW_HIGH_FILT, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_LOW_HIGH_FILT_N,SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_TX_AMP, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_RX_LNA, SCU_GPIO_FAST | SCU_CONF_FUNCTION4);
|
||||
|
||||
/* Configure RF power supply (VAA) switch */
|
||||
scu_pinmux(SCU_VAA_ENABLE, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
|
||||
/* Configure RF switch control signals as outputs */
|
||||
GPIO0_DIR |= PIN_TX_RX;
|
||||
GPIO1_DIR |= PIN_BY_AMP | PIN_TX_RX_N | PIN_BY_MIX;
|
||||
GPIO2_DIR |= PIN_BY_MIX_N | PIN_LOW_HIGH_FILT | PIN_LOW_HIGH_FILT_N | PIN_TX_AMP;
|
||||
GPIO5_DIR |= PIN_BY_AMP_N | PIN_RX_LNA;
|
||||
|
||||
/*
|
||||
* Safe (initial) switch settings turn off both amplifiers and antenna port
|
||||
* power and enable both amp bypass and mixer bypass.
|
||||
*/
|
||||
switchctrl_set(SWITCHCTRL_AMP_BYPASS | SWITCHCTRL_MIX_BYPASS);
|
||||
|
||||
/* Configure RF power supply (VAA) switch control signal as output */
|
||||
GPIO_DIR(PORT_VAA_ENABLE) |= PIN_VAA_ENABLE;
|
||||
|
||||
/* Safe state: start with VAA turned off: */
|
||||
disable_rf_power();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void rf_path_init(void) {
|
||||
|
Reference in New Issue
Block a user