优化a5133驱动 574/1 574/head
authorpenglei <1624952103@qq.com>
Tue, 23 Jul 2024 06:09:29 +0000 (14:09 +0800)
committerpenglei <1624952103@qq.com>
Tue, 23 Jul 2024 06:09:29 +0000 (14:09 +0800)
code/sdk/build/config/target_config/brandy/config.py
code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
code/sdk/drivers/peripheral/a5133/A5133Main.c
code/sdk/drivers/peripheral/a5133/A5133Uti.c
code/sdk/drivers/peripheral/a5133/A5133Uti.h
code/sdk/drivers/peripheral/a5133/A5133main.h
code/sdk/drivers/peripheral/a5133/service/a5133_service.cpp
code/sdk/drivers/peripheral/a5133/service/a5133_service.h

index 744f178..db3586c 100755 (executable)
@@ -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',
     },
index 949291e..7c95dc6 100755 (executable)
@@ -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
index becb635..4ca37e8 100644 (file)
@@ -86,7 +86,6 @@ const Uint8 code PN9_Tab[]=
     0xEA,0x24,0x33,0x85,0xED,0x9A,0x1D,0xE0,\r
 };\r
 \r
-\r
 /*********************************************************************\r
 * main loop\r
 *********************************************************************/\r
@@ -94,7 +93,13 @@ void a5133_main(Uint8 Flag_MASTER)
 {\r
        \r
        if(RF_Init())/* init RF */\r
-               Err_State();\r
+       {\r
+       // Err_State();\r
+               PRINT("RF_Init Failed\n");\r
+\r
+               return;\r
+       }       \r
+\r
 \r
        if (Flag_MASTER) \r
        {   \r
@@ -253,10 +258,35 @@ void Err_State(void)
        //ERR display\r
        //Error Proc...\r
        //...\r
-       // while(1);\r
        PRINT("Err_State\n");\r
+       while(1)\r
+          LOS_Msleep(10);\r
+}\r
+/************************************************************************\r
+**  RF_WriteReg\r
+************************************************************************/\r
+void RF_WriteReg(Uint8 addr, Uint8 dataByte)\r
+{\r
+       a5133_gpio_scs_set_value(0);\r
+       ByteSend(addr);//bit7 cmd=0, bit6 r/w=0\r
+       ByteSend(dataByte);\r
+       a5133_gpio_scs_set_value(1);\r
+}\r
+\r
+/************************************************************************\r
+**  RF_ReadReg\r
+************************************************************************/\r
+Uint8 RF_ReadReg(Uint8 addr)\r
+{\r
+       Uint8 tmp;\r
+\r
+       a5133_gpio_scs_set_value(0);\r
+       ByteSend(addr | 0x40);//bit7 cmd=0,bit6 r/w=1\r
+       tmp = ByteRead();\r
+       a5133_gpio_scs_set_value(1);\r
+\r
+       return tmp;\r
 }\r
-   \r
 /************************************************************************\r
 **  Reset_RF\r
 ************************************************************************/\r
@@ -338,19 +368,32 @@ Uint8 RF_Init(void)
        // GIO1 = 1;\r
        // // GIO2 = 1;\r
 \r
+       // a5133_gpio_scs_set_value(1);\r
+       // a5133_gpio_sck_set_value(0);\r
+       // a5133_gpio_sdio_set_value(1);\r
+       \r
        RF_Reset();/* reset RF chip */\r
        RF_WriteID(ID_Tab);/* write ID code */\r
        RF_ReadID(id);\r
        for (i=0; i<8; i++)\r
        {\r
+               printf("%d,id[%2X]\n",i,id[i]);\r
                if (id[i] ^ ID_Tab[i])\r
+               {\r
+                       printf("read id failed %d\n",i);\r
                        return 1;/* fail */\r
+               }\r
+                       \r
        }\r
                \r
        RF_Config();/* config A7157 chip */\r
        RF_TrimmedValue_Init();/* load trimming value */\r
        if(RF_Cal())/* rf calibration */\r
+       {\r
+               printf("RF_Cal\n");\r
                return 1;\r
+       }\r
+\r
 \r
        return 0;\r
 }\r
