1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-23 16:25:16 +03:00

UART3 Debug/SPORT modes

This commit is contained in:
Bertrand Songis 2014-02-01 19:50:49 +01:00
parent cdfc8b5b2b
commit c3417a0d88
13 changed files with 68 additions and 18 deletions

View file

@ -620,7 +620,7 @@ ifeq ($(PCB), TARANIS)
EEPROMSRC = eeprom_common.cpp eeprom_rlc.cpp eeprom_conversions.cpp
PULSESSRC = protocols/pulses_arm.cpp protocols/ppm_arm.cpp protocols/pxx_arm.cpp
CPPSRC += audio_arm.cpp
CPPSRC += targets/taranis/pwr_driver.cpp targets/taranis/pulses_driver.cpp targets/taranis/keys_driver.cpp targets/taranis/adc_driver.cpp targets/taranis/trainer_driver.cpp targets/taranis/audio_driver.cpp targets/taranis/delays.cpp targets/taranis/uart_driver.cpp targets/taranis/sport_driver.cpp
CPPSRC += targets/taranis/pwr_driver.cpp targets/taranis/pulses_driver.cpp targets/taranis/keys_driver.cpp targets/taranis/adc_driver.cpp targets/taranis/trainer_driver.cpp targets/taranis/audio_driver.cpp targets/taranis/delays.cpp targets/taranis/uart3_driver.cpp targets/taranis/sport_driver.cpp
CPPSRC += bmp.cpp gui/view_channels.cpp gui/view_about.cpp gui/view_text.cpp
SRC += targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c
SRC += targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c

View file

@ -73,7 +73,6 @@ inline void dump(unsigned char *data, unsigned int size)
extern "C" {
#endif
void debugPutc(const char c);
void debugPuts(const char *string, ...);
void dump(unsigned char *data, unsigned int size);

View file

@ -1200,8 +1200,12 @@ void menuGeneralHardware(uint8_t event)
}
case ITEM_SETUP_HW_UART3_MODE:
g_eeGeneral.hw_uartMode = selectMenuItem(HW_SETTINGS_COLUMN, y, STR_UART3MODE, STR_UART3MODES, g_eeGeneral.hw_uartMode, 0, 2, attr, event);
g_eeGeneral.uart3Mode = selectMenuItem(HW_SETTINGS_COLUMN, y, STR_UART3MODE, STR_UART3MODES, g_eeGeneral.uart3Mode, 0, UART_MODE_MAX, attr, event);
if (checkIncDec_Ret) {
uart3Init(g_eeGeneral.uart3Mode);
}
break;
}
}

View file

@ -243,9 +243,20 @@ enum BeeperMode {
#endif
#if defined(PCBTARANIS)
enum uartModes {
UART_MODE_NONE,
UART_MODE_SPORT,
UART_MODE_VIRTUAL_SP2UART,
#if defined(DEBUG)
UART_MODE_DEBUG,
#endif
UART_MODE_COUNT,
UART_MODE_MAX = UART_MODE_COUNT-1
};
#define EXTRA_GENERAL_FIELDS \
EXTRA_GENERAL_FIELDS_ARM \
uint8_t hw_uartMode; \
uint8_t uart3Mode; \
uint8_t potsType;
#elif defined(CPUARM)
#define EXTRA_GENERAL_FIELDS EXTRA_GENERAL_FIELDS_ARM

View file

@ -4972,6 +4972,10 @@ inline void opentxInit(OPENTX_INIT_ARGS)
lcdSetContrast();
backlightOn();
#if defined(PCBTARANIS)
uart3Init(g_eeGeneral.uart3Mode);
#endif
#if defined(CPUARM)
init_trainer_capture();
#endif

View file

@ -632,6 +632,7 @@ void lcdRefresh()
#if defined(PCBTARANIS)
void usbStart() { }
void USART_DeInit(USART_TypeDef* ) { }
ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct) { return SUCCESS; }
ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct) { return SUCCESS; }
void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct) { }

View file

@ -406,4 +406,5 @@ extern char simuSdDirectory[1024];
#define SD_GET_SIZE_MB() (0)
#define SD_GET_SPEED() (0)
#endif

View file

@ -258,4 +258,7 @@ void rotencEnd();
#define rotencDown() 0
#endif
// Debug driver
void debugPutc(const char c);
#endif

View file

@ -192,9 +192,6 @@ void boardInit()
adcInit();
delaysInit();
audioInit();
#if defined(DEBUG)
uartInit(DEBUG_UART_BAUDRATE);
#endif
init5msTimer();
__enable_irq();
eepromInit();

View file

@ -77,11 +77,11 @@ extern uint16_t sessionTimer;
void delaysInit();
#define DEBUG_UART_BAUDRATE 115200
#define DEBUG_BAUDRATE 115200
#define SPORT_BAUDRATE 57600
void uartInit(uint32_t baudrate);
void uartPutc(const char c);
void uart3Init(unsigned int mode);
void uart3Putc(const char c);
void sportInit(void);
@ -183,6 +183,8 @@ bool usbPlugged(void);
void eeWriteBlockCmp(const void *pointer_ram, uint16_t pointer_eeprom, size_t size);
#endif
// Debug driver
void debugPutc(const char c);
extern uint8_t currentTrainerMode;

View file

@ -36,7 +36,7 @@
#include "../../opentx.h"
void uartInit(uint32_t baudrate)
void uart3Setup(unsigned int baudrate)
{
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
@ -69,22 +69,47 @@ void uartInit(uint32_t baudrate)
USART_ITConfig(UART3, USART_IT_TXE, DISABLE);
NVIC_EnableIRQ(USART3_IRQn);
NVIC_SetPriority(USART3_IRQn, 8);
NVIC_SetPriority(USART3_IRQn, 7);
}
void uart3Init(unsigned int mode)
{
USART_DeInit(USART3);
switch(mode) {
case UART_MODE_SPORT:
uart3Setup(SPORT_BAUDRATE);
break;
#if defined(DEBUG)
case UART_MODE_DEBUG:
uart3Setup(DEBUG_BAUDRATE);
break;
#endif
}
}
Fifo<512> uart3TxFifo;
void uart3Putc(const char c)
{
uart3TxFifo.push(c);
USART_ITConfig(UART3, USART_IT_TXE, ENABLE);
}
#if defined(DEBUG)
Fifo<512> debugTxFifo;
void debugPutc(const char c)
{
debugTxFifo.push(c);
USART_ITConfig(UART3, USART_IT_TXE, ENABLE);
if (g_eeGeneral.uart3Mode == UART_MODE_DEBUG) {
uart3Putc(c);
}
}
#endif
extern "C" void USART3_IRQHandler(void)
{
if (USART_GetITStatus(UART3, USART_IT_TXE) != RESET) {
uint8_t txchar;
if (debugTxFifo.pop(txchar)) {
if (uart3TxFifo.pop(txchar)) {
/* Write one byte to the transmit data register */
USART_SendData(UART3, txchar);
}
@ -93,4 +118,3 @@ extern "C" void USART3_IRQHandler(void)
}
}
}
#endif

View file

@ -534,6 +534,10 @@ void processSerialData(uint8_t data)
btPushByte(data);
#endif
if (g_eeGeneral.uart3Mode == UART_MODE_SPORT) {
uart3Putc(data);
}
if (data == START_STOP) {
dataState = STATE_DATA_IN_FRAME;
numPktBytes = 0;

View file

@ -69,7 +69,7 @@
#define TR_TRNCHN "CH1CH2CH3CH4"
#define LEN_UART3MODES "\017"
#define TR_UART3MODES "OFF\0 ""SPORT Mirror\0 ""Virtual SP2UART"
#define TR_UART3MODES "OFF\0 ""SPORT Mirror\0 ""Virtual SP2UART""Debug\0"
#define LEN_POTTYPES "\017"
#define TR_POTTYPES "Pot\0 ""Multipos Switch"