Dozingfiretruck 5 месяцев назад
Родитель
Сommit
f92b7f7ba2

+ 25 - 1
components/little_flash/inc/little_flash_define.h

@@ -190,8 +190,32 @@ typedef struct {
         };
         uint32_t pt10;
     };
+    union{
+        struct {
+            uint32_t Page_Program_Time_Multiplier:4;        /**< Multiplier from typical time to max time for Page or byte program*/
+            uint32_t Page_Size:4;                           /**< Page Size */
+            uint32_t Page_Program_Type_1_Time:6;            /**< Page Program Typical time */
+            uint32_t Page_Program_Type_2_Time:5;            /**< Byte Program Typical time, first byte */
+            uint32_t Page_Program_Type_3_Time:5;            /**< Byte Program Typical time, additional byte */
+            uint32_t Erase_Chip_Type_Time:7;                /**< Chip Erase, Typical time */
+            uint32_t :1;
+        };
+        uint32_t pt11;
+    };
+    // ...
+    uint32_t pt12;
+    uint32_t pt13;
+    uint32_t pt14;
+    uint32_t pt15;
+    uint32_t pt16;
+    uint32_t pt17;
+    uint32_t pt18;
+    uint32_t pt19;
+    uint32_t pt20;
+    uint32_t pt21;
+    uint32_t pt22;
+    uint32_t pt23;
     // ...
-
 }little_flash_sfdp_pt_t;
 
 typedef struct {

+ 4 - 0
components/little_flash/src/little_flash.c

@@ -196,6 +196,10 @@ lf_err_t little_flash_sfdp_probe(little_flash_t *lf){
     }
     LF_DEBUG("Parameter Header is OK. The Parameter ID is 0x%04X, Revision is V%d.%d, Length is %d,Parameter Table Pointer is 0x%06lX.",
             sfdp.parameter_id, recv_data[1],recv_data[2],sfdp.parameter_length, sfdp.parameter_pointer);
+    if (sfdp.parameter_length * 4>sizeof(little_flash_sfdp_pt_t)){
+        LF_ERROR("Table Revision %d.%d is not supported", sfdp.parameter_major_rev, sfdp.parameter_minor_rev);
+        return LF_ERR_SFDP_PARAMETER;
+    }
     uint8_t parameter_table[sfdp.parameter_length * 4];
     little_flash_sfdp_read(lf, sfdp.parameter_pointer, parameter_table, sfdp.parameter_length);