网络主要内容测试完成
This commit is contained in:
@@ -925,7 +925,7 @@ uint8_t ch395f_get_dhcp_status(void) {
|
||||
|
||||
/*
|
||||
* 函数功能:设置Socket协议类型
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 3
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 7
|
||||
* proto - 协议类型 uint8_t CH395F_PROTO_TYPE_xxx
|
||||
* 限定条件:Socket必须处于关闭状态
|
||||
*/
|
||||
@@ -948,7 +948,7 @@ void ch395f_set_proto_type(uint8_t sock, uint8_t proto) {
|
||||
|
||||
/*
|
||||
* 函数功能:设置Socket目标IP地址
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 3
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 7
|
||||
* p_ip - 4字节目标IP指针 uint8_t*
|
||||
* 限定条件:p_ip不可为NULL
|
||||
*/
|
||||
@@ -980,7 +980,7 @@ void ch395f_set_des_ip(uint8_t sock, uint8_t *p_ip) {
|
||||
|
||||
/*
|
||||
* 函数功能:设置Socket目标端口(小端格式)
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 3
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 7
|
||||
* port - 目标端口号 uint16_t
|
||||
*/
|
||||
void ch395f_set_des_port(uint8_t sock, uint16_t port) {
|
||||
@@ -1005,7 +1005,7 @@ void ch395f_set_des_port(uint8_t sock, uint16_t port) {
|
||||
|
||||
/*
|
||||
* 函数功能:设置Socket源端口(小端格式)
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 3
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 7
|
||||
* port - 源端口号 uint16_t
|
||||
*/
|
||||
void ch395f_set_sour_port(uint8_t sock, uint16_t port) {
|
||||
@@ -1105,7 +1105,7 @@ uint8_t ch395f_tcp_disconnect(uint8_t sock) {
|
||||
|
||||
/*
|
||||
* 函数功能:向Socket发送缓冲区写入数据(DMA批量传输)
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 3
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 7
|
||||
* p_data - 数据指针 uint8_t*
|
||||
* len - 数据长度 uint16_t
|
||||
* 限定条件:1. p_data不可为NULL
|
||||
@@ -1149,7 +1149,7 @@ void ch395f_write_send_buf(uint8_t sock, uint8_t *p_data, uint16_t len) {
|
||||
|
||||
/*
|
||||
* 函数功能:从Socket接收缓冲区读取数据(DMA批量传输)
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 3
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 7
|
||||
* p_data - 输出缓冲区指针 uint8_t*
|
||||
* len - 待读取数据长度 uint16_t
|
||||
* 限定条件:1. p_data不可为NULL
|
||||
@@ -1193,8 +1193,8 @@ void ch395f_read_recv_buf(uint8_t sock, uint8_t *p_data, uint16_t len) {
|
||||
|
||||
/*
|
||||
* 函数功能:获取Socket接收缓冲区中数据长度
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 3
|
||||
* 返回值:接收数据长度 uint16_t
|
||||
* 入口参数:sock - Socket索引 uint8_t 0 - 7
|
||||
* 返回值:接收数据长度 uint16_t,实际上 ch395F 接收缓冲区最大也就 8192
|
||||
* 限定条件:Socket必须已打开
|
||||
*/
|
||||
uint16_t ch395f_get_recv_len(uint8_t sock) {
|
||||
|
||||
@@ -110,12 +110,31 @@ extern "C" {
|
||||
/* 3 字节输入 + 数据输入(socket + 长度 + 数据) */
|
||||
#define CH395F_CMD_WRITE_SEND_BUF_SN 0x39U
|
||||
|
||||
/*
|
||||
* TCP MSS(CH395F_CMD_SET_TCP_MSS 参数)
|
||||
* 由 net_init 经 ch395f_set_tcp_mss() 下发;此处作为单一真值源,
|
||||
* DMA 缓冲大小亦由此推导(见下)。当前选取依据:8 Socket 共享 24KB 缓冲时,
|
||||
* 各 Socket 接收缓冲 = 2×MSS,故 MSS 取 1024 为最大值(详见 net_socket.c 分配注释)。
|
||||
*/
|
||||
#define CH395F_TCP_MSS 1024U
|
||||
|
||||
/* 内部缓冲 RAM 每块字节数(手册 §5.45:48 块 × 512B = 24KB) */
|
||||
#define CH395F_RAM_BLOCK_SIZE 512U
|
||||
/* 单 Socket 缓冲块数由 MSS 推导:接收 = 2×MSS(满足手册 §9.2.8 接收 ≥ 2×MSS),发送 = 1×MSS;向上取整 */
|
||||
#define CH395F_RECV_BLOCKS ((2U * CH395F_TCP_MSS + CH395F_RAM_BLOCK_SIZE - 1U) / CH395F_RAM_BLOCK_SIZE)
|
||||
#define CH395F_SEND_BLOCKS ((CH395F_TCP_MSS + CH395F_RAM_BLOCK_SIZE - 1U) / CH395F_RAM_BLOCK_SIZE)
|
||||
/* 单 Socket 硬件收发缓冲字节数(= 块数 × 块大小)。写入发送 FIFO 的单次长度严禁超过此值,
|
||||
* 否则会写穿有限的发送缓冲(见 Trap 20)。 */
|
||||
#define CH395F_SEND_BUF_SIZE_BYTES (CH395F_SEND_BLOCKS * CH395F_RAM_BLOCK_SIZE)
|
||||
#define CH395F_RECV_BUF_SIZE_BYTES (CH395F_RECV_BLOCKS * CH395F_RAM_BLOCK_SIZE)
|
||||
|
||||
/*
|
||||
* SPI DMA 事务限制
|
||||
* CH395F_SPI_DMA_MAX_PAYLOAD: 单次 DMA 事务最大有效载荷(总缓冲 - 4 字节命令头)
|
||||
* 注意: CH395F 内部 socket 接收缓冲默认 4096B,DMA 缓冲需至少 4100 以一次性读空
|
||||
* 接收方向需一次性读空整个 Socket 接收缓冲(= 2×MSS,避免 Trap 13 部分读导致数据不可见),
|
||||
* 故总缓冲 = 2×MSS + 4(4 为命令头开销),有效载荷 = 2×MSS。
|
||||
*/
|
||||
#define CH395F_SPI_DMA_BUF_SIZE 4100U
|
||||
#define CH395F_SPI_DMA_BUF_SIZE (CH395F_TCP_MSS * 2U + 4U)
|
||||
#define CH395F_SPI_DMA_MAX_PAYLOAD (CH395F_SPI_DMA_BUF_SIZE - 4U)
|
||||
|
||||
/* 其他命令 */
|
||||
|
||||
Reference in New Issue
Block a user