From daba5f7ec8db40647c8208c971279ffca4e86595 Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Tue, 23 Jul 2024 14:09:29 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96a5133=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../config/target_config/brandy/config.py | 4 +- .../brandy_evb/board_config/board_evb.h | 4 +- code/sdk/drivers/peripheral/a5133/A5133Main.c | 51 +- code/sdk/drivers/peripheral/a5133/A5133Uti.c | 742 +++++++++++------- code/sdk/drivers/peripheral/a5133/A5133Uti.h | 12 +- code/sdk/drivers/peripheral/a5133/A5133main.h | 12 +- .../a5133/service/a5133_service.cpp | 38 +- .../peripheral/a5133/service/a5133_service.h | 2 +- 8 files changed, 551 insertions(+), 314 deletions(-) diff --git a/code/sdk/build/config/target_config/brandy/config.py b/code/sdk/build/config/target_config/brandy/config.py index 744f1789e..db3586c75 100755 --- a/code/sdk/build/config/target_config/brandy/config.py +++ b/code/sdk/build/config/target_config/brandy/config.py @@ -209,7 +209,9 @@ target = { }, 'brandy-native-js-lt22': { 'base_target_name': 'brandy-native-js', - 'defines': ['SUPPORT_A5133_SERVICE'], + 'defines': ['SUPPORT_A5133_SERVICE' + #,'A5133_USE_HW_SPI' + ], 'ram_component':["driver_a5133","a5133_service"], 'fs_image_path':'fd230', }, diff --git a/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h b/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h index 949291eaa..7c95dc601 100755 --- a/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h +++ b/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h @@ -101,8 +101,8 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = { { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO9 SPI1 CS0 { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO10 SPI1 CS1 NC #else - { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO6 SPI1 DI - { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO7 SPI1 DO + { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO6 SPI1 DI + { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO7 SPI1 DO { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO8 SPI1 CLK { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO9 SPI1 CS0 { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO10 SPI1 CS1 NC diff --git a/code/sdk/drivers/peripheral/a5133/A5133Main.c b/code/sdk/drivers/peripheral/a5133/A5133Main.c index becb635cb..4ca37e8c1 100644 --- a/code/sdk/drivers/peripheral/a5133/A5133Main.c +++ b/code/sdk/drivers/peripheral/a5133/A5133Main.c @@ -86,7 +86,6 @@ const Uint8 code PN9_Tab[]= 0xEA,0x24,0x33,0x85,0xED,0x9A,0x1D,0xE0, }; - /********************************************************************* * main loop *********************************************************************/ @@ -94,7 +93,13 @@ void a5133_main(Uint8 Flag_MASTER) { if(RF_Init())/* init RF */ - Err_State(); + { + // Err_State(); + PRINT("RF_Init Failed\n"); + + return; + } + if (Flag_MASTER) { @@ -253,10 +258,35 @@ void Err_State(void) //ERR display //Error Proc... //... - // while(1); PRINT("Err_State\n"); + while(1) + LOS_Msleep(10); +} +/************************************************************************ +** RF_WriteReg +************************************************************************/ +void RF_WriteReg(Uint8 addr, Uint8 dataByte) +{ + a5133_gpio_scs_set_value(0); + ByteSend(addr);//bit7 cmd=0, bit6 r/w=0 + ByteSend(dataByte); + a5133_gpio_scs_set_value(1); +} + +/************************************************************************ +** RF_ReadReg +************************************************************************/ +Uint8 RF_ReadReg(Uint8 addr) +{ + Uint8 tmp; + + a5133_gpio_scs_set_value(0); + ByteSend(addr | 0x40);//bit7 cmd=0,bit6 r/w=1 + tmp = ByteRead(); + a5133_gpio_scs_set_value(1); + + return tmp; } - /************************************************************************ ** Reset_RF ************************************************************************/ @@ -338,19 +368,32 @@ Uint8 RF_Init(void) // GIO1 = 1; // // GIO2 = 1; + // a5133_gpio_scs_set_value(1); + // a5133_gpio_sck_set_value(0); + // a5133_gpio_sdio_set_value(1); + RF_Reset();/* reset RF chip */ RF_WriteID(ID_Tab);/* write ID code */ RF_ReadID(id); for (i=0; i<8; i++) { + printf("%d,id[%2X]\n",i,id[i]); if (id[i] ^ ID_Tab[i]) + { + printf("read id failed %d\n",i); return 1;/* fail */ + } + } RF_Config();/* config A7157 chip */ RF_TrimmedValue_Init();/* load trimming value */ if(RF_Cal())/* rf calibration */ + { + printf("RF_Cal\n"); return 1; + } + return 0; } diff --git a/code/sdk/drivers/peripheral/a5133/A5133Uti.c b/code/sdk/drivers/peripheral/a5133/A5133Uti.c index 7976ace87..8d7b1a0d4 100644 --- a/code/sdk/drivers/peripheral/a5133/A5133Uti.c +++ b/code/sdk/drivers/peripheral/a5133/A5133Uti.c @@ -1,296 +1,448 @@ -/******************************************************************** ** -* Uti.h -* Function Definitions -* -********************************************************************/ - -#include "gpio.h" -#include "pinctrl_porting.h" -#include "chip_io.h" -#include "debug_print.h" -#include "pinctrl.h" - -#include "A5133define.h" -#include "A5133Uti.h" - -static void nop(void){} - -/********************************************************** -* Delay1ms -**********************************************************/ -void Delay1ms(Uint8 n) -{ - LOS_Mdelay(n); -} - -/********************************************************** -* Delay10ms -**********************************************************/ -void Delay10ms(Uint8 n) -{ - LOS_Mdelay(n*10); -} - -/********************************************************** -* Delay100us -**********************************************************/ -void Delay100us(Uint8 n) -{ - LOS_Udelay(n*100); -} - -/********************************************************** -* Delay10us -**********************************************************/ -void Delay10us(Uint8 n) -{ - LOS_Udelay(n*10); -} - - -/**direction 1 out , 0 in*/ -errcode_t a5133_gpio_set_direction(pin_t pin, int direction) -{ - errcode_t ret = ERRCODE_SUCC; - - if (direction) - { - ret = uapi_gpio_set_dir(pin, GPIO_DIRECTION_OUTPUT); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - }else{ - ret = uapi_gpio_set_dir(pin, GPIO_DIRECTION_INPUT); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - } - - return ret; -} - - -errcode_t a5133_gpio_set_value(pin_t pin,uint8_t value) -{ - errcode_t ret = ERRCODE_SUCC; - if (value == 1) { - ret = uapi_gpio_set_val(pin, GPIO_LEVEL_HIGH); - } else if (value == 0) { - ret = uapi_gpio_set_val(pin, GPIO_LEVEL_LOW); - } else { - return ERRCODE_FAIL; - } - return ret; -} - -uint8_t a5133_gpio_get_value(pin_t pin) -{ - gpio_level_t gpio_level; - gpio_level = uapi_gpio_get_val(pin); - if (gpio_level == GPIO_LEVEL_HIGH) { - // PRINT("read level is %d\r\n", GPIO_LEVEL_HIGH); - } else { - // PRINT("read level is %d\r\n", GPIO_LEVEL_LOW); - } - return gpio_level; -} - -#define SCS_OUT S_MGPIO9 //spi SCS -#define SCK_OUT S_MGPIO8 //spi SCK -#define SDIO_IN_OUT S_MGPIO7 //spi SDIO -#define GIO1_IN S_MGPIO6 //GPIO1 - -uint8_t a5133_gpio_get_gio1_value(void) -{ - return a5133_gpio_get_value(GIO1_IN); -} - -errcode_t a5133_gpio_scs_set_value(uint8_t value) -{ - if(value) - return a5133_gpio_set_value(SCS_OUT,1); - else - return a5133_gpio_set_value(SCS_OUT,0); -} - -errcode_t a5133_gpio_sdio_set_value(uint8_t value) -{ - if(value) - return a5133_gpio_set_value(SDIO_IN_OUT,1); - else - return a5133_gpio_set_value(SDIO_IN_OUT,0); -} -errcode_t a5133_gpio_sck_set_value(uint8_t value) -{ - if(value) - return a5133_gpio_set_value(SCK_OUT,1); - else - return a5133_gpio_set_value(SCK_OUT,0); -} -errcode_t a5133_gpio_init(void) -{ - - errcode_t ret = ERRCODE_SUCC; - - ret = uapi_pin_set_mode(SCS_OUT, HAL_PIO_FUNC_GPIO); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - - ret = uapi_pin_set_mode(SCK_OUT, HAL_PIO_FUNC_GPIO); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - - ret = uapi_pin_set_mode(SDIO_IN_OUT, HAL_PIO_FUNC_GPIO); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - - ret = uapi_pin_set_mode(GIO1_IN, HAL_PIO_FUNC_GPIO); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - - ret = a5133_gpio_set_direction(SCS_OUT,1); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - - - ret = a5133_gpio_set_direction(SCK_OUT,1); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - ret = a5133_gpio_set_direction(SDIO_IN_OUT,1); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - ret = a5133_gpio_set_direction(GIO1_IN,0); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; - } - return ret; -} - - -// int test_gpio_toggle(pin_t pin, int level) -// { - -// errcode_t ret = ERRCODE_SUCC; - -// PRINT("[Params] PIN:%d, levle: %d. \r\n", pin, (uint32_t)level); -// ret = uapi_pin_set_mode(pin, HAL_PIO_FUNC_GPIO); -// if (ret != ERRCODE_SUCC) { -// return ERRCODE_FAIL; -// } - -// ret = uapi_gpio_set_dir(pin, GPIO_DIRECTION_OUTPUT); -// if (ret != ERRCODE_SUCC) { -// return ERRCODE_FAIL; -// } - -// if (level == 1) { -// uapi_gpio_set_val(pin, GPIO_LEVEL_HIGH); -// } else if (level == 0) { -// uapi_gpio_set_val(pin, GPIO_LEVEL_LOW); -// } else { -// return ERRCODE_FAIL; -// } - -// ret = uapi_gpio_toggle(pin); -// if (ret != ERRCODE_SUCC) { -// return ERRCODE_FAIL; -// } - -// gpio_level_t gpio_level; -// gpio_level = uapi_gpio_get_val(pin); -// if (gpio_level != (gpio_level_t)level) { -// PRINT("gpio toggle success\r\n"); -// PRINT("read level is %d\r\n", gpio_level); -// } else { -// PRINT("gpio toggle failed\r\n"); -// PRINT("read level is %d\r\n", gpio_level); -// return ERRCODE_FAIL; -// } - -// return ERRCODE_SUCC; -// } - - - -/************************************************************************ -** RF_WriteReg -************************************************************************/ -void RF_WriteReg(Uint8 addr, Uint8 dataByte) -{ - a5133_gpio_scs_set_value(0); - ByteSend(addr);//bit7 cmd=0, bit6 r/w=0 - ByteSend(dataByte); - a5133_gpio_scs_set_value(1); -} - -/************************************************************************ -** RF_ReadReg -************************************************************************/ -Uint8 RF_ReadReg(Uint8 addr) -{ - Uint8 tmp; - - a5133_gpio_scs_set_value(0); - ByteSend(addr | 0x40);//bit7 cmd=0,bit6 r/w=1 - tmp = ByteRead(); - a5133_gpio_scs_set_value(1); - - return tmp; -} - -/************************************************************************ -** ByteSend -************************************************************************/ -void ByteSend(Uint8 src) -{ - Uint8 i; - - for(i = 0; i < 8; i++) - { - if(src & 0x80) - a5133_gpio_set_value(SDIO_IN_OUT,1); - else - a5133_gpio_set_value(SDIO_IN_OUT,0); - - nop(); - a5133_gpio_set_value(SCK_OUT,1); - nop(); - a5133_gpio_set_value(SCK_OUT,0); - src = src << 1; - } -} - -/************************************************************************ -** ByteRead -************************************************************************/ -Uint8 ByteRead(void) -{ - Uint8 i,tmp; - - //sdio pull high - a5133_gpio_sdio_set_value(1); - // P0OE = P0OE & (~0x02); - - a5133_gpio_set_direction(SDIO_IN_OUT,0); - for(i = 0; i < 8; i++) - { - if(a5133_gpio_get_value(SDIO_IN_OUT)) - tmp = (tmp << 1) | 0x01; - else - tmp = tmp << 1; - - a5133_gpio_sck_set_value(1); - nop(); - a5133_gpio_sck_set_value(0); - } - a5133_gpio_set_direction(SDIO_IN_OUT,1); - // P0OE = P0OE | (0x02); - return tmp; +/******************************************************************** ** +* Uti.h +* Function Definitions +* +********************************************************************/ + +#include "gpio.h" +#include "pinctrl_porting.h" +#include "chip_io.h" +#include "debug_print.h" +#include "pinctrl.h" +#include "spi.h" +// #include "spi_porting.h" + +#include "A5133define.h" +#include "A5133Uti.h" +// #include "hal_spi_v100_regs_op.h" + + +static void nop(void){} + +/********************************************************** +* Delay1ms +**********************************************************/ +void Delay1ms(Uint8 n) +{ + LOS_Mdelay(n); +} + +/********************************************************** +* Delay10ms +**********************************************************/ +void Delay10ms(Uint8 n) +{ + LOS_Mdelay(n*10); +} + +/********************************************************** +* Delay100us +**********************************************************/ +void Delay100us(Uint8 n) +{ + LOS_Udelay(n*100); +} + +/********************************************************** +* Delay10us +**********************************************************/ +void Delay10us(Uint8 n) +{ + LOS_Udelay(n*10); +} + +typedef struct flash_cfg { + uint32_t isinit; /*!< @if Eng Flash is init. + @else Flash 是否初始化。@endif */ + uint32_t qspi_isinit; /*!< @if Eng Flash qspi is init. + @else Flash qspi是否初始化。@endif */ + uint32_t unique_id; /*!< @if Eng Flash unique id. + @else Flash 唯一 id。@endif */ + spi_bus_t bus; /*!< @if Eng Flash spi bus. + @else Flash 使用的 spi bus。@endif */ + hal_spi_frame_format_t mode; /*!< @if Eng Flash trans mode. + @else Flash 传输模式。@endif */ + spi_attr_t attr; /*!< @if Eng Flash spi attr. + @else Flash spi 基础配置。@endif */ + spi_extra_attr_t extra_attr; /*!< @if Eng Flash spi extra attr. + @else Flash spi 拓展配置。@endif */ +} a5133_cfg_t; +static a5133_cfg_t g_flash_porting_config[1] = { + { + .bus = SPI_BUS_1, + .attr = { + .is_slave = false, + .slave_num = 1, + .bus_clk = 40000000, + .freq_mhz = 10, + .clk_polarity = (uint32_t)SPI_CFG_CLK_CPOL_1, + .clk_phase = (uint32_t)SPI_CFG_CLK_CPHA_1, + .frame_format = SPI_CFG_FRAME_FORMAT_NS_MICROWIRE, + .spi_frame_format = (uint32_t)HAL_SPI_FRAME_FORMAT_STANDARD, + .frame_size = (uint32_t)HAL_SPI_FRAME_SIZE_8, + .tmod = HAL_SPI_TRANS_MODE_TX, + .sste = SPI_CFG_SSTE_DISABLE, + .ndf = 1, + }, + .extra_attr = { + .tx_use_dma = false, + .rx_use_dma = false, + .qspi_param = {0}, + .sspi_param = {0}, + }, + }, +}; + + +extern void uapi_cat1_wakeup_cat1(uint8_t wakeup); + + +static errcode_t spi1_init(void) +{ + errcode_t ret = uapi_spi_deinit(g_flash_porting_config[0].bus); + if(ret != ERRCODE_SUCC) + { + printf("uapi_spi_deinit failed 0x%x\n",ret); + } + ret = uapi_spi_init(g_flash_porting_config[0].bus, + &g_flash_porting_config[0].attr, + &g_flash_porting_config[0].extra_attr); + return ret; +} + + +/**direction 1 out , 0 in*/ +errcode_t a5133_gpio_set_direction(pin_t pin, int direction) +{ + errcode_t ret = ERRCODE_SUCC; +#ifdef A5133_USE_HW_SPI + +#else + // ret = uapi_pin_set_mode(pin, HAL_PIO_FUNC_GPIO); + // if (ret != ERRCODE_SUCC) { + // printf("uapi_pin_set_mode failed\n"); + // return ERRCODE_FAIL; + // } + + if (direction) + { + ret = uapi_gpio_set_dir(pin, GPIO_DIRECTION_OUTPUT); + if (ret != ERRCODE_SUCC) { + printf("uapi_gpio_set_dir GPIO_DIRECTION_OUTPUT failed\n"); + return ERRCODE_FAIL; + } + }else{ + ret = uapi_pin_set_pull(pin, (pin_pull_t)HAL_PIO_PULL_DOWN); + if (ret != ERRCODE_SUCC) { + printf("uapi_pin_set_pull failed\n"); + return ERRCODE_FAIL; + } + + ret = uapi_gpio_set_dir(pin, GPIO_DIRECTION_INPUT); + if (ret != ERRCODE_SUCC) { + printf("uapi_gpio_set_dir GPIO_DIRECTION_INPUT failed\n"); + return ERRCODE_FAIL; + } + } +#endif + return ret; +} + + +errcode_t a5133_gpio_set_value(pin_t pin,uint8_t value) +{ + errcode_t ret = ERRCODE_SUCC; + +#ifdef A5133_USE_HW_SPI + +#else + if (value == 1) { + ret = uapi_gpio_set_val(pin, GPIO_LEVEL_HIGH); + } else if (value == 0) { + ret = uapi_gpio_set_val(pin, GPIO_LEVEL_LOW); + } else { + return ERRCODE_FAIL; + } +#endif + return ret; +} + +uint8_t a5133_gpio_get_value(pin_t pin) +{ + gpio_level_t gpio_level = GPIO_LEVEL_HIGH; +#ifdef A5133_USE_HW_SPI + +#else + gpio_level = uapi_gpio_get_val(pin); + if (gpio_level == GPIO_LEVEL_HIGH) { + // PRINT("read level is %d\r\n", GPIO_LEVEL_HIGH); + } else { + // PRINT("read level is %d\r\n", GPIO_LEVEL_LOW); + } +#endif + return gpio_level; +} + +#define SCS_OUT S_MGPIO9 //spi SCS +#define SCK_OUT S_MGPIO8 //spi SCK +#define SDIO_IN_OUT S_MGPIO6 //spi SDIO +#define GIO1_IN S_MGPIO7 //GPIO1 + +uint8_t a5133_gpio_get_gio1_value(void) +{ + return a5133_gpio_get_value(GIO1_IN); +} + +errcode_t a5133_gpio_scs_set_value(uint8_t value) +{ + if(value) + return a5133_gpio_set_value(SCS_OUT,1); + else + return a5133_gpio_set_value(SCS_OUT,0); +} + +errcode_t a5133_gpio_sdio_set_value(uint8_t value) +{ + if(value) + return a5133_gpio_set_value(SDIO_IN_OUT,1); + else + return a5133_gpio_set_value(SDIO_IN_OUT,0); +} +errcode_t a5133_gpio_sck_set_value(uint8_t value) +{ + if(value) + return a5133_gpio_set_value(SCK_OUT,1); + else + return a5133_gpio_set_value(SCK_OUT,0); +} +errcode_t a5133_gpio_init(void) +{ + + errcode_t ret = ERRCODE_SUCC; +#ifdef A5133_USE_HW_SPI + + + printf("SPI1_INIT \n"); + ret= spi1_init(); + printf("SPI1_INIT ret %x\n",ret); +#else + ret = uapi_pin_set_mode(SCS_OUT, HAL_PIO_FUNC_GPIO); + if (ret != ERRCODE_SUCC) { + return ERRCODE_FAIL; + } + + ret = uapi_pin_set_mode(SCK_OUT, HAL_PIO_FUNC_GPIO); + if (ret != ERRCODE_SUCC) { + return ERRCODE_FAIL; + } + + ret = uapi_pin_set_mode(SDIO_IN_OUT, HAL_PIO_FUNC_GPIO); + if (ret != ERRCODE_SUCC) { + return ERRCODE_FAIL; + } + + ret = uapi_pin_set_mode(GIO1_IN, HAL_PIO_FUNC_GPIO); + if (ret != ERRCODE_SUCC) { + return ERRCODE_FAIL; + } + + ret = a5133_gpio_set_direction(SCS_OUT,1); + if (ret != ERRCODE_SUCC) { + return ERRCODE_FAIL; + } + + + ret = a5133_gpio_set_direction(SCK_OUT,1); + if (ret != ERRCODE_SUCC) { + return ERRCODE_FAIL; + } + ret = a5133_gpio_set_direction(SDIO_IN_OUT,1); + if (ret != ERRCODE_SUCC) { + return ERRCODE_FAIL; + } + ret = a5133_gpio_set_direction(GIO1_IN,0); + if (ret != ERRCODE_SUCC) { + return ERRCODE_FAIL; + } + + ret = a5133_gpio_set_direction(S_AGPIO_L30,1); + if (ret != ERRCODE_SUCC) { + return ERRCODE_FAIL; + } +#endif + return ret; +} + + +// int test_gpio_toggle(pin_t pin, int level) +// { + +// errcode_t ret = ERRCODE_SUCC; + +// PRINT("[Params] PIN:%d, levle: %d. \r\n", pin, (uint32_t)level); +// ret = uapi_pin_set_mode(pin, HAL_PIO_FUNC_GPIO); +// if (ret != ERRCODE_SUCC) { +// return ERRCODE_FAIL; +// } + +// ret = uapi_gpio_set_dir(pin, GPIO_DIRECTION_OUTPUT); +// if (ret != ERRCODE_SUCC) { +// return ERRCODE_FAIL; +// } + +// if (level == 1) { +// uapi_gpio_set_val(pin, GPIO_LEVEL_HIGH); +// } else if (level == 0) { +// uapi_gpio_set_val(pin, GPIO_LEVEL_LOW); +// } else { +// return ERRCODE_FAIL; +// } + +// ret = uapi_gpio_toggle(pin); +// if (ret != ERRCODE_SUCC) { +// return ERRCODE_FAIL; +// } + +// gpio_level_t gpio_level; +// gpio_level = uapi_gpio_get_val(pin); +// if (gpio_level != (gpio_level_t)level) { +// PRINT("gpio toggle success\r\n"); +// PRINT("read level is %d\r\n", gpio_level); +// } else { +// PRINT("gpio toggle failed\r\n"); +// PRINT("read level is %d\r\n", gpio_level); +// return ERRCODE_FAIL; +// } + +// return ERRCODE_SUCC; +// } + + + + + +/************************************************************************ +** ByteSend +************************************************************************/ +errcode_t ByteSend(Uint8 src) +{ + errcode_t ret = ERRCODE_SUCC; + +#ifdef A5133_USE_HW_SPI + uint8_t tmp = src; + printf("spi%d ByteSend 0x%02x\n",g_flash_porting_config[0].bus,tmp); + //printf("uapi_spi_set_attr\n"); + // ret=uapi_spi_set_attr(g_flash_porting_config[0].bus, &g_flash_porting_config[0].attr) ; + // if (ret != ERRCODE_SUCC) { + + // printf("ByteSend uapi_spi_set_attr ret 0x%X\n",ret); + // return ERRCODE_FAIL; + // } + // printf("uapi_spi_set_extra_attr\n"); + // ret = uapi_spi_set_extra_attr(g_flash_porting_config[0].bus, &g_flash_porting_config[0].extra_attr); + // if (ret != ERRCODE_SUCC) { + + // printf("ByteSend uapi_spi_set_extra_attr ret 0x%X\n",ret); + // return ERRCODE_FAIL; + // } + + spi_xfer_data_t sdata ={0} ; + sdata.tx_buff = &tmp; + sdata.tx_bytes = 1; + sdata.rx_buff = NULL; + sdata.rx_bytes = 0; + + ret = uapi_spi_master_write(g_flash_porting_config[0].bus, &sdata, 0xFFFFFFFE); + + if (ret != ERRCODE_SUCC) + { + printf("ByteSend failed ret 0x%X\n",ret); + return ERRCODE_FAIL; + } + printf("spi%d ByteSend 0x%02x\n",g_flash_porting_config[0].bus,tmp); + +#else + Uint8 i; + //nop(); + //uapi_cat1_wakeup_cat1(1); + a5133_gpio_set_value(S_AGPIO_L30,1); + //uapi_gpio_set_val(S_AGPIO_L30, GPIO_LEVEL_HIGH); + // a5133_gpio_set_value(GIO1_IN,1); + for(i = 0; i < 8; i++) + { + if(src & 0x80) + a5133_gpio_set_value(SDIO_IN_OUT,1); + else + a5133_gpio_set_value(SDIO_IN_OUT,0); + + nop(); + // a5133_gpio_set_value(SCK_OUT,1); + a5133_gpio_sck_set_value(1); + nop(); + a5133_gpio_sck_set_value(0); + // a5133_gpio_set_value(SCK_OUT,0); + src = src << 1; + } + // a5133_gpio_set_value(GIO1_IN,0); + //nop(); + //uapi_cat1_wakeup_cat1(0); + a5133_gpio_set_value(S_AGPIO_L30,0); +#endif + return ret; +} + +/************************************************************************ +** ByteRead +************************************************************************/ +Uint8 ByteRead(void) +{ + +#ifdef A5133_USE_HW_SPI + Uint8 tmp; + + spi_xfer_data_t sdata = {0}; + sdata.rx_buff = &tmp; + sdata.rx_bytes = 1; + printf("spi%d ByteRead\n",g_flash_porting_config[0].bus); + + errcode_t ret = uapi_spi_master_read(g_flash_porting_config[0].bus, &sdata, 0xFFFFFFFF); + printf("spi%d ByteRead 0x%x ret = 0x%x\n",g_flash_porting_config[0].bus,tmp,ret); + + return tmp; +#else + Uint8 i,tmp; + + //sdio pull high + a5133_gpio_sdio_set_value(1); + //nop(); + //uapi_cat1_wakeup_cat1(1); + a5133_gpio_set_value(S_AGPIO_L30,1); + // a5133_gpio_set_value(GIO1_IN,1); + // P0OE = P0OE & (~0x02); + a5133_gpio_set_direction(SDIO_IN_OUT,0); + + // Delay10us(1); + for(i = 0; i < 8; i++) + { + if(a5133_gpio_get_value(SDIO_IN_OUT)) + tmp = (tmp << 1) | 0x01; + else + tmp = tmp << 1; + + // a5133_gpio_set_value(SCK_OUT,1); + a5133_gpio_sck_set_value(1); + nop(); + // a5133_gpio_set_value(SCK_OUT,0); + a5133_gpio_sck_set_value(0); + } + a5133_gpio_set_direction(SDIO_IN_OUT,1); + //nop(); + //uapi_cat1_wakeup_cat1(0); + a5133_gpio_set_value(S_AGPIO_L30,0); + // a5133_gpio_set_value(GIO1_IN,0); + printf("ByteRead tmp[%2X]\n",tmp); + // P0OE = P0OE | (0x02); + return tmp; +#endif + } \ No newline at end of file diff --git a/code/sdk/drivers/peripheral/a5133/A5133Uti.h b/code/sdk/drivers/peripheral/a5133/A5133Uti.h index eeec5be58..6bf40d582 100644 --- a/code/sdk/drivers/peripheral/a5133/A5133Uti.h +++ b/code/sdk/drivers/peripheral/a5133/A5133Uti.h @@ -1,3 +1,13 @@ +/* + * @Author: penglei 1624952103@qq.com + * @Date: 2024-07-20 10:36:21 + * @LastEditors: penglei 1624952103@qq.com + * @LastEditTime: 2024-07-22 15:38:16 + * @FilePath: /FD230/code/sdk/drivers/peripheral/a5133/A5133Uti.h + * @Description: + * + * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. + */ /******************************************************************** * UTI.h * Function Definitions @@ -23,7 +33,7 @@ errcode_t a5133_gpio_scs_set_value(uint8_t value); errcode_t a5133_gpio_sdio_set_value(uint8_t value); errcode_t a5133_gpio_sck_set_value(uint8_t value); uint8_t a5133_gpio_get_gio1_value(void); -void ByteSend(Uint8 src); +errcode_t ByteSend(Uint8 src); Uint8 ByteRead(void); #endif diff --git a/code/sdk/drivers/peripheral/a5133/A5133main.h b/code/sdk/drivers/peripheral/a5133/A5133main.h index f55111397..b37319e6b 100644 --- a/code/sdk/drivers/peripheral/a5133/A5133main.h +++ b/code/sdk/drivers/peripheral/a5133/A5133main.h @@ -1,3 +1,13 @@ +/* + * @Author: penglei 1624952103@qq.com + * @Date: 2024-07-20 10:36:21 + * @LastEditors: penglei 1624952103@qq.com + * @LastEditTime: 2024-07-22 15:38:12 + * @FilePath: /FD230/code/sdk/drivers/peripheral/a5133/A5133main.h + * @Description: + * + * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. + */ #ifndef _A5133_MAIN_H_ #define _A5133_MAIN_H_ @@ -40,7 +50,7 @@ Uint8 RF_ReadPage(Uint8 addr, Uint8 page); void RF_WritePage(Uint8 addr, Uint8 wbyte, Uint8 page); void RF_WriteReg(Uint8, Uint8); Uint8 RF_ReadReg(Uint8); -void ByteSend(Uint8 src); +errcode_t ByteSend(Uint8 src); Uint8 ByteRead(void); void RF_SetCH(Uint8); Uint8 RF_Init(void); diff --git a/code/sdk/drivers/peripheral/a5133/service/a5133_service.cpp b/code/sdk/drivers/peripheral/a5133/service/a5133_service.cpp index 0c0aa9f92..178b51a8a 100644 --- a/code/sdk/drivers/peripheral/a5133/service/a5133_service.cpp +++ b/code/sdk/drivers/peripheral/a5133/service/a5133_service.cpp @@ -63,13 +63,25 @@ static bool a5133_sensor_exist = false; static bool g_a5133_timer_is_running = false; osTimerId_t g_a5133_service_timer = NULL; -static void a5133_service_check_timer_callback(void* data); -static void acc_service_timer_start_check(uint32_t rtc_ms) +static void a5133_service_check_timer_callback(void* data) { - - if (g_a5133_timer_is_running ) osTimerStop(g_a5133_service_timer); - if (a5133_service_running_stat == true) osTimerStart(g_a5133_service_timer, rtc_ms); + //unused(data); + g_a5133_timer_is_running = false; + if (a5133_service_running_stat == true) + { + + ISR_Timer0(); + // send_a5133_cmd_msg(A5133_SERVICE_CMD_TYPE_TIMER_CHECK); + } +} + +static void a5133_service_timer_start_check(uint32_t rtc_ms) +{ + if (g_a5133_timer_is_running ) + osTimerStop(g_a5133_service_timer); + if (a5133_service_running_stat == true) + osTimerStart(g_a5133_service_timer, rtc_ms); g_a5133_timer_is_running = true; } @@ -97,8 +109,8 @@ static uint8_t a5133_server_break_flag = 0; void send_a5133_cmd_msg(int cmd) { int ret; - if (a5133_sensor_exist == false) - return ; + // if (a5133_sensor_exist == false) + // return ; A5133_CMD_TYPE_T mail = 0; mail = cmd; @@ -130,10 +142,18 @@ static void a5133_service_check_task(void *arg) if (mail == A5133_SERVICE_CMD_TYPE_RUN_MASTER) { + PRINT("A5133_SERVICE_CMD_TYPE_RUN_MASTER \n"); + a5133_service_timer_start_check(50); a5133_main(MASTER); }else if (mail == A5133_SERVICE_CMD_TYPE_RUN_SLAVE) { + + PRINT("A5133_SERVICE_CMD_TYPE_RUN_SLAVE \n"); + a5133_service_timer_start_check(50); a5133_main(SLAVE); + }else if (mail == A5133_SERVICE_CMD_TYPE_TIMER_CHECK) + { + } } a5133_server_break_flag = 0; @@ -155,7 +175,7 @@ errcode_t uapi_a5133_service_init(void) app_task_definition_t taskcfg={0}; taskcfg.create_queue_handle = create_a5133_queue; taskcfg.attr.name="a5133_service"; - taskcfg.attr.priority = osPriorityBelowNormal1; + taskcfg.attr.priority = osPriorityNormal; taskcfg.attr.stack_size = A5133_SERVICE_TASK_SIZE; taskcfg.func = a5133_service_check_task; taskcfg.use_mem = USE_EXTEND_MEM; @@ -166,7 +186,7 @@ errcode_t uapi_a5133_service_init(void) PRINT("create a5133_service failed %d!\r\n",ret); return ERRCODE_FAIL; } - + a5133_timer_init(); return ERRCODE_SUCC; } diff --git a/code/sdk/drivers/peripheral/a5133/service/a5133_service.h b/code/sdk/drivers/peripheral/a5133/service/a5133_service.h index 39aa64855..9eea44310 100644 --- a/code/sdk/drivers/peripheral/a5133/service/a5133_service.h +++ b/code/sdk/drivers/peripheral/a5133/service/a5133_service.h @@ -31,7 +31,7 @@ extern "C" { typedef uint32_t A5133_CMD_TYPE_T ; #define A5133_SERVICE_CMD_TYPE_RUN_MASTER 0x09 #define A5133_SERVICE_CMD_TYPE_RUN_SLAVE 0x0A - +#define A5133_SERVICE_CMD_TYPE_TIMER_CHECK 0X0B errcode_t uapi_a5133_service_init(void); void uapi_a5133_service_deinit(void); /** -- 2.17.1