From 60f3679e6098f3043c29cd24577d7353580017ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=B6=85=E6=9D=B0?= Date: Mon, 24 Mar 2025 09:30:54 +0800 Subject: [PATCH] [STM32L476] bsp code, support for rs485,watchdog and can --- .../XiZi_IIoT/board/stm32l476rgt6/board.c | 24 +- .../board/stm32l476rgt6/img/RS485.png | Bin 0 -> 32365 bytes .../XiZi_IIoT/board/stm32l476rgt6/img/can.png | Bin 0 -> 92442 bytes .../board/stm32l476rgt6/img/watchdog.png | Bin 0 -> 36453 bytes .../include/stm32l4xx_hal_conf.h | 6 +- .../stm32l476rgt6/third_party_driver/Kconfig | 53 ++- .../stm32l476rgt6/third_party_driver/Makefile | 8 + .../third_party_driver/can/Kconfig | 11 + .../third_party_driver/can/Makefile | 4 + .../third_party_driver/can/connect_can.c | 332 ++++++++++++++++++ .../third_party_driver/include/connect_can.h | 36 ++ .../third_party_driver/include/connect_wdt.h | 37 ++ .../STM32L4xx_HAL_Driver/src/Makefile | 4 +- .../third_party_driver/uart/connect_usart.c | 37 +- .../third_party_driver/watchdog/Kconfig | 15 + .../third_party_driver/watchdog/Makefile | 3 + .../third_party_driver/watchdog/connect_wdt.c | 182 ++++++++++ 17 files changed, 721 insertions(+), 31 deletions(-) create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/img/RS485.png create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/img/can.png create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/img/watchdog.png create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/Kconfig create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/Makefile create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/connect_can.c create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/include/connect_can.h create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/include/connect_wdt.h create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/Kconfig create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/Makefile create mode 100644 Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/connect_wdt.c diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/board.c b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/board.c index 4d5a2a97a..1b7d76c95 100644 --- a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/board.c +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/board.c @@ -26,6 +26,8 @@ #include "connect_usart.h" #include "connect_spi.h" #include "connect_usb.h" +#include "connect_wdt.h" +#include "connect_can.h" void Error_Handler(void) { @@ -47,8 +49,10 @@ void SystemClock_Config(void) __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); /** Initializes the CPU, AHB and APB busses clocks */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE|RCC_OSCILLATORTYPE_MSI; + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_LSE + |RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.LSEState = RCC_LSE_ON; + RCC_OscInitStruct.LSIState = RCC_LSI_ON; RCC_OscInitStruct.MSIState = RCC_MSI_ON; RCC_OscInitStruct.MSICalibrationValue = 0; RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_6; @@ -69,7 +73,7 @@ void SystemClock_Config(void) |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV16; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) @@ -80,10 +84,10 @@ void SystemClock_Config(void) |RCC_PERIPHCLK_USART3|RCC_PERIPHCLK_UART4 |RCC_PERIPHCLK_UART5|RCC_PERIPHCLK_USB; PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; - PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; - PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1; - PeriphClkInit.Uart4ClockSelection = RCC_UART4CLKSOURCE_PCLK1; - PeriphClkInit.Uart5ClockSelection = RCC_UART5CLKSOURCE_PCLK1; + PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_SYSCLK; + PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_SYSCLK; + PeriphClkInit.Uart4ClockSelection = RCC_UART4CLKSOURCE_SYSCLK; + PeriphClkInit.Uart5ClockSelection = RCC_UART5CLKSOURCE_SYSCLK; PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLLSAI1; PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_MSI; PeriphClkInit.PLLSAI1.PLLSAI1M = 1; @@ -140,6 +144,14 @@ void InitBoardHardware() #ifdef BSP_USING_USB HwUsbDeviceInit(); #endif + +#ifdef BSP_USING_WDT + HwWdtInit(); +#endif + +#ifdef BSP_USING_CAN + HwCanInit(); +#endif /* disable interrupt */ __set_PRIMASK(1); diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/img/RS485.png b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/img/RS485.png new file mode 100644 index 0000000000000000000000000000000000000000..60bedb9ba3b6a9cb42049b84cc23367bfd57411d GIT binary patch literal 32365 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 Fe*k2DSs(xa literal 0 HcmV?d00001 diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/img/can.png b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/img/can.png new file mode 100644 index 0000000000000000000000000000000000000000..d18138b5b0faf70061b4fd1e75f9315c72888495 GIT binary patch literal 92442 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�xp*7S`uSJ?U;+NB*B&4$lD9QVzqiOp=VX#^ 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 literal 0 HcmV?d00001 diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/img/watchdog.png b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/img/watchdog.png new file mode 100644 index 0000000000000000000000000000000000000000..12cd1da61688ba9f93b93007b52446bd84d358f1 GIT binary patch literal 36453 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 WBb}0K2I8^6KUF2Q>%|JDf&U-1c~r~* literal 0 HcmV?d00001 diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/include/stm32l4xx_hal_conf.h b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/include/stm32l4xx_hal_conf.h index b8c83cb9e..5e4e7e379 100644 --- a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/include/stm32l4xx_hal_conf.h +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/include/stm32l4xx_hal_conf.h @@ -51,7 +51,7 @@ #define HAL_MODULE_ENABLED /*#define HAL_ADC_MODULE_ENABLED */ /*#define HAL_CRYP_MODULE_ENABLED */ -/*#define HAL_CAN_MODULE_ENABLED */ +#define HAL_CAN_MODULE_ENABLED /*#define HAL_COMP_MODULE_ENABLED */ /*#define HAL_CRC_MODULE_ENABLED */ /*#define HAL_CRYP_MODULE_ENABLED */ @@ -66,7 +66,7 @@ /*#define HAL_HASH_MODULE_ENABLED */ /*#define HAL_I2S_MODULE_ENABLED */ /*#define HAL_IRDA_MODULE_ENABLED */ -/*#define HAL_IWDG_MODULE_ENABLED */ +#define HAL_IWDG_MODULE_ENABLED /*#define HAL_LTDC_MODULE_ENABLED */ /*#define HAL_LCD_MODULE_ENABLED */ /*#define HAL_LPTIM_MODULE_ENABLED */ @@ -92,7 +92,7 @@ /*#define HAL_TSC_MODULE_ENABLED */ #define HAL_UART_MODULE_ENABLED /*#define HAL_USART_MODULE_ENABLED */ -/*#define HAL_WWDG_MODULE_ENABLED */ +#define HAL_WWDG_MODULE_ENABLED /*#define HAL_EXTI_MODULE_ENABLED */ #define HAL_GPIO_MODULE_ENABLED #define HAL_EXTI_MODULE_ENABLED diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/Kconfig b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/Kconfig index 3444f758e..8c0fa384c 100755 --- a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/Kconfig +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/Kconfig @@ -1,25 +1,42 @@ menuconfig BSP_USING_UART -bool "Using UART device" -default y -select RESOURCES_SERIAL -if BSP_USING_UART -source "$BSP_DIR/third_party_driver/uart/Kconfig" -endif + bool "Using UART device" + default y + select RESOURCES_SERIAL + if BSP_USING_UART + source "$BSP_DIR/third_party_driver/uart/Kconfig" + endif menuconfig BSP_USING_SPI -bool "Using SPI device" -default y -select RESOURCES_SPI -if BSP_USING_SPI -source "$BSP_DIR/third_party_driver/spi/Kconfig" -endif + bool "Using SPI device" + default n + select RESOURCES_SPI + if BSP_USING_SPI + source "$BSP_DIR/third_party_driver/spi/Kconfig" + endif menuconfig BSP_USING_USB -bool "Using USB device" -default y -select RESOURCES_USB -if BSP_USING_USB -source "$BSP_DIR/third_party_driver/usb/Kconfig" -endif + bool "Using USB device" + default n + select RESOURCES_USB + if BSP_USING_USB + source "$BSP_DIR/third_party_driver/usb/Kconfig" + endif + +menuconfig BSP_USING_WDT + bool "Using WDT device" + default n + select RESOURCES_WDT + if BSP_USING_WDT + source "$BSP_DIR/third_party_driver/watchdog/Kconfig" + endif + +menuconfig BSP_USING_CAN + bool "Using CAN device" + default n + select RESOURCES_CAN + if BSP_USING_CAN + source "$BSP_DIR/third_party_driver/can/Kconfig" + endif + diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/Makefile b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/Makefile index 754928db8..4b9e72ee9 100644 --- a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/Makefile +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/Makefile @@ -12,4 +12,12 @@ ifeq ($(CONFIG_BSP_USING_USB),y) SRC_DIR += usb endif +ifeq ($(CONFIG_BSP_USING_WDT),y) + SRC_DIR += watchdog +endif + +ifeq ($(CONFIG_BSP_USING_CAN),y) + SRC_DIR += can +endif + include $(KERNEL_ROOT)/compiler.mk diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/Kconfig b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/Kconfig new file mode 100644 index 000000000..cd17d6219 --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/Kconfig @@ -0,0 +1,11 @@ +config CAN_BUS_NAME + string "can bus name" + default "can1" + +config CAN_DRIVER_NAME + string "can driver name" + default "can1_drv" + +config CAN_DEVICE_NAME + string "can device name" + default "can1_dev1" \ No newline at end of file diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/Makefile b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/Makefile new file mode 100644 index 000000000..22aba4901 --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/Makefile @@ -0,0 +1,4 @@ +SRC_FILES := connect_can.c + + +include $(KERNEL_ROOT)/compiler.mk \ No newline at end of file diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/connect_can.c b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/connect_can.c new file mode 100644 index 000000000..9e5c78bc6 --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/can/connect_can.c @@ -0,0 +1,332 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/** +* @file connect_can.c +* @brief support stm32l476 can function and register to bus framework +* @version 2.0 +* @author AIIT XUOS Lab +* @date 2025-03-14 +*/ + +/************************************************* +File name: connect_can.c +Description: support stm32l476 can function and register to bus framework +Others: +History: +1. Date: 2025-03-14 +Author: AIIT XUOS Lab +Modification: +1. support stm32l476 can configure, write and read +2. support stm32l476 can bus device and driver register +*************************************************/ + +#include "connect_can.h" +#include "stm32l476xx.h" +#include "stm32l4xx_hal.h" + +CAN_HandleTypeDef hcan1; + +#define GET_CAN_BS2_TQ(x) ((x) == 1 ? CAN_BS2_1TQ : (x) == 2 ? CAN_BS2_2TQ : (x) == 3 ? CAN_BS2_3TQ : (x) == 4 ? CAN_BS2_4TQ : \ + (x) == 5 ? CAN_BS2_5TQ : (x) == 6 ? CAN_BS2_6TQ : (x) == 7 ? CAN_BS2_7TQ : (x) == 8 ? CAN_BS2_8TQ : CAN_BS2_1TQ) + +#define GET_CAN_BS1_TQ(x) ((x) == 1 ? CAN_BS1_1TQ : (x) == 2 ? CAN_BS1_2TQ : (x) == 3 ? CAN_BS1_3TQ : (x) == 4 ? CAN_BS1_4TQ : \ + (x) == 5 ? CAN_BS1_5TQ : (x) == 6 ? CAN_BS1_6TQ : (x) == 7 ? CAN_BS1_7TQ : (x) == 8 ? CAN_BS1_8TQ : \ + (x) == 9 ? CAN_BS1_9TQ : (x) == 10 ? CAN_BS1_10TQ : (x) == 11 ? CAN_BS1_11TQ : (x) == 12 ? CAN_BS1_12TQ : \ + (x) == 13 ? CAN_BS1_13TQ : (x) == 14 ? CAN_BS1_14TQ : (x) == 15 ? CAN_BS1_15TQ : (x) == 16 ? CAN_BS1_16TQ : CAN_BS1_1TQ) + +#define GET_CAN_SJW_TQ(x) ((x) == 1 ? CAN_SJW_1TQ : (x) == 2 ? CAN_SJW_2TQ : (x) == 3 ? CAN_SJW_3TQ : (x) == 4 ? CAN_SJW_4TQ : CAN_SJW_1TQ ) +#define GET_CAN_MODE(x) ((x) == 0 ? CAN_MODE_NORMAL : (x) == 1 ? CAN_MODE_LOOPBACK : (x) == 2 ? CAN_MODE_SILENT : (x) == 3 ? CAN_MODE_SILENT_LOOPBACK : CAN_MODE_NORMAL ) + +static void CanInit(struct CanDriverConfigure *can_drv_config) +{ + __HAL_RCC_CAN1_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /**CAN1 GPIO Configuration + PB8 ------> CAN1_RX + PB9 ------> CAN1_TX + */ + GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF9_CAN1; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + hcan1.Instance = CAN1; + hcan1.Init.Prescaler = can_drv_config->brp; + hcan1.Init.Mode = GET_CAN_MODE(can_drv_config->mode); + hcan1.Init.SyncJumpWidth = GET_CAN_SJW_TQ(can_drv_config->tsjw); + hcan1.Init.TimeSeg1 = GET_CAN_BS1_TQ(can_drv_config->tbs1); + hcan1.Init.TimeSeg2 = GET_CAN_BS2_TQ(can_drv_config->tbs2); + hcan1.Init.TimeTriggeredMode = DISABLE; + hcan1.Init.AutoBusOff = DISABLE; + hcan1.Init.AutoWakeUp = DISABLE; + hcan1.Init.AutoRetransmission = DISABLE; + hcan1.Init.ReceiveFifoLocked = DISABLE; + hcan1.Init.TransmitFifoPriority = DISABLE; + int ret = HAL_CAN_Init(&hcan1); + if (ret != HAL_OK) + { + KPrintf("Can init failed! ret=%d\n", ret); + } + + CAN_FilterTypeDef filter; + filter.FilterIdHigh = 0x0000; + filter.FilterMaskIdHigh = 0x0000; + filter.FilterIdLow = 0x0000; + filter.FilterMaskIdLow = 0x0000; + filter.FilterFIFOAssignment = CAN_RX_FIFO0; + filter.FilterBank = 0; + filter.FilterMode = CAN_FILTERMODE_IDMASK; + filter.FilterScale = CAN_FILTERSCALE_32BIT; + filter.FilterActivation = ENABLE; + HAL_CAN_ConfigFilter(&hcan1, &filter); +} + +static uint32 CanConfig(void *can_drv_config) +{ + x_err_t ret = EOK; + return ret; +} + +static uint32 CanDrvConfigure(void *drv, struct BusConfigureInfo *configure_info) +{ + x_err_t ret = EOK; + NULL_PARAM_CHECK(drv); + NULL_PARAM_CHECK(configure_info); + struct CanDriverConfigure *can_drv_config; + switch (configure_info->configure_cmd) + { + case OPE_INT: // can basic init + can_drv_config = (struct CanDriverConfigure *)configure_info->private_data; + CanInit(can_drv_config); + break; + case OPE_CFG: + CanConfig(configure_info->private_data); + break; + default: + break; + } + + return ret; +} + +static uint32 CanOpenDev(void * dev) +{ + HAL_CAN_Start(&hcan1); +} + +static uint32 CanCloseDev(void * dev) +{ + HAL_CAN_Stop(&hcan1); +} + +static uint32 CanWriteData(void * dev , struct BusBlockWriteParam *write_param) +{ + NULL_PARAM_CHECK(write_param); + uint32_t TxMailbox; + uint8 *data = (uint8 * ) write_param->buffer; + uint8 mbox; + uint16 i = 0; + uint16 timer_count = 1000; + CAN_TxHeaderTypeDef TxHeader; + int idx = 0; + while (idx < write_param->size) + { + int r_len = write_param->size - idx; + int size = r_len >= 8 ? 8 : r_len; + TxHeader.StdId = 0x55; + TxHeader.ExtId = 0x00; + TxHeader.RTR = CAN_RTR_DATA; + TxHeader.IDE = CAN_ID_STD; + TxHeader.DLC = size; + TxHeader.TransmitGlobalTime = DISABLE; + + // 发送消息 + int ret = HAL_CAN_AddTxMessage(&hcan1, &TxHeader, (uint8 *)(write_param->buffer + idx), &TxMailbox); + if ( ret != HAL_OK) { + KPrintf("Send message error: %d\n",ret); + } + idx += size; + } + + return EOK; +} + +static uint32 CanReadData(void *dev , struct BusBlockReadParam *databuf) +{ + NULL_PARAM_CHECK(dev); + NULL_PARAM_CHECK(databuf); + + CAN_RxHeaderTypeDef RxHeader; + uint8_t RxData[8]; + x_err_t ret=EOK; + uint32 len = -1; + struct CanSendConfigure *p_can_config = (struct CanSendConfigure*)databuf->buffer; + // while(HAL_CAN_GetRxFifoFillLevel(&hcan1, CAN_RX_FIFO0) == 0); + if (HAL_CAN_GetRxFifoFillLevel(&hcan1, CAN_RX_FIFO0) > 0) { + if (HAL_CAN_GetRxMessage(&hcan1, CAN_RX_FIFO0, &RxHeader, RxData) == HAL_OK) { + len = databuf->size < RxHeader.DLC ? databuf->size : RxHeader.DLC; + uint8* buf = databuf->buffer; + for (uint8_t i = 0; i < RxHeader.DLC; i++) { + buf[i] = RxData[i]; + } + } + } + + return len; +} + +static struct CanDevDone can_dev_done = +{ + .open = CanOpenDev, + .close = CanCloseDev, + .write = CanWriteData, + .read = CanReadData +}; + +static int BoardCanBusInit(struct CanBus *can_bus, struct CanDriver *can_driver) +{ + x_err_t ret = EOK; + + /*Init the can bus */ + ret = CanBusInit(can_bus, CAN_BUS_NAME); + if (EOK != ret) { + KPrintf("Board_can_init canBusInit error %d\n", ret); + return ERROR; + } + + /*Init the can driver*/ + ret = CanDriverInit(can_driver, CAN_DRIVER_NAME); + if (EOK != ret) { + KPrintf("Board_can_init canDriverInit error %d\n", ret); + return ERROR; + } + /*Attach the can driver to the can bus*/ + ret = CanDriverAttachToBus(CAN_DRIVER_NAME, CAN_BUS_NAME); + if (EOK != ret) { + KPrintf("Board_can_init CanDriverAttachToBus error %d\n", ret); + return ERROR; + } + + return ret; +} + +/* Attach the can device to the can bus*/ +static int BoardCanDevBend(void) +{ + x_err_t ret = EOK; + static struct CanHardwareDevice can_device; + memset(&can_device, 0, sizeof(struct CanHardwareDevice)); + + can_device.dev_done = &can_dev_done; + + ret = CanDeviceRegister(&can_device, NONE, CAN_DEVICE_NAME); + if (EOK != ret) { + KPrintf("board_can_init CanDeviceInit device %s error %d\n", CAN_DEVICE_NAME, ret); + return ERROR; + } + + ret = CanDeviceAttachToBus(CAN_DEVICE_NAME, CAN_BUS_NAME); + if (EOK != ret) { + KPrintf("board_can_init CanDeviceAttachToBus device %s error %d\n", CAN_DEVICE_NAME, ret); + return ERROR; + } + + return ret; +} + +int HwCanInit(void) +{ + x_err_t ret = EOK; + + static struct CanBus can_bus; + memset(&can_bus, 0, sizeof(struct CanBus)); + + static struct CanDriver can_driver; + memset(&can_driver, 0, sizeof(struct CanDriver)); + + can_driver.configure = &(CanDrvConfigure); + + ret = BoardCanBusInit(&can_bus, &can_driver); + if (EOK != ret) { + KPrintf(" can_bus_init %s error ret %u\n", CAN_BUS_NAME, ret); + return ERROR; + } + + ret = BoardCanDevBend(); + if (EOK != ret) { + KPrintf("board_can_init error ret %u\n", ret); + return ERROR; + } + return EOK; +} + +#ifdef TEST_CAN +static struct Bus *bus; +static struct HardwareDev *dev; +static struct Driver *drv; + +static uint32 TestCan(void) +{ + x_err_t ret = EOK; + bus = BusFind(CAN_BUS_NAME); + dev = BusFindDevice(bus, CAN_DEVICE_NAME); + drv = BusFindDriver(bus, CAN_DRIVER_NAME); + + struct BusConfigureInfo configure_info; + struct CanDriverConfigure can_config; + can_config.brp = 5; + can_config.mode = 0; + can_config.tbs1 = 7; + can_config.tbs2 = 2; + can_config.tsjw = 1; + // spi_master_param.spi_data_bit_width = 8; + // spi_master_param.spi_work_mode = SPI_MODE_0 | SPI_MSB; + + configure_info.configure_cmd = OPE_INT; + configure_info.private_data = (void *)&can_config; + ret = BusDrvConfigure(drv, &configure_info); + if (ret) { + // KPrintf("spi drv OPE_CFG error drv %8p cfg %8p\n", drv, &spi_master_param); + return ERROR; + } + + struct BusBlockWriteParam write_param; + struct BusBlockReadParam read_param; + + uint8 write_data[10] = {1,2,3,4,5,6,7,8,9,10}; + uint8 read_data = 0; + + BusDevOpen(dev); + + write_param.buffer = (void *)write_data; + write_param.size = 10; + BusDevWriteData(dev, &write_param); + + read_param.buffer = (void *)&read_data; + read_param.size = 1; + int n = BusDevReadData(dev, &read_param); + + // BusDevClose(dev); + KPrintf("write 1~10 data and receive %d data[0]=0x%x\n", n, read_data); + + return ret; +} +SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), + TestCan, TestCan, open can device and write_read parameters); + +#endif diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/include/connect_can.h b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/include/connect_can.h new file mode 100644 index 000000000..9b7e62c4e --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/include/connect_can.h @@ -0,0 +1,36 @@ +/* +* Copyright (c) 2021 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/** +* @file connect_can.h +* @brief define stm32l476 can function and struct +* @version 2.0 +* @author AIIT XUOS Lab +* @date 2025-03-14 +*/ + +#ifndef CONNECT_CAN_H +#define CONNECT_CAN_H + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +int HwCanInit(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/include/connect_wdt.h b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/include/connect_wdt.h new file mode 100644 index 000000000..2d602b39a --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/include/connect_wdt.h @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/** +* @file connect_wdt.h +* @brief define stm32l476 watchdog function and struct +* @version 1.0 +* @author AIIT XUOS Lab +* @date 2025-03-13 +*/ + +#ifndef CONNECT_WDT_H +#define CONNECT_WDT_H + +#include +#include "stm32l4xx_hal.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int HwWdtInit(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/libraries/STM32L4xx_HAL_Driver/src/Makefile b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/libraries/STM32L4xx_HAL_Driver/src/Makefile index a6ef5432b..8218a778d 100644 --- a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/libraries/STM32L4xx_HAL_Driver/src/Makefile +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/libraries/STM32L4xx_HAL_Driver/src/Makefile @@ -22,5 +22,7 @@ SRC_FILES := \ stm32l4xx_hal_spi_ex.c \ stm32l4xx_hal_pcd.c \ stm32l4xx_hal_pcd_ex.c \ - stm32l4xx_ll_usb.c + stm32l4xx_hal_can.c \ + stm32l4xx_ll_usb.c \ + stm32l4xx_hal_wwdg.c include $(KERNEL_ROOT)/compiler.mk diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/uart/connect_usart.c b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/uart/connect_usart.c index 23a759c9d..a5dd58665 100644 --- a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/uart/connect_usart.c +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/uart/connect_usart.c @@ -20,7 +20,6 @@ Modification: #include #include -#define BSP_USING_UART1 #if defined(BSP_USING_UART1) UART_HandleTypeDef huart1; #endif @@ -416,8 +415,6 @@ static int SerialGetChar(struct SerialHardwareDevice *serial_dev) if (serial_hw_cfg->uart_device->Instance->ISR & UART_FLAG_RXNE) { ch = serial_hw_cfg->uart_device->Instance->RDR & 0xff; } - // uint8_t data = serial_hw_cfg->uart_device->Instance->RDR; - // HAL_UART_Receive(serial_hw_cfg->uart_device, &ch, 1, 100); return ch; } @@ -741,3 +738,37 @@ int HwUsartInit(void) return ret; } + + +#ifdef TEST_RS485 +static struct Bus *bus; +static struct HardwareDev *dev; +static struct Driver *drv; + +void RS485Test(void) +{ + x_err_t ret = EOK; + + bus = BusFind(SERIAL_BUS_NAME_4); + dev = BusFindDevice(bus, SERIAL_4_DEVICE_NAME_0); + drv = BusFindDriver(bus, SERIAL_DRV_NAME_4); + + struct BusConfigureInfo configure_info; + configure_info.configure_cmd = OPE_INT; + struct SerialCfgParam serial_cfg; + memset(&serial_cfg, 0, sizeof(struct SerialCfgParam)); + configure_info.private_data = &serial_cfg; + ret = BusDrvConfigure(drv, &configure_info); + + struct BusBlockWriteParam write_param; + memset(&write_param, 0, sizeof(struct BusBlockWriteParam)); + + uint8 write_data[] = "Message from stm32L476 by RS485(UART5)"; + + write_param.buffer = (void *)write_data; + write_param.size = sizeof(write_data); + BusDevWriteData(dev, &write_param); +} +SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), + RS485Test, RS485Test, open uart device and use rs485 write_read parameters); +#endif diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/Kconfig b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/Kconfig new file mode 100644 index 000000000..b47dd9f77 --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/Kconfig @@ -0,0 +1,15 @@ +if BSP_USING_WDT + config WDT_BUS_NAME_0 + string "watchdog bus 0 name" + default "wdt0" + + config WDT_DRIVER_NAME_0 + string "watchdog driver 0 name" + default "wdt0_drv" + + config WDT_0_DEVICE_NAME_0 + string "watchdog device 0 name" + default "wdt0_dev0" +endif + + diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/Makefile b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/Makefile new file mode 100644 index 000000000..9be59f003 --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/Makefile @@ -0,0 +1,3 @@ +SRC_FILES := connect_wdt.c + +include $(KERNEL_ROOT)/compiler.mk diff --git a/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/connect_wdt.c b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/connect_wdt.c new file mode 100644 index 000000000..eb1a3a398 --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/stm32l476rgt6/third_party_driver/watchdog/connect_wdt.c @@ -0,0 +1,182 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/** +* @file connect_wdt.c +* @brief support stm32l476 watchdog function and register to bus framework +* @version 1.0 +* @author AIIT XUOS Lab +* @date 2025-03-13 +*/ + +#include + +WWDG_HandleTypeDef hwwdg; + +static uint32 WdtOpen(void *dev) +{ + NULL_PARAM_CHECK(dev); + + hwwdg.Instance = WWDG; + hwwdg.Init.Prescaler = WWDG_PRESCALER_8; + hwwdg.Init.Window = 127; + hwwdg.Init.Counter = 127; + hwwdg.Init.EWIMode = WWDG_EWI_DISABLE; + int ret = HAL_WWDG_Init(&hwwdg); + if ( ret != HAL_OK) + { + KPrintf("WdtOpen error ret %u\n", ret); + } else { + KPrintf("WdtOpen success\n"); + } + __HAL_RCC_WWDG_CLK_ENABLE(); + HAL_WWDG_Refresh(&hwwdg); + __HAL_WWDG_ENABLE(&hwwdg); + return EOK; +} + +static uint32 WdtConfigure(void *drv, struct BusConfigureInfo *args) +{ + NULL_PARAM_CHECK(drv); + NULL_PARAM_CHECK(args); + + // stm32 window based on a 7-bit downcounter + // The timing for feeding the dog must be greater than 0x3F + // So the window minimal value is 0x40 + int window = *((int*)args->private_data); + if(window > 127) { + window = 127; + } else if (window < 0x40) { + window = 0x40; + } + + switch (args->configure_cmd) + { + case OPER_WDT_SET_TIMEOUT: + hwwdg.Instance = WWDG; + hwwdg.Init.Prescaler = WWDG_PRESCALER_8; + hwwdg.Init.Window = window; + hwwdg.Init.Counter = 127; + hwwdg.Init.EWIMode = WWDG_EWI_DISABLE; + if (HAL_WWDG_Init(&hwwdg) != 0) { + return ERROR; + } + break; + case OPER_WDT_KEEPALIVE: + HAL_WWDG_Refresh(&hwwdg); + break; + default: + return ERROR; + } + return EOK; +} + +static const struct WdtDevDone dev_done = +{ + WdtOpen, + NONE, + NONE, + NONE, +}; + +/** + * @description: Watchdog function + * @return success: EOK, failure: other + */ +int StartWatchdog(void) +{ + //add feed watchdog task function + + return EOK; +} + +int HwWdtInit(void) +{ + x_err_t ret = EOK; + + static struct WdtBus wdt0; + + ret = WdtBusInit(&wdt0, WDT_BUS_NAME_0); + if (ret != EOK) { + KPrintf("Watchdog bus init error %d\n", ret); + return ERROR; + } + + static struct WdtDriver drv0; + drv0.configure = WdtConfigure; + + ret = WdtDriverInit(&drv0, WDT_DRIVER_NAME_0); + if (ret != EOK) { + KPrintf("Watchdog driver init error %d\n", ret); + return ERROR; + } + + ret = WdtDriverAttachToBus(WDT_DRIVER_NAME_0, WDT_BUS_NAME_0); + if (ret != EOK) { + KPrintf("Watchdog driver attach error %d\n", ret); + return ERROR; + } + + static struct WdtHardwareDevice dev0; + dev0.dev_done = &dev_done; + + ret = WdtDeviceRegister(&dev0, WDT_0_DEVICE_NAME_0); + if (ret != EOK) { + KPrintf("Watchdog device register error %d\n", ret); + return ERROR; + } + + ret = WdtDeviceAttachToBus(WDT_0_DEVICE_NAME_0, WDT_BUS_NAME_0); + if (ret != EOK) { + KPrintf("Watchdog device register error %d\n", ret); + return ERROR; + } + + return ret; +} + + +#ifdef TEST_WDT +static struct Bus *bus; +static struct HardwareDev *dev; +static struct Driver *drv; + +void WDTTest(void) +{ + x_err_t ret = EOK; + + bus = BusFind(WDT_BUS_NAME_0); + dev = BusFindDevice(bus, WDT_0_DEVICE_NAME_0); + drv = BusFindDriver(bus, WDT_DRIVER_NAME_0); + BusDevOpen(dev); + + struct BusConfigureInfo config; + memset(&config, 0 , sizeof(struct BusConfigureInfo)); + config.configure_cmd = OPER_WDT_KEEPALIVE; + + for (int i = 0; i < 1000; i++) + { + BusDrvConfigure(drv, &config); + HAL_Delay(5); + if (i%100 == 0) + { + KPrintf("feed dog for %d times\n", i); + } + + } + KPrintf("Stop feed dog, and waiting for reset...\n"); + int count = 0; + while(1); +} +SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), + WDTTest, WDTTest, watchdog test); +#endif