running and sending data over usart

This commit is contained in:
ggw
2026-04-30 15:01:35 -05:00
parent 82048ad703
commit af7f7cdc2e
5 changed files with 17 additions and 15 deletions
+10
View File
@@ -2,12 +2,14 @@
#include "packet.hpp"
#include "usbd_cdc_if.h"
#include "usart.h"
extern uint8_t databank1[1024];
extern uint8_t databank2[1024];
extern uint16_t pos;
volatile extern bool usb_ready;
volatile extern bool wb1mmc_ready;
// Every time we get a reading add to the active databank if it fits,
// if not we switch banks and write out the now unactive databank
@@ -23,6 +25,10 @@ void write(packet_type packet) {
CDC_Transmit_FS(databank1, sizeof(databank1));
usb_ready = false;
}
if (wb1mmc_ready) {
HAL_UART_Transmit_DMA(&huart1, databank1, sizeof(databank1));
wb1mmc_ready = false;
}
memset(databank2, 0, sizeof(databank2));
pos = sizeof(databank1);
return write(packet);
@@ -37,6 +43,10 @@ void write(packet_type packet) {
CDC_Transmit_FS(databank2, sizeof(databank2));
usb_ready = false;
}
if (wb1mmc_ready) {
HAL_UART_Transmit_DMA(&huart1, databank2, sizeof(databank2));
wb1mmc_ready = false;
}
memset(databank1, 0, sizeof(databank1));
pos = 0;
return write(packet);
+3 -12
View File
@@ -83,9 +83,7 @@ volatile bool usb_ready = false;
volatile bool wb1mmc_ready = false;
volatile bool print_desc = false;
volatile bool uart_rx_busy = false;
uint8_t uart_rx_data[1];
volatile bool queue_send = false;
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
if (hadc->Instance == ADC1) {
@@ -100,7 +98,6 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
tim6_reloads += 1;
to_recordVbatt = true;
to_recordTime = true;
queue_send = true;
}
}
@@ -116,6 +113,7 @@ void USB_CDC_RxHandler(uint8_t* Buf, uint32_t Len) {
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
if (uart_rx_data[0] == 'R') {
HAL_GPIO_TogglePin(GPIOB, LED1_Pin | LED2_Pin | LED3_Pin);
wb1mmc_ready = true;
}
HAL_UART_Receive_DMA(&huart1, uart_rx_data, sizeof(uart_rx_data));
}
@@ -174,8 +172,8 @@ int main(void)
HAL_TIM_Base_Start_IT(&htim6);
HAL_UART_Receive_DMA(&huart1, uart_rx_data, sizeof(uart_rx_data));
// For some reason initializing the ads131 first breaks the lsm6dsv gyro readings
//initialize_lsm6dsv(&hspi1);
//initialize_ads131(&hspi1);
initialize_lsm6dsv(&hspi1);
initialize_ads131(&hspi1);
while (1)
{
@@ -217,13 +215,6 @@ int main(void)
// CDC_Transmit_FS((uint8_t*) "Not Detected\n\r", 14);
// HAL_Delay(10);
// }
uint8_t uart_tx_data[1] = {'T'};
if (queue_send) {
HAL_UART_Transmit_DMA(&huart1, (uint8_t*)uart_tx_data, sizeof(uart_tx_data));
queue_send = false;
}
continue;
if (print_desc) {
data_description();
+1 -1
View File
@@ -41,7 +41,7 @@ void MX_USART1_UART_Init(void)
/* USER CODE END USART1_Init 1 */
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.BaudRate = 460800;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
+1 -1
View File
@@ -1,5 +1,5 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [4.9.0-B19] date: [Wed Apr 29 16:32:32 CDT 2026]
# File automatically-generated by tool: [projectgenerator] version: [4.9.0-B19] date: [Thu Apr 30 14:57:20 CDT 2026]
##########################################################################################################################
# ------------------------------------------------
+2 -1
View File
@@ -335,8 +335,9 @@ TIM6.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM6.IPParameters=Prescaler,AutoReloadPreload,Period
TIM6.Period=1999
TIM6.Prescaler=39999
USART1.BaudRate=460800
USART1.DMADisableonRxErrorParam=ADVFEATURE_DMA_ENABLEONRXERROR
USART1.IPParameters=VirtualMode-Asynchronous,OverrunDisableParam,DMADisableonRxErrorParam
USART1.IPParameters=VirtualMode-Asynchronous,OverrunDisableParam,DMADisableonRxErrorParam,BaudRate
USART1.OverrunDisableParam=ADVFEATURE_OVERRUN_ENABLE
USART1.VirtualMode-Asynchronous=VM_ASYNC
USB.IPParameters=Sof_enable