index 7976ace..8d7b1a0 100644 (file)
-/********************************************************************                                                                  **\r
-*   Uti.h\r
-*   Function Definitions\r
-*\r
-********************************************************************/\r
-\r
-#include "gpio.h"\r
-#include "pinctrl_porting.h"\r
-#include "chip_io.h"\r
-#include "debug_print.h"\r
-#include "pinctrl.h"\r
-\r
-#include "A5133define.h"\r
-#include "A5133Uti.h"\r
-\r
-static void nop(void){}\r
-\r
-/**********************************************************\r
-* Delay1ms\r
-**********************************************************/\r
-void Delay1ms(Uint8 n)\r
-{\r
-       LOS_Mdelay(n);\r
-}\r
-\r
-/**********************************************************\r
-* Delay10ms\r
-**********************************************************/\r
-void Delay10ms(Uint8 n)\r
-{\r
-       LOS_Mdelay(n*10);\r
-}\r
-\r
-/**********************************************************\r
-* Delay100us\r
-**********************************************************/\r
-void Delay100us(Uint8 n)\r
-{\r
-       LOS_Udelay(n*100);\r
-}\r
-\r
-/**********************************************************\r
-* Delay10us\r
-**********************************************************/\r
-void Delay10us(Uint8 n)\r
-{\r
-       LOS_Udelay(n*10);\r
-}\r
-\r
-\r
-/**direction 1 out , 0 in*/\r
-errcode_t a5133_gpio_set_direction(pin_t pin, int direction)\r
-{\r
-       errcode_t ret = ERRCODE_SUCC;\r
-\r
-       if (direction)\r
-       {\r
-               ret = uapi_gpio_set_dir(pin, GPIO_DIRECTION_OUTPUT);\r
-               if (ret != ERRCODE_SUCC) {\r
-                       return ERRCODE_FAIL;\r
-               }\r
-       }else{\r
-               ret = uapi_gpio_set_dir(pin, GPIO_DIRECTION_INPUT);\r
-               if (ret != ERRCODE_SUCC) {\r
-                       return ERRCODE_FAIL;\r
-               }\r
-       }\r
-\r
-       return ret;\r
-}\r
-\r
-\r
-errcode_t a5133_gpio_set_value(pin_t pin,uint8_t value)\r
-{\r
-       errcode_t ret = ERRCODE_SUCC;\r
-       if (value == 1) {\r
-        ret = uapi_gpio_set_val(pin, GPIO_LEVEL_HIGH);\r
-    } else if (value == 0) {\r
-        ret = uapi_gpio_set_val(pin, GPIO_LEVEL_LOW);\r
-    } else {\r
-        return ERRCODE_FAIL;\r
-    }\r
-       return ret;\r
-}\r
-\r
-uint8_t a5133_gpio_get_value(pin_t pin)\r
-{\r
-       gpio_level_t gpio_level;\r
-    gpio_level = uapi_gpio_get_val(pin);\r
-    if (gpio_level == GPIO_LEVEL_HIGH) {\r
-        // PRINT("read level is %d\r\n", GPIO_LEVEL_HIGH);\r
-    } else {\r
-        // PRINT("read level is %d\r\n", GPIO_LEVEL_LOW);\r
-    }\r
-       return gpio_level;\r
-}\r
-\r
-#define SCS_OUT        S_MGPIO9  //spi SCS\r
-#define SCK_OUT        S_MGPIO8  //spi SCK\r
-#define SDIO_IN_OUT S_MGPIO7  //spi SDIO\r
-#define GIO1_IN        S_MGPIO6  //GPIO1\r
-\r
-uint8_t a5133_gpio_get_gio1_value(void)\r
-{\r
-       return a5133_gpio_get_value(GIO1_IN);\r
-}\r
-\r
-errcode_t a5133_gpio_scs_set_value(uint8_t value)\r
-{\r
-       if(value)\r
-               return a5133_gpio_set_value(SCS_OUT,1);\r
-       else\r
-               return a5133_gpio_set_value(SCS_OUT,0);\r
-}\r
-\r
-errcode_t a5133_gpio_sdio_set_value(uint8_t value)\r
-{\r
-       if(value)\r
-               return a5133_gpio_set_value(SDIO_IN_OUT,1);\r
-       else\r
-               return a5133_gpio_set_value(SDIO_IN_OUT,0);\r
-}\r
-errcode_t a5133_gpio_sck_set_value(uint8_t value)\r
-{\r
-       if(value)\r
-               return a5133_gpio_set_value(SCK_OUT,1);\r
-       else\r
-               return a5133_gpio_set_value(SCK_OUT,0);\r
-}\r
-errcode_t a5133_gpio_init(void)\r
-{\r
-\r
-       errcode_t ret = ERRCODE_SUCC;\r
-       \r
-    ret = uapi_pin_set_mode(SCS_OUT, HAL_PIO_FUNC_GPIO);\r
-    if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
-    }\r
-\r
-    ret = uapi_pin_set_mode(SCK_OUT, HAL_PIO_FUNC_GPIO);\r
-    if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
-    }\r
-\r
-       ret = uapi_pin_set_mode(SDIO_IN_OUT, HAL_PIO_FUNC_GPIO);\r
-    if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
-    }\r
-\r
-       ret = uapi_pin_set_mode(GIO1_IN, HAL_PIO_FUNC_GPIO);\r
-    if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
-    }\r
-\r
-       ret = a5133_gpio_set_direction(SCS_OUT,1);\r
-       if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
-    }\r
-\r
-\r
-       ret = a5133_gpio_set_direction(SCK_OUT,1);\r
-       if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
-    }\r
-       ret = a5133_gpio_set_direction(SDIO_IN_OUT,1);\r
-       if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
-    }\r
-       ret = a5133_gpio_set_direction(GIO1_IN,0);\r
-       if (ret != ERRCODE_SUCC) {\r
-        return ERRCODE_FAIL;\r
-    }\r
-       return ret;\r
-}\r
-\r
-\r
-// int test_gpio_toggle(pin_t pin, int level)\r
-// {\r
-        \r
-//     errcode_t ret = ERRCODE_SUCC;\r
-\r
-//     PRINT("[Params] PIN:%d, levle: %d. \r\n", pin, (uint32_t)level);\r
-//     ret = uapi_pin_set_mode(pin, HAL_PIO_FUNC_GPIO);\r
-//     if (ret != ERRCODE_SUCC) {\r
-//         return ERRCODE_FAIL;\r
-//     }\r
-\r
-//     ret = uapi_gpio_set_dir(pin, GPIO_DIRECTION_OUTPUT);\r
-//     if (ret != ERRCODE_SUCC) {\r
-//         return ERRCODE_FAIL;\r
-//     }\r
-\r
-//     if (level == 1) {\r
-//         uapi_gpio_set_val(pin, GPIO_LEVEL_HIGH);\r
-//     } else if (level == 0) {\r
-//         uapi_gpio_set_val(pin, GPIO_LEVEL_LOW);\r
-//     } else {\r
-//         return ERRCODE_FAIL;\r
-//     }\r
-\r
-//     ret = uapi_gpio_toggle(pin);\r
-//     if (ret != ERRCODE_SUCC) {\r
-//         return ERRCODE_FAIL;\r
-//     }\r
-\r
-//     gpio_level_t gpio_level;\r
-//     gpio_level = uapi_gpio_get_val(pin);\r
-//     if (gpio_level != (gpio_level_t)level) {\r
-//         PRINT("gpio toggle success\r\n");\r
-//         PRINT("read level is %d\r\n", gpio_level);\r
-//     } else {\r
-//         PRINT("gpio toggle failed\r\n");\r
-//         PRINT("read level is %d\r\n", gpio_level);\r
-//         return ERRCODE_FAIL;\r
-//     }\r
-\r
-//     return ERRCODE_SUCC;\r
-// }\r
-\r
-\r
-\r
-/************************************************************************\r
-**  RF_WriteReg\r
-************************************************************************/\r
-void RF_WriteReg(Uint8 addr, Uint8 dataByte)\r
-{\r
-       a5133_gpio_scs_set_value(0);\r
-       ByteSend(addr);//bit7 cmd=0, bit6 r/w=0\r
-       ByteSend(dataByte);\r
-       a5133_gpio_scs_set_value(1);\r
-}\r
-\r
-/************************************************************************\r
-**  RF_ReadReg\r
-************************************************************************/\r
-Uint8 RF_ReadReg(Uint8 addr)\r
-{\r
-       Uint8 tmp;\r
-\r
-       a5133_gpio_scs_set_value(0);\r
-       ByteSend(addr | 0x40);//bit7 cmd=0,bit6 r/w=1\r
-       tmp = ByteRead();\r
-       a5133_gpio_scs_set_value(1);\r
-\r
-       return tmp;\r
-}\r
-\r
-/************************************************************************\r
-**  ByteSend\r
-************************************************************************/\r
-void ByteSend(Uint8 src)\r
-{\r
-       Uint8 i;\r
-\r
-       for(i = 0; i < 8; i++)\r
-       {\r
-               if(src & 0x80)\r
-                        a5133_gpio_set_value(SDIO_IN_OUT,1);\r
-               else\r
-                        a5133_gpio_set_value(SDIO_IN_OUT,0);                    \r
-\r
-               nop();\r
-               a5133_gpio_set_value(SCK_OUT,1);\r
-               nop();\r
-               a5133_gpio_set_value(SCK_OUT,0);\r
-               src = src << 1;\r
-       }\r
-}\r
-\r
-/************************************************************************\r
-**  ByteRead\r
-************************************************************************/\r
-Uint8 ByteRead(void)\r
-{\r
-       Uint8 i,tmp;\r
-\r
-       //sdio pull high\r
-       a5133_gpio_sdio_set_value(1);                    \r
-       // P0OE = P0OE & (~0x02);\r
-\r
-       a5133_gpio_set_direction(SDIO_IN_OUT,0);\r
-       for(i = 0; i < 8; i++)\r
-       {\r
-               if(a5133_gpio_get_value(SDIO_IN_OUT))\r
-                        tmp = (tmp << 1) | 0x01;\r
-               else\r
-                        tmp = tmp << 1;\r
-\r
-               a5133_gpio_sck_set_value(1);                     \r
-               nop();\r
-               a5133_gpio_sck_set_value(0);                     \r
-       }\r
-       a5133_gpio_set_direction(SDIO_IN_OUT,1);\r
-       // P0OE = P0OE | (0x02);\r
-       return tmp;\r
+/********************************************************************                                                                  **
+*   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
index eeec5be..6bf40d5 100644 (file)
@@ -1,3 +1,13 @@
+/*\r
+ * @Author: penglei 1624952103@qq.com\r
+ * @Date: 2024-07-20 10:36:21\r
+ * @LastEditors: penglei 1624952103@qq.com\r
+ * @LastEditTime: 2024-07-22 15:38:16\r
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/a5133/A5133Uti.h\r
+ * @Description: \r
+ * \r
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. \r
+ */\r
 /********************************************************************\r
 *   UTI.h\r
 *   Function Definitions\r
@@ -23,7 +33,7 @@ errcode_t a5133_gpio_scs_set_value(uint8_t value);
 errcode_t a5133_gpio_sdio_set_value(uint8_t value);\r
 errcode_t a5133_gpio_sck_set_value(uint8_t value);\r
 uint8_t a5133_gpio_get_gio1_value(void);\r
-void ByteSend(Uint8 src);\r
+errcode_t ByteSend(Uint8 src);\r
 Uint8 ByteRead(void);\r
 \r
 #endif\r
index f551113..b37319e 100644 (file)
@@ -1,3 +1,13 @@
+/*\r
+ * @Author: penglei 1624952103@qq.com\r
+ * @Date: 2024-07-20 10:36:21\r
+ * @LastEditors: penglei 1624952103@qq.com\r
+ * @LastEditTime: 2024-07-22 15:38:12\r
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/a5133/A5133main.h\r
+ * @Description: \r
+ * \r
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. \r
+ */\r
 #ifndef _A5133_MAIN_H_\r
 #define _A5133_MAIN_H_\r
 \r
@@ -40,7 +50,7 @@ Uint8 RF_ReadPage(Uint8 addr, Uint8 page);
 void RF_WritePage(Uint8 addr, Uint8 wbyte, Uint8 page);\r
 void RF_WriteReg(Uint8, Uint8);\r
 Uint8 RF_ReadReg(Uint8);\r
-void ByteSend(Uint8 src);\r
+errcode_t ByteSend(Uint8 src);\r
 Uint8 ByteRead(void);\r
 void RF_SetCH(Uint8);\r
 Uint8 RF_Init(void);\r
index 0c0aa9f..178b51a 100644 (file)
@@ -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;
 }
 
index 39aa648..9eea443 100644 (file)
@@ -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);
 /**