|
|
@@ -65,6 +65,7 @@ TIM_HandleTypeDef htim22;
|
|
|
|
|
|
UART_HandleTypeDef huart2;
|
|
|
DMA_HandleTypeDef hdma_usart2_tx;
|
|
|
+DMA_HandleTypeDef hdma_usart2_rx;
|
|
|
|
|
|
/* USER CODE BEGIN PV */
|
|
|
|
|
|
@@ -85,6 +86,12 @@ static void MX_SPI1_Init(void);
|
|
|
|
|
|
/* Private user code ---------------------------------------------------------*/
|
|
|
/* USER CODE BEGIN 0 */
|
|
|
+uint8_t data[64];
|
|
|
+uint8_t dataUART[64];
|
|
|
+volatile uint8_t dataL;
|
|
|
+volatile uint8_t dataI;
|
|
|
+volatile uint8_t dataUartReady=0;
|
|
|
+
|
|
|
inline void uart_send(uint8_t *data, int n)
|
|
|
{
|
|
|
#if USE_USART_DMA_TX == 1
|
|
|
@@ -107,11 +114,12 @@ inline void led_toggle(){
|
|
|
HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
|
|
|
}
|
|
|
|
|
|
-inline void uart_receive_it(uint8_t *data, int n)
|
|
|
+inline void uart_receive(uint8_t *data, int n)
|
|
|
{
|
|
|
- HAL_UART_Receive_IT(&huart2, data, n);
|
|
|
+ HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, n);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
inline void uart_abort_receive(){
|
|
|
HAL_UART_AbortReceive_IT(&huart2);
|
|
|
}
|
|
|
@@ -125,19 +133,49 @@ inline void timer_uart_start(int n){
|
|
|
inline void timer_uart_stop(){
|
|
|
HAL_TIM_Base_Stop_IT(&htim22);
|
|
|
}
|
|
|
-
|
|
|
+*/
|
|
|
inline void app_delay(uint8_t ms){
|
|
|
HAL_Delay(ms);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
static inline void nbus_app_UART_RX(UART_HandleTypeDef *huart) {
|
|
|
nbus_cb_UART_RX();
|
|
|
+}
|
|
|
+*/
|
|
|
+
|
|
|
+void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){
|
|
|
+
|
|
|
+ HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
|
|
|
+ HAL_UARTEx_ReceiveToIdle_DMA(huart, data, 64);
|
|
|
+ if(dataL==0){
|
|
|
+ dataL = data[0];
|
|
|
+ dataI = 0;
|
|
|
+// HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, 64);
|
|
|
+ HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ memcpy(&dataUART[dataI], data, Size);
|
|
|
+ dataI += Size;
|
|
|
+ //HAL_UART_Transmit_DMA(huart, dataUART, dataI);
|
|
|
+ if(dataI >= dataL){
|
|
|
+ HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
|
|
|
+ dataL=0;
|
|
|
+ dataI=0;
|
|
|
+ data[0]=0;
|
|
|
+ //nbus_cb_UART_RX(dataUART, dataI);
|
|
|
+ dataUartReady = 1;
|
|
|
+ }
|
|
|
+// HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, 64);
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
static inline void nbus_app_TIM_periodElapsed(TIM_HandleTypeDef *htim) {
|
|
|
nbus_cb_TIM_periodElapsed();
|
|
|
}
|
|
|
-
|
|
|
+*/
|
|
|
|
|
|
volatile uint8_t icm_data_ready = 0;
|
|
|
|
|
|
@@ -191,6 +229,10 @@ int main(void)
|
|
|
MX_SPI1_Init();
|
|
|
/* USER CODE BEGIN 2 */
|
|
|
|
|
|
+ dataI=0;
|
|
|
+ dataL=0;
|
|
|
+
|
|
|
+
|
|
|
#ifdef MODULE_INIT_IP_ADC
|
|
|
MX_ADC_Init();
|
|
|
#endif
|
|
|
@@ -205,14 +247,14 @@ int main(void)
|
|
|
#endif
|
|
|
|
|
|
nBusPlatformInterface_t hw_platform = {
|
|
|
- uart_receive_it,
|
|
|
+ uart_receive,
|
|
|
uart_send,
|
|
|
- uart_abort_receive,
|
|
|
+// NULL,
|
|
|
led_on,
|
|
|
led_off,
|
|
|
led_toggle,
|
|
|
- timer_uart_start,
|
|
|
- timer_uart_stop,
|
|
|
+// timer_uart_start,
|
|
|
+// timer_uart_stop,
|
|
|
app_delay,
|
|
|
loop_callback,
|
|
|
};
|
|
|
@@ -251,8 +293,8 @@ int main(void)
|
|
|
// nbus_set_app_callback(loop_callback);
|
|
|
#endif
|
|
|
|
|
|
- HAL_UART_RegisterCallback(&huart2, HAL_UART_RX_COMPLETE_CB_ID, nbus_app_UART_RX);
|
|
|
- HAL_TIM_RegisterCallback(&htim22, HAL_TIM_PERIOD_ELAPSED_CB_ID, nbus_app_TIM_periodElapsed);
|
|
|
+// HAL_UART_RegisterCallback(&huart2, HAL_UART_RX_COMPLETE_CB_ID, nbus_app_UART_RX);
|
|
|
+// HAL_TIM_RegisterCallback(&htim22, HAL_TIM_PERIOD_ELAPSED_CB_ID, nbus_app_TIM_periodElapsed);
|
|
|
|
|
|
nBus_MemoryDriver memory_ec20 = {
|
|
|
DS28EC20_init,
|
|
|
@@ -263,6 +305,14 @@ int main(void)
|
|
|
DS28EC20_getId
|
|
|
};
|
|
|
|
|
|
+ HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, 64);
|
|
|
+while(1){
|
|
|
+ if (dataUartReady == 1){
|
|
|
+ dataUartReady = 0;
|
|
|
+ HAL_UART_Transmit_DMA(&huart2, dataUART, dataI);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
memory_ec20.init(ONE_WIRE_GPIO_Port, ONE_WIRE_Pin);
|
|
|
nbus_init_memory_driver(&memory_ec20,16);
|
|
|
|