fixes and start of ADC. Not really working yet
This commit is contained in:
@@ -190,7 +190,6 @@ error_t UUSART_SetupDMAs(Unit *unit)
|
||||
LL_DMA_EnableChannel(priv->dma, priv->dma_rx_chnum);
|
||||
LL_DMA_EnableChannel(priv->dma, priv->dma_tx_chnum);
|
||||
|
||||
// TODO also set up usart timeout interrupt that grabs whatever is in the DMA buffer and sends it
|
||||
return E_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -205,7 +204,7 @@ static void UUSART_DMA_RxHandler(void *arg)
|
||||
struct priv *priv = unit->data;
|
||||
assert_param(priv);
|
||||
|
||||
uint32_t isrsnapshot = priv->dma->ISR;
|
||||
const uint32_t isrsnapshot = priv->dma->ISR;
|
||||
|
||||
if (LL_DMA_IsActiveFlag_G(isrsnapshot, priv->dma_rx_chnum)) {
|
||||
bool tc = LL_DMA_IsActiveFlag_TC(isrsnapshot, priv->dma_rx_chnum);
|
||||
@@ -228,6 +227,7 @@ static void UUSART_DMA_RxHandler(void *arg)
|
||||
|
||||
if (LL_DMA_IsActiveFlag_TE(isrsnapshot, priv->dma_rx_chnum)) {
|
||||
// this shouldn't happen
|
||||
dbg("USART DMA TE!");
|
||||
LL_DMA_ClearFlag_TE(priv->dma, priv->dma_rx_chnum);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//
|
||||
// Created by MightyPork on 2018/01/14.
|
||||
//
|
||||
#include <platform/irq_dispatcher.h>
|
||||
#include "platform.h"
|
||||
#include "unit_base.h"
|
||||
|
||||
@@ -25,7 +24,7 @@ error_t UUSART_preInit(Unit *unit)
|
||||
priv->baudrate = 115200;
|
||||
priv->parity = 0; //!< 0-none, 1-odd, 2-even
|
||||
priv->stopbits = 1; //!< 0-half, 1-one, 2-1.5, 3-two
|
||||
priv->direction = 3; // RXTX
|
||||
priv->direction = UUSART_DIRECTION_RXTX; // RXTX
|
||||
|
||||
priv->hw_flow_control = false;
|
||||
priv->clock_output = false;
|
||||
@@ -205,7 +204,7 @@ static inline error_t UUSART_configPins(Unit *unit)
|
||||
if (pins_wanted[i]) {
|
||||
if (mappings[i].port == 0) return E_BAD_CONFIG;
|
||||
TRY(rsc_claim_pin(unit, mappings[i].port, mappings[i].pin));
|
||||
hw_configure_gpio_af(mappings[i].port, mappings[i].pin, mappings[i].af);
|
||||
TRY(hw_configure_gpio_af(mappings[i].port, mappings[i].pin, mappings[i].af));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,9 +251,9 @@ error_t UUSART_init(Unit *unit)
|
||||
: LL_USART_STOPBITS_2);
|
||||
|
||||
LL_USART_SetTransferDirection(priv->periph,
|
||||
priv->direction == 1 ? LL_USART_DIRECTION_RX :
|
||||
priv->direction == 2 ? LL_USART_DIRECTION_TX
|
||||
: LL_USART_DIRECTION_TX_RX);
|
||||
(priv->direction == UUSART_DIRECTION_RX) ? LL_USART_DIRECTION_RX :
|
||||
(priv->direction == UUSART_DIRECTION_TX) ? LL_USART_DIRECTION_TX
|
||||
: LL_USART_DIRECTION_TX_RX);
|
||||
|
||||
LL_USART_SetHWFlowCtrl(priv->periph,
|
||||
priv->hw_flow_control == 0 ? LL_USART_HWCONTROL_NONE :
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
#define UUSART_RXBUF_LEN 128
|
||||
#define UUSART_TXBUF_LEN 128
|
||||
|
||||
#define UUSART_DIRECTION_RX 1
|
||||
#define UUSART_DIRECTION_TX 2
|
||||
#define UUSART_DIRECTION_RXTX 3
|
||||
|
||||
/** Private data structure */
|
||||
struct priv {
|
||||
uint8_t periph_num; //!< 1-6
|
||||
|
||||
@@ -104,9 +104,9 @@ error_t UUSART_loadIni(Unit *unit, const char *key, const char *value)
|
||||
}
|
||||
else if (streq(key, "direction")) {
|
||||
priv->direction = (uint8_t) str_parse_3(value,
|
||||
"RX", 1,
|
||||
"TX", 2,
|
||||
"RXTX", 3, &suc);
|
||||
"RX", UUSART_DIRECTION_RX,
|
||||
"TX", UUSART_DIRECTION_TX,
|
||||
"RXTX", UUSART_DIRECTION_RXTX, &suc);
|
||||
}
|
||||
else if (streq(key, "hw-flow-control")) {
|
||||
priv->hw_flow_control = (uint8_t) str_parse_4(value,
|
||||
|
||||
Reference in New Issue
Block a user