|
|
@@ -61,7 +61,6 @@ DMA_HandleTypeDef hdma_adc;
|
|
|
SPI_HandleTypeDef hspi1;
|
|
|
|
|
|
TIM_HandleTypeDef htim21;
|
|
|
-TIM_HandleTypeDef htim22;
|
|
|
|
|
|
UART_HandleTypeDef huart2;
|
|
|
DMA_HandleTypeDef hdma_usart2_tx;
|
|
|
@@ -76,7 +75,6 @@ void SystemClock_Config(void);
|
|
|
static void MX_GPIO_Init(void);
|
|
|
static void MX_DMA_Init(void);
|
|
|
static void MX_USART2_UART_Init(void);
|
|
|
-static void MX_TIM22_Init(void);
|
|
|
static void MX_TIM21_Init(void);
|
|
|
static void MX_ADC_Init(void);
|
|
|
static void MX_SPI1_Init(void);
|
|
|
@@ -86,11 +84,12 @@ static void MX_SPI1_Init(void);
|
|
|
|
|
|
/* Private user code ---------------------------------------------------------*/
|
|
|
/* USER CODE BEGIN 0 */
|
|
|
-uint8_t data[64];
|
|
|
-uint8_t dataUART[64];
|
|
|
+uint8_t data[64]; // tmp read buffer
|
|
|
+uint8_t *dataUART; // pointee for rx_buffer
|
|
|
volatile uint8_t dataL;
|
|
|
volatile uint8_t dataI;
|
|
|
-volatile uint8_t dataUartReady=0;
|
|
|
+
|
|
|
+volatile uint8_t icm_data_ready = 0;
|
|
|
|
|
|
inline void uart_send(uint8_t *data, int n)
|
|
|
{
|
|
|
@@ -101,6 +100,11 @@ inline void uart_send(uint8_t *data, int n)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+inline void uart_receive(uint8_t *dataNBUS, int n)
|
|
|
+{
|
|
|
+ dataUART = dataNBUS;
|
|
|
+ HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, n);
|
|
|
+}
|
|
|
|
|
|
inline void led_on(){
|
|
|
HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET);
|
|
|
@@ -114,84 +118,50 @@ inline void led_toggle(){
|
|
|
HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
|
|
|
}
|
|
|
|
|
|
-inline void uart_receive(uint8_t *data, int n)
|
|
|
-{
|
|
|
- HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, n);
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
-inline void uart_abort_receive(){
|
|
|
- HAL_UART_AbortReceive_IT(&huart2);
|
|
|
-}
|
|
|
-
|
|
|
-inline void timer_uart_start(int n){
|
|
|
- htim22.Instance->CNT = 1;
|
|
|
- htim22.Instance->ARR = 40*n + 400; // (10*n + 100)us
|
|
|
- HAL_TIM_Base_Start_IT(&htim22);
|
|
|
-}
|
|
|
-
|
|
|
-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();
|
|
|
+static inline uint8_t loop_callback() {
|
|
|
+ if(icm_data_ready == 1){
|
|
|
+ icm_data_ready = 0;
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
}
|
|
|
-*/
|
|
|
|
|
|
+// Application callbacks
|
|
|
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);
|
|
|
+ uint8_t copy_offset = 0;
|
|
|
if(dataL==0){
|
|
|
dataL = data[0];
|
|
|
dataI = 0;
|
|
|
-// HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, 64);
|
|
|
HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
|
|
|
- return;
|
|
|
+ if(Size == 1){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ dataI = 1;
|
|
|
+ Size--;
|
|
|
+ copy_offset = 1;
|
|
|
}
|
|
|
- memcpy(&dataUART[dataI], data, Size);
|
|
|
+
|
|
|
+ memcpy(&dataUART[dataI], &data[copy_offset], Size);
|
|
|
dataI += Size;
|
|
|
- //HAL_UART_Transmit_DMA(huart, dataUART, dataI);
|
|
|
if(dataI >= dataL){
|
|
|
HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
|
|
|
+ nbus_cb_UART_RX(dataI);
|
|
|
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;
|
|
|
|
|
|
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
|
|
|
icm_data_ready = 1;
|
|
|
}
|
|
|
|
|
|
|
|
|
-static inline uint8_t loop_callback() {
|
|
|
- if(icm_data_ready == 1){
|
|
|
- icm_data_ready = 0;
|
|
|
- return 1;
|
|
|
- }
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
/* USER CODE END 0 */
|
|
|
|
|
|
/**
|
|
|
@@ -224,7 +194,6 @@ int main(void)
|
|
|
MX_GPIO_Init();
|
|
|
MX_DMA_Init();
|
|
|
MX_USART2_UART_Init();
|
|
|
- MX_TIM22_Init();
|
|
|
MX_TIM21_Init();
|
|
|
MX_SPI1_Init();
|
|
|
/* USER CODE BEGIN 2 */
|
|
|
@@ -232,7 +201,6 @@ int main(void)
|
|
|
dataI=0;
|
|
|
dataL=0;
|
|
|
|
|
|
-
|
|
|
#ifdef MODULE_INIT_IP_ADC
|
|
|
MX_ADC_Init();
|
|
|
#endif
|
|
|
@@ -249,12 +217,9 @@ int main(void)
|
|
|
nBusPlatformInterface_t hw_platform = {
|
|
|
uart_receive,
|
|
|
uart_send,
|
|
|
-// NULL,
|
|
|
led_on,
|
|
|
led_off,
|
|
|
led_toggle,
|
|
|
-// timer_uart_start,
|
|
|
-// timer_uart_stop,
|
|
|
app_delay,
|
|
|
loop_callback,
|
|
|
};
|
|
|
@@ -290,12 +255,9 @@ int main(void)
|
|
|
|
|
|
nbus_init(getImuDriver(), &hw_platform);
|
|
|
nbus_init_app(&hspi1, &config);
|
|
|
- // nbus_set_app_callback(loop_callback);
|
|
|
+ //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);
|
|
|
-
|
|
|
nBus_MemoryDriver memory_ec20 = {
|
|
|
DS28EC20_init,
|
|
|
DS28EC20_readData4B,
|
|
|
@@ -305,13 +267,6 @@ 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);
|
|
|
@@ -576,51 +531,6 @@ static void MX_TIM21_Init(void)
|
|
|
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * @brief TIM22 Initialization Function
|
|
|
- * @param None
|
|
|
- * @retval None
|
|
|
- */
|
|
|
-static void MX_TIM22_Init(void)
|
|
|
-{
|
|
|
-
|
|
|
- /* USER CODE BEGIN TIM22_Init 0 */
|
|
|
-
|
|
|
- /* USER CODE END TIM22_Init 0 */
|
|
|
-
|
|
|
- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
|
|
- TIM_MasterConfigTypeDef sMasterConfig = {0};
|
|
|
-
|
|
|
- /* USER CODE BEGIN TIM22_Init 1 */
|
|
|
-
|
|
|
- /* USER CODE END TIM22_Init 1 */
|
|
|
- htim22.Instance = TIM22;
|
|
|
- htim22.Init.Prescaler = UART_TIMER_PRESCALER;
|
|
|
- htim22.Init.CounterMode = TIM_COUNTERMODE_UP;
|
|
|
- htim22.Init.Period = 65535;
|
|
|
- htim22.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
|
|
- htim22.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
|
|
- if (HAL_TIM_Base_Init(&htim22) != HAL_OK)
|
|
|
- {
|
|
|
- Error_Handler();
|
|
|
- }
|
|
|
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
|
|
- if (HAL_TIM_ConfigClockSource(&htim22, &sClockSourceConfig) != HAL_OK)
|
|
|
- {
|
|
|
- Error_Handler();
|
|
|
- }
|
|
|
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
|
|
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
|
|
- if (HAL_TIMEx_MasterConfigSynchronization(&htim22, &sMasterConfig) != HAL_OK)
|
|
|
- {
|
|
|
- Error_Handler();
|
|
|
- }
|
|
|
- /* USER CODE BEGIN TIM22_Init 2 */
|
|
|
-
|
|
|
- /* USER CODE END TIM22_Init 2 */
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* @brief USART2 Initialization Function
|
|
|
* @param None
|