From e0900f9b73e9748e87c7786bd075967e9ac74deb Mon Sep 17 00:00:00 2001 From: gaoyang3513 Date: Thu, 25 Jul 2024 20:35:55 +0800 Subject: [PATCH] =?UTF-8?q?[Mod]=20CMT2310=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 使用系统延时实现硬件抽象层us、ms延时; 2. 完成SPI初始化、收发实现; --- NSPE/WIFI_IOT/bsp/bsp_gd32w51x.c | 1 - .../Uart_PingPong/ebyte/ebyte_port.c | 29 +++++++++---------- .../Uart_PingPong/ebyte/ebyte_port.h | 1 + .../IAR_for_Stm8/Uart_PingPong/main.c | 4 +-- .../2_Ebyte_Board_Support/E15-EVB02/board.c | 20 ++++++++++--- .../2_Ebyte_Board_Support/E15-EVB02/board.h | 20 +++++-------- .../E48xMx/ebyte_e48x.c | 4 +-- .../E48xMx/radio_hal.c | 8 +---- 8 files changed, 43 insertions(+), 44 deletions(-) diff --git a/NSPE/WIFI_IOT/bsp/bsp_gd32w51x.c b/NSPE/WIFI_IOT/bsp/bsp_gd32w51x.c index 726b481..d48813e 100644 --- a/NSPE/WIFI_IOT/bsp/bsp_gd32w51x.c +++ b/NSPE/WIFI_IOT/bsp/bsp_gd32w51x.c @@ -735,6 +735,5 @@ void platform_init(void) gdm3210x_fpga_init(); #elif CONFIG_PLATFORM == PLATFORM_ASIC_32W51X gd32w51x_asic_init(); - #endif } diff --git a/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/ebyte/ebyte_port.c b/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/ebyte/ebyte_port.c index eaba0ec..90c78eb 100755 --- a/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/ebyte/ebyte_port.c +++ b/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/ebyte/ebyte_port.c @@ -23,6 +23,7 @@ /*= !!!ĿӲƽ̨ͷļ =======================================*/ #include "board.h" //E15-EVB02 +#include "wrapper_os.h" /*==================================================================*/ /* ! @@ -77,22 +78,20 @@ void Ebyte_Port_SpiCsIoControl( uint8e_t cmd ) void Ebyte_Port_DelayMs( uint16e_t time ) { /* !ṩ: ʱ */ - - uint16e_t i,n; - - while(time--)//ʾSTM8L 16MʱǰµĴʱ - { - for(i=900;i>0;i--) - { - for( n=1 ;n>0 ;n--) { - __NOP(); - __NOP(); - __NOP(); - __NOP(); - } - } - } + sys_ms_sleep(time); } +/* ! + * @brief ĿӲƽ̨ʱ + * + * @param time ʱ + * @note עʱģʼʱô˺עжǷӰ쵽˺ + */ +void Ebyte_Port_DelayUs( uint16e_t time ) +{ + /* !ṩ: ʱ */ + sys_us_delay(time); +} + diff --git a/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/ebyte/ebyte_port.h b/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/ebyte/ebyte_port.h index c140b8c..0ee4aea 100755 --- a/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/ebyte/ebyte_port.h +++ b/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/ebyte/ebyte_port.h @@ -24,6 +24,7 @@ void Ebyte_Port_RstIoControl( uint8e_t cmd ); void Ebyte_Port_TxenIoControl( uint8e_t cmd ); void Ebyte_Port_RxenIoControl( uint8e_t cmd ); void Ebyte_Port_DelayMs( uint16e_t time ); +void Ebyte_Port_DelayUs( uint16e_t time ); void Ebyte_Port_SpiCsIoControl( uint8e_t cmd ); uint8e_t Ebyte_Port_BusyIoRead( void ); diff --git a/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/main.c b/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/main.c index 2cb7be0..4892e5c 100755 --- a/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/main.c +++ b/NSPE/WIFI_IOT/bsp/drivers/0_Project/IAR_for_Stm8/Uart_PingPong/main.c @@ -61,9 +61,9 @@ int ebyte_main( void ) /* ӲԴ ʼ */ Ebyte_BSP_Init(); /* (ѡ) жϽFIFO ɸҪд */ -// Ebyte_FIFO_Init( &hfifo, EBYTE_FIFO_SIZE ); + Ebyte_FIFO_Init( &hfifo, EBYTE_FIFO_SIZE ); /* EBYTE ģʼ */ -// Ebyte_RF.Init(); + Ebyte_RF.Init(); /* ģ */ // Ebyte_RF.EnterReceiveMode( 0 ); /* MCU ȫж */ diff --git a/NSPE/WIFI_IOT/bsp/drivers/2_Ebyte_Board_Support/E15-EVB02/board.c b/NSPE/WIFI_IOT/bsp/drivers/2_Ebyte_Board_Support/E15-EVB02/board.c index 200c9ff..aa034b1 100755 --- a/NSPE/WIFI_IOT/bsp/drivers/2_Ebyte_Board_Support/E15-EVB02/board.c +++ b/NSPE/WIFI_IOT/bsp/drivers/2_Ebyte_Board_Support/E15-EVB02/board.c @@ -118,11 +118,17 @@ void Ebyte_BSP_SPI_Init( void ) /* ʱ */ rcu_periph_clock_enable(BSP_RF_SPI_CLOCK); - - /* GPIO */ rcu_periph_clock_enable(BSP_GPIO_RCU_E48_SPI); - gpio_mode_set(BSP_GPIO_PORT_SPI_NSS, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, BSP_GPIO_PIN_SPI_NSS); //Ƭѡ CS - gpio_output_options_set(BSP_GPIO_PORT_SPI_NSS, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ, BSP_GPIO_PIN_SPI_NSS); + + /* SPI1 GPIO config: SCK/PB13, MISO/PB14, MOSI/PB15 */ + gpio_af_set(BSP_GPIO_PORT_SPI, GPIO_AF_5, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); + gpio_mode_set(BSP_GPIO_PORT_SPI, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); + gpio_output_options_set(BSP_GPIO_PORT_SPI, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); + + /* SPI0_NSS */ + gpio_mode_set(BSP_GPIO_PORT_SPI, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, BSP_GPIO_PIN_SPI_NSS); //Ƭѡ CS + gpio_output_options_set(BSP_GPIO_PORT_SPI, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ, BSP_GPIO_PIN_SPI_NSS); + // GPIO_ExternalPullUpConfig( BSP_GPIO_PORT_SPI_SCK, BSP_GPIO_PIN_SPI_MOSI | BSP_GPIO_PIN_SPI_MISO | BSP_GPIO_PIN_SPI_SCK, ENABLE); // MOSI MISO SCK /* */ @@ -149,6 +155,12 @@ void Ebyte_BSP_SPI_Init( void ) */ uint8_t Ebyte_BSP_SpiTransAndRecv( uint8_t data ) { + while(RESET == spi_i2s_flag_get(BSP_RF_SPI, SPI_FLAG_TBE)); + spi_i2s_data_transmit(BSP_RF_SPI, data); + + while(RESET == spi_i2s_flag_get(BSP_RF_SPI, SPI_FLAG_RBNE)); + return spi_i2s_data_receive(BSP_RF_SPI); + // BSP_RF_SPI->DR = data; // while ((BSP_RF_SPI->SR & SPI_FLAG_TXE) == RESET); // diff --git a/NSPE/WIFI_IOT/bsp/drivers/2_Ebyte_Board_Support/E15-EVB02/board.h b/NSPE/WIFI_IOT/bsp/drivers/2_Ebyte_Board_Support/E15-EVB02/board.h index f6b8ca6..ee21a69 100755 --- a/NSPE/WIFI_IOT/bsp/drivers/2_Ebyte_Board_Support/E15-EVB02/board.h +++ b/NSPE/WIFI_IOT/bsp/drivers/2_Ebyte_Board_Support/E15-EVB02/board.h @@ -44,19 +44,13 @@ //#define BSP_GPIO_PIN_BUTTON_2 GPIO_PIN_5 /* SPIͨŽӿ */ -#define BSP_GPIO_RCU_E48_SPI RCU_GPIOB +#define BSP_GPIO_RCU_E48_SPI RCU_GPIOB -#define BSP_GPIO_PORT_SPI_NSS GPIOB +#define BSP_GPIO_PORT_SPI GPIOB #define BSP_GPIO_PIN_SPI_NSS GPIO_PIN_12 - -//#define BSP_GPIO_PORT_SPI_MOSI GPIOB -//#define BSP_GPIO_PIN_SPI_MOSI GPIO_PIN_6 -// -//#define BSP_GPIO_PORT_SPI_MISO GPIOB -//#define BSP_GPIO_PIN_SPI_MISO GPIO_PIN_7 -// -//#define BSP_GPIO_PORT_SPI_SCK GPIOB -//#define BSP_GPIO_PIN_SPI_SCK GPIO_PIN_5 +#define BSP_GPIO_PIN_SPI_SCK GPIO_PIN_13 +#define BSP_GPIO_PIN_SPI_MISO GPIO_PIN_14 +#define BSP_GPIO_PIN_SPI_MOSI GPIO_PIN_15 /* ͨŴ */ #define BSP_GPIO_PORT_UART_TX GPIOA @@ -85,8 +79,8 @@ /* SPI */ #define BSP_RF_SPI SPI1 #define BSP_RF_SPI_CLOCK RCU_SPI1 -#define Ebyte_BSP_RfSpiSelected() gpio_bit_write( BSP_GPIO_PORT_SPI_NSS , BSP_GPIO_PIN_SPI_NSS, RESET ) -#define Ebyte_BSP_RfSpiUnselected() gpio_bit_write( BSP_GPIO_PORT_SPI_NSS , BSP_GPIO_PIN_SPI_NSS, SET ) +#define Ebyte_BSP_RfSpiSelected() gpio_bit_write( BSP_GPIO_PORT_SPI, BSP_GPIO_PIN_SPI_NSS, RESET ) +#define Ebyte_BSP_RfSpiUnselected() gpio_bit_write( BSP_GPIO_PORT_SPI, BSP_GPIO_PIN_SPI_NSS, SET ) /* Timer */ #define BSP_RF_TIMER TIMER2 diff --git a/NSPE/WIFI_IOT/bsp/drivers/3_Ebyte_WirelessModule_Drivers/E48xMx/ebyte_e48x.c b/NSPE/WIFI_IOT/bsp/drivers/3_Ebyte_WirelessModule_Drivers/E48xMx/ebyte_e48x.c index eba44b4..79683a4 100755 --- a/NSPE/WIFI_IOT/bsp/drivers/3_Ebyte_WirelessModule_Drivers/E48xMx/ebyte_e48x.c +++ b/NSPE/WIFI_IOT/bsp/drivers/3_Ebyte_WirelessModule_Drivers/E48xMx/ebyte_e48x.c @@ -28,8 +28,8 @@ uint8_t radio_rece_data_flag; void Ebyte_E48x_Init( void ) { - vRadioCheckLink(); - vRadioInit(); + vRadioCheckLink(); + vRadioInit(); } void Ebyte_E48x_SendPayload( uint8_t *payload, uint8_t size, uint32_t timeout ) diff --git a/NSPE/WIFI_IOT/bsp/drivers/3_Ebyte_WirelessModule_Drivers/E48xMx/radio_hal.c b/NSPE/WIFI_IOT/bsp/drivers/3_Ebyte_WirelessModule_Drivers/E48xMx/radio_hal.c index 71a8235..976403f 100755 --- a/NSPE/WIFI_IOT/bsp/drivers/3_Ebyte_WirelessModule_Drivers/E48xMx/radio_hal.c +++ b/NSPE/WIFI_IOT/bsp/drivers/3_Ebyte_WirelessModule_Drivers/E48xMx/radio_hal.c @@ -7,13 +7,7 @@ void delay1ms(uint16_t cnt) void delay10us(uint32_t cnt) { - uint8_t i; - - while( cnt-- ) { - i = 20; - while(i--) - __NOP(); - } + Ebyte_Port_DelayUs(cnt * 10); } /******************************