Configurable baudrate on external module for tests
This commit is contained in:
@@ -122,6 +122,7 @@ enum MenuModelSetupItems {
|
||||
ITEM_MODEL_EXTERNAL_MODULE_STATUS,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_SYNCSTATUS,
|
||||
#endif
|
||||
ITEM_MODEL_EXTERNAL_MODULE_BAUDRATE, // TODO remove this when we have adaptative speed
|
||||
ITEM_MODEL_EXTERNAL_MODULE_CHANNELS,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_NPXX2_BIND,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_PXX2_MODEL_NUM,
|
||||
@@ -482,6 +483,7 @@ void menuModelSetup(event_t event)
|
||||
EXTERNAL_MODULE_MODE_ROWS,
|
||||
MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE)
|
||||
MULTIMODULE_STATUS_ROWS
|
||||
IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // TODO remove this when we have adaptative speed
|
||||
EXTERNAL_MODULE_CHANNELS_ROWS,
|
||||
IF_NOT_PXX2_MODULE(EXTERNAL_MODULE, EXTERNAL_MODULE_BIND_ROWS()), // line reused for PPM: PPM settings
|
||||
IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // RxNum
|
||||
@@ -1164,6 +1166,15 @@ void menuModelSetup(event_t event)
|
||||
break;
|
||||
#endif
|
||||
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_BAUDRATE:
|
||||
extern uint32_t externalModuleBaudrate;
|
||||
lcdDrawTextAlignedLeft(y, INDENT "Baudrate");
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, externalModuleBaudrate, attr | LEFT);
|
||||
if (attr) {
|
||||
externalModuleBaudrate = checkIncDec(event, externalModuleBaudrate / 200, 576, 2100) * 200;
|
||||
}
|
||||
break;
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
case ITEM_MODEL_INTERNAL_MODULE_CHANNELS:
|
||||
#endif
|
||||
|
||||
@@ -154,8 +154,17 @@ void extmoduleInvertedSerialStart(uint32_t baudrate)
|
||||
NVIC_EnableIRQ(EXTMODULE_USART_IRQn);
|
||||
}
|
||||
|
||||
// TODO remove this when we have adaptative speed
|
||||
uint32_t externalModuleBaudrate = 230400;
|
||||
uint32_t currentExternalModuleBaudrate = 230400;
|
||||
|
||||
void extmoduleSendBuffer(const uint8_t * data, uint8_t size)
|
||||
{
|
||||
// TODO remove this when we have adaptative speed
|
||||
if (externalModuleBaudrate != currentExternalModuleBaudrate) {
|
||||
extmodulePxx2Start();
|
||||
}
|
||||
|
||||
DMA_InitTypeDef DMA_InitStructure;
|
||||
DMA_DeInit(EXTMODULE_USART_DMA_STREAM);
|
||||
DMA_InitStructure.DMA_Channel = EXTMODULE_USART_DMA_CHANNEL;
|
||||
@@ -178,6 +187,10 @@ void extmoduleSendBuffer(const uint8_t * data, uint8_t size)
|
||||
USART_DMACmd(EXTMODULE_USART, USART_DMAReq_Tx, ENABLE);
|
||||
}
|
||||
|
||||
// TODO remove this when we have adaptative speed
|
||||
uint8_t counter = 0;
|
||||
#include <stdio.h>
|
||||
|
||||
#define USART_FLAG_ERRORS (USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE | USART_FLAG_PE)
|
||||
extern "C" void EXTMODULE_USART_IRQHandler(void)
|
||||
{
|
||||
@@ -187,6 +200,9 @@ extern "C" void EXTMODULE_USART_IRQHandler(void)
|
||||
uint8_t data = EXTMODULE_USART->DR;
|
||||
if (status & USART_FLAG_ERRORS) {
|
||||
extmoduleFifo.errors++;
|
||||
if (!counter++) {
|
||||
TRACE_NOCRLF("%02X ", (uint8_t)status);
|
||||
}
|
||||
}
|
||||
else {
|
||||
extmoduleFifo.push(data);
|
||||
@@ -197,7 +213,11 @@ extern "C" void EXTMODULE_USART_IRQHandler(void)
|
||||
|
||||
void extmodulePxx2Start()
|
||||
{
|
||||
extmoduleInvertedSerialStart(EXTMODULE_USART_PXX2_BAUDRATE);
|
||||
// TODO remove this when we have adaptative speed
|
||||
currentExternalModuleBaudrate = externalModuleBaudrate;
|
||||
extmoduleInvertedSerialStart(externalModuleBaudrate);
|
||||
|
||||
// extmoduleInvertedSerialStart(EXTMODULE_USART_PXX2_BAUDRATE);
|
||||
}
|
||||
#else
|
||||
void extmodulePxx2Start()
|
||||
|
||||
Reference in New Issue
Block a user