169 lines
5.5 KiB
C
169 lines
5.5 KiB
C
#ifndef __PIN_CONFIG_H__
|
|
#define __PIN_CONFIG_H__
|
|
#include "main.h"
|
|
|
|
/* TODO find correct pins for LEDs */
|
|
#define LED_GPIO GPIOA
|
|
#define LED_GPIO_CLK RCC_APB2Periph_GPIOA
|
|
#define LED_GPIO_CLK_RCC 2
|
|
#define LED_RED_PIN GPIO_Pin_11
|
|
#define LED_GREEN_PIN GPIO_Pin_12
|
|
|
|
|
|
// enable SBUS output -> this will DISABLE ppm!
|
|
#define SBUS_ENABLED
|
|
// Note: default/futaba is INVERTED=1! (use this for a cc3d etc)
|
|
// inverted => idle = LOW
|
|
// non inverted => idle = high
|
|
#define SBUS_INVERTED
|
|
|
|
// PPM (only used if sbus is disabled)
|
|
// invert SBUS output (normal is non inverted)
|
|
// #define PPM_INVERTED
|
|
|
|
// hub telemetry input (soft serial)
|
|
// #define HUB_TELEMETRY_ON_SBUS_UART
|
|
// #define HUB_TELEMETRY_INVERTED
|
|
// #define PPM_INVERTED
|
|
|
|
#define SBUS_USART USART1
|
|
#define SBUS_USART_CLK RCC_APB2Periph_USART1
|
|
#define SBUS_USART_RCC 2
|
|
#define SBUS_USART_GPIO GPIOA
|
|
#define SBUS_USART_GPIO_CLK RCC_APB2Periph_GPIOA
|
|
#define SBUS_USART_GPIO_CLK_RCC 2
|
|
#define SBUS_USART_TX_PIN GPIO_Pin_9
|
|
#define SBUS_USART_IRQHANDLER USART1_IRQHandler
|
|
#define SBUS_USART_IRQn USART1_IRQn
|
|
|
|
#define CC25XX_SPI_GPIO GPIOB
|
|
#define CC25XX_SPI_SCK_PIN GPIO_Pin_13
|
|
#define CC25XX_SPI_MOSI_PIN GPIO_Pin_15
|
|
#define CC25XX_SPI_MISO_PIN GPIO_Pin_14
|
|
/*
|
|
NOTE: CS pin is on GPIOA, PA8
|
|
NOTE: GDO2 pin is on GPIOA, PA11
|
|
*/
|
|
#define CC25XX_SPI_CSN_PIN GPIO_Pin_8
|
|
#define CC25XX_SPI_GDO2_PIN GPIO_Pin_11
|
|
|
|
#define CC25XX_SPI SPI2
|
|
#define CC25XX_SPI_CLK RCC_APB2Periph_SPI2
|
|
#define CC25XX_SPI_CLK_RCC 2
|
|
/* TODO ?? chose correct DMA for SPI2 */
|
|
#define CC25XX_SPI_GPIO_CLK RCC_APB2Periph_GPIOB
|
|
#define CC25XX_SPI_DMA_CLOCK RCC_AHBPeriph_DMA1
|
|
#define CC25XX_SPI_TX_DMA_CHANNEL DMA1_Channel3
|
|
#define CC25XX_SPI_TX_DMA_TC_FLAG DMA1_FLAG_TC3
|
|
#define CC25XX_SPI_RX_DMA_CHANNEL DMA1_Channel2
|
|
#define CC25XX_SPI_RX_DMA_TC_FLAG DMA1_FLAG_TC2
|
|
|
|
/*
|
|
XSR uses the Skyworks SE2431 range extender
|
|
See: http:// www.skyworksinc.com/uploads/documents/SE2431L_202410J.pdf
|
|
|
|
Looks to be a similar design to this: http:// www.ti.com/tool/CC2530-SE2431L
|
|
|
|
Which means the RX pin selection is not needed (it is RX if TX is off)
|
|
|
|
Either ANT can be used for both RX and TX.
|
|
|
|
High is logic 1, Low is logic 0
|
|
|
|
ANT (PB5) selection is 0 (left) or 1 (right)
|
|
CTX (PA15) is 0 then RX LNA mode active, or 1 then tx mode
|
|
CPS (PB3) is 0 then bypass mode is active, 1 is bypass off.
|
|
CSD (PB4) with 1 to enable chip (0 = sleep)
|
|
*/
|
|
|
|
/* TODO revisit base on the above */
|
|
#define CC25XX_ANT_SW_CTX_GPIO GPIOC
|
|
#define CC25XX_ANT_SW_CTX_GPIO_CLK RCC_APB2Periph_GPIOC
|
|
#define CC25XX_ANT_SW_CTX_GPIO_CLK_RCC 2
|
|
#define CC25XX_ANT_SW_CTX_PIN GPIO_Pin_15
|
|
|
|
|
|
#define CC25XX_ANT_SW_CRX_GPIO GPIOC
|
|
#define CC25XX_ANT_SW_CRX_GPIO_CLK RCC_APB2Periph_GPIOC
|
|
#define CC25XX_ANT_SW_CRX_GPIO_CLK_RCC 2
|
|
#define CC25XX_ANT_SW_CRX_PIN GPIO_Pin_14
|
|
|
|
|
|
#define CC25XX_LNA_SW_CTX_GPIO GPIOA
|
|
#define CC25XX_LNA_SW_CTX_GPIO_CLK RCC_APB2Periph_GPIOA
|
|
#define CC25XX_LNA_SW_CTX_GPIO_CLK_RCC 2
|
|
#define CC25XX_LNA_SW_CTX_PIN GPIO_Pin_15
|
|
|
|
|
|
#define CC25XX_LNA_SW_CRX_GPIO GPIOB
|
|
#define CC25XX_LNA_SW_CRX_GPIO_CLK RCC_APB2Periph_GPIOB
|
|
#define CC25XX_LNA_SW_CRX_GPIO_CLK_RCC 2
|
|
#define CC25XX_LNA_SW_CRX_PIN GPIO_Pin_4
|
|
|
|
/* GDO2 is on PA11 */
|
|
#define CC25XX_GDO2_GPIO GPIOA
|
|
#define CC25XX_GDO2_PIN GPIO_Pin_11
|
|
#define CC25XX_GDO2_GPIO_CLK RCC_APB2Periph_GPIOA
|
|
#define CC25XX_GDO2_GPIO_CLK_RCC 2
|
|
|
|
/* bind pin is attached to PC13, and pushing button pulls to ground. */
|
|
#define BIND_JUMPER_GPIO GPIOC
|
|
#define BIND_JUMPER_PIN GPIO_Pin_13
|
|
#define BIND_JUMPER_GPIO_CLK RCC_APB2Periph_GPIOC
|
|
#define BIND_JUMPER_GPIO_CLK_RCC 2
|
|
|
|
/*
|
|
EEPROM is connected to PA0 (SCL) and PA1 (SDA)
|
|
|
|
Note that this is **NOT** an I2C port on the F1 so must use SOFT I2C
|
|
*/
|
|
#define EEPROM_GPIO GPIOA
|
|
#define EEPROM_GPIO_CLK RCC_APB2Periph_GPIOA
|
|
#define EEPROM_GPIO_CLK_RCC 2
|
|
#define EEPROM_I2C_SDA_PIN GPIO_Pin_1
|
|
#define EEPROM_I2C_SCL_PIN GPIO_Pin_0
|
|
/* TODO: ??? */
|
|
#define EEPROM_WP_PIN GPIO_Pin_8
|
|
// A2=LO, A1=LO, A0=HI on pcb
|
|
#define EEPROM_I2C_ADDRESS 0xA2
|
|
|
|
/* NOTE no analogue input for XSR, and no servo pins */
|
|
|
|
// cppm output is on PB12
|
|
#define PPM_GPIO GPIOB
|
|
#define PPM_GPIO_CLK RCC_APB2Periph_GPIOB
|
|
#define PPM_GPIO_CLK_RCC 2
|
|
#define PPM_PIN GPIO_Pin_12
|
|
/* TODO: ??? chose timer for pin */
|
|
#define PPM_TIMER TIM3
|
|
#define PPM_TIMER_CLK RCC_APB1Periph_TIM3
|
|
#define PPM_TIMER_CLK_RCC 1
|
|
#define PPM_TIMER_CH TIM_Channel_3
|
|
#define PPM_TIMER_IRQHANDLER TIM3_IRQHandler
|
|
#define PPM_TIMER_IRQn TIM3_IRQn
|
|
|
|
/*
|
|
hub telemetry input is RX USART3 (SPORT)
|
|
|
|
PB11 for RX and PB10 for TX both inverted once leaving board.
|
|
Output Enable (OE) is PA2
|
|
*/
|
|
|
|
|
|
// THIS CONFIGURES IRQ PRIORITIES - DO NOT MESS THIS UP!
|
|
// this is the most critical stuff:
|
|
#define NVIC_PRIO_PPM 1
|
|
// sbus is a tx interrupt, this can be delayed at no cost
|
|
#define NVIC_PRIO_SBUS 6
|
|
// this is very time critical, but as telemetry data is not that important
|
|
// we allow this to be interrupted (=corrupted) occasionally
|
|
#define NVIC_PRIO_SOFT_SERIAL 2
|
|
// debugging data is not critical
|
|
#define NVIC_PRIO_DEBUG_UART 7
|
|
// systick prio
|
|
#define NVIC_PRIO_SYSTICK 0
|
|
|
|
#define DEFAULT_FSCAL_VALUE -62
|
|
|
|
#endif // __PIN_CONFIG_H__
|