CH395 Socket3 Socket4 Socket5 配置成TCP_Client,只有Socket3能正常收发数据,Socket4 Socket5不能收发数据

CH395 Socket3 Socket4 Socket5 配置成TCP_Client,只有Socket3能正常收发数据,Socket4 Socket5不能接收数据(无接收中断),能发心跳包,但数据是错的,且是固定的有规律数据,重新分配过缓存了,  

static void Socket_R_S_Buf_Modify(void )  // 定义6个 Socket收发缓冲区 大小

{

   CH395SetSocketRecvBuf(0,0,4);     // Socket 0 ,接收缓冲区4*512 = 2K,发送缓冲区4*512 = 2K

   CH395SetSocketSendBuf(0,4,4);  

  

   CH395SetSocketRecvBuf(1,8,4);     // Socket 1 

   CH395SetSocketSendBuf(1,12,4);  

  

   CH395SetSocketRecvBuf(2,16,4);    // Socket 2 

   CH395SetSocketSendBuf(2,20,4);  

  

   CH395SetSocketRecvBuf(3,24,4);    // Socket 3 

   CH395SetSocketSendBuf(3,28,4);  

  

   CH395SetSocketRecvBuf(4,32,4);    // Socket 4 

   CH395SetSocketSendBuf(4,36,4);  

  

   CH395SetSocketRecvBuf(5,40,4);    // Socket 5 

   CH395SetSocketSendBuf(5,44,4);

}

请版主帮助分析解决,急啊

image.png

您好,CH395默认开启四个socket,需要增加socket数量则另外要分配缓冲区。

(1)需要重新分配缓冲区数量,保证每个socket有收发缓存可使用。鉴于您进行了此步骤,可排除相关问题。

(2)驱动代码宏定义中的_SOCK_INF的socket信息和socketbuff外部缓存也需要定义足够组量。

(3)在判断全局中断状态类型的时候,由两个字节表示;鉴于后四个socket存在问题,检查第二个字节的标志是否正确读到,可使用逻辑分析仪检查实际物理电压波形。

(4)后三个TCP_Client的socket,请检查是否有相同的目的IP、目的端口或者本地端口号存在,造成冲突。

(5)使用芯片前可先按照官方例程风格及内容移植,确认代码正常使用之后,在按照需求进行更改,以此避免其他影响。



只有登录才能回复,可以选择微信账号登录