网络通,测试flash

This commit is contained in:
2026-07-17 15:16:29 +08:00
parent c8c7ec0992
commit 3466c4c062
19 changed files with 4411 additions and 26 deletions

View File

@@ -27,6 +27,8 @@
#include <string.h>
#include <stdio.h>
#include "ch395f.h"
#include "gd5f2gq5ue.h"
#include "flashdb.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@@ -92,10 +94,93 @@ int main(void)
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_SPI2_Init();
MX_SPI1_Init();
/* USER CODE BEGIN 2 */
/* CH395F 初始化 */
ch395f_reset();
ch395f_init();
char dbg[64];
uint8_t mac[6];
ch395f_reset();
/* [1/5] SPI 通信检测 */
sprintf(dbg, "[1/5] CH395F %s\r\n",
(ch395f_check_exist() == CH395F_STATUS_OK) ? "detected" : "ERROR: not detected");
HAL_UART_Transmit(&huart1, (uint8_t*)dbg, strlen(dbg), 1000);
/* [2/5] 芯片版本 */
sprintf(dbg, "[2/5] CH395F version: 0x%02X\r\n", ch395f_get_version());
HAL_UART_Transmit(&huart1, (uint8_t*)dbg, strlen(dbg), 1000);
/* 配置 IP/网关/掩码 */
{
uint8_t ip[4] = {192, 168, 1, 100};
uint8_t gw[4] = {192, 168, 1, 1};
uint8_t mask[4] = {255, 255, 255, 0};
ch395f_set_ip_addr(ip);
ch395f_set_gwip_addr(gw);
ch395f_set_mask_addr(mask);
}
/* [3/5] 协议栈初始化 */
sprintf(dbg, "[3/5] Protocol stack init %s\r\n",
(ch395f_init() == CH395F_STATUS_OK) ? "OK" : "ERROR");
HAL_UART_Transmit(&huart1, (uint8_t*)dbg, strlen(dbg), 1000);
/* [4/5] MAC 地址 */
ch395f_get_mac_addr(mac);
sprintf(dbg, "[4/5] MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
HAL_UART_Transmit(&huart1, (uint8_t*)dbg, strlen(dbg), 1000);
/* [5/5] 强制 100M 全双工后检测 PHY */
ch395f_set_phy(CH395F_PHY_100M_FULL);
HAL_Delay(3000);
{
uint8_t s = ch395f_get_phy_status();
const char *desc = (s == CH395F_PHY_DISCONN) ? "DISCONNECTED" :
(s == CH395F_PHY_100M_FULL) ? "100M FULL" :
(s == CH395F_PHY_100M_HALF) ? "100M HALF" :
(s == CH395F_PHY_10M_FULL) ? "10M FULL" :
(s == CH395F_PHY_10M_HALF) ? "10M HALF" : "RESERVED";
sprintf(dbg, "[5/5] PHY: 0x%02X (%s)\r\n", s, desc);
HAL_UART_Transmit(&huart1, (uint8_t*)dbg, strlen(dbg), 1000);
}
/* ===================== FlashDB KVDB 测试 ===================== */
{
uint8_t gd_mid, gd_did;
int ret;
/* 检测 GD5F2GQ5UE */
ret = gd5f2gq5ue_read_id(&gd_mid, &gd_did);
sprintf(dbg, "[GD5F] ID: MID=0x%02X DID=0x%02X %s\r\n",
gd_mid, gd_did,
(ret == GD5F_OK && gd_mid == 0xC8 && gd_did == 0x52) ? "OK" : "FAIL");
HAL_UART_Transmit(&huart1, (uint8_t*)dbg, strlen(dbg), 1000);
/* 初始化 FlashDB KVDB */
{
static struct fdb_kvdb kvdb;
ret = fdb_kvdb_init(&kvdb, "db", "fdb_kvdb1", NULL, NULL);
sprintf(dbg, "[FlashDB] KVDB init: %s\r\n",
(ret == FDB_NO_ERR) ? "OK" : "FAIL");
HAL_UART_Transmit(&huart1, (uint8_t*)dbg, strlen(dbg), 1000);
if (ret == FDB_NO_ERR) {
/* 写入测试 KV */
fdb_kv_set(&kvdb, "test_key", "hello_flashdb");
HAL_UART_Transmit(&huart1, (uint8_t*)"[FlashDB] KV set OK\r\n", 21, 1000);
/* 读取测试 KV */
char *val = fdb_kv_get(&kvdb, "test_key");
if (val) {
sprintf(dbg, "[FlashDB] KV get: %s\r\n", val);
} else {
sprintf(dbg, "[FlashDB] KV get: NULL\r\n");
}
HAL_UART_Transmit(&huart1, (uint8_t*)dbg, strlen(dbg), 1000);
}
}
}
/* USER CODE END 2 */
/* Infinite loop */
@@ -111,7 +196,7 @@ int main(void)
HAL_GPIO_TogglePin(LED4_GPIO_Port, LED4_Pin);
HAL_GPIO_TogglePin(LED5_GPIO_Port, LED5_Pin);
HAL_GPIO_TogglePin(LED6_GPIO_Port, LED6_Pin);
HAL_UART_Transmit(&huart1, str, strlen((char*)str), 1000);
//HAL_UART_Transmit(&huart1, str, strlen((char*)str), 1000);
HAL_Delay(500);
}
/* USER CODE END 3 */
@@ -195,4 +280,4 @@ void assert_failed(uint8_t *file, uint32_t line)
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */
#endif /* USE_FULL_ASSERT */