[以太网芯片] CH395数据接收与发送问题

[复制链接]
 楼主| micoccd 发表于 2024-9-28 14:44 | 显示全部楼层 |阅读模式
1.若395接收到数据,会产生数据接收中断信号,检测395的INT引脚是否有低电平产生,注意如果使用单片机外部中断,则触发位要设置为低电平触发。若有中断信号,则读取中断状态,对照头文件里的定义,获取中断含义
2.检查395接收中断的处理,正常流程是:获取中断、读取数据长度,读取数据内容。
3.UDP server 模式下的数据收发与其他模式不一样:
数据接收时,395会在数据包前加上8个字节的信息,分别是数据包长度,源端口,源ip。在接收中断处理任务里,需要将这些信息分离并保存。数据发送时,395使用395UDPSendTo()函数,函数参数需要使用上面的信息
4.与395发送相关的中断有两个,分别是发送完成中断与发送缓冲区空闲中断;单片机向395发送缓冲区写一包数据,395会将数据复制到MAC缓冲区,复制完毕后会产生发送缓冲区空闲中断;CH395可能会将数据分装成若干包数据包,每发送一包数据包,395都会产生一次发送完成中断;因此在实际发送时,必须要等到发送缓冲区空闲中断产生后,才能向395缓冲区填写下一次数据
5.395在数据收发过程中出现数据丢包现象:
(1)395在收发数据的过程中不能被其他进程打断,如果395在数据收发中被其他任务打断,则可能会导致数据丢包
(2)检查下定义接收缓冲区大小,读取接收长度,看是否超过了接收缓冲区。接收缓冲区在定义的时候至少要大于定义的TCP MSS的值。

yangjiaxu 发表于 2024-11-8 21:21 | 显示全部楼层
CH395属于网络通信的芯片吧,好像和W5500功能差不多
Alina艾 发表于 2024-11-8 22:18 | 显示全部楼层
CH395是一种用于网络通信的芯片,通常用于嵌入式系统中。在数据收发过程中,CH395需要保持连续的操作以确保数据的完整性和正确性。
Allison8859 发表于 2024-11-9 08:31 | 显示全部楼层
在数据传输过程中,数据包是按顺序发送和接收的。如果在中途被打断,可能会导致部分数据包未能正确发送或接收,从而导致数据包不完整。
Belle1257 发表于 2024-11-9 12:44 | 显示全部楼层
打断可能会导致数据包的发送或接收过程被中断,从而导致数据包丢失。特别是在高速数据传输中,这种中断可能会导致多个数据包丢失。
Candic12e 发表于 2024-11-9 16:33 | 显示全部楼层
在多包数据传输中,数据包的顺序非常重要。如果被打断,可能会导致数据包的顺序错乱,从而影响数据的正确解析和处理。

Carmen7 发表于 2024-11-9 21:21 | 显示全部楼层
CH395内部有一个状态机来管理数据收发的状态。如果被打断,状态机可能会进入错误的状态,导致后续的数据处理出现问题。
Betty996 发表于 2024-11-10 11:21 | 显示全部楼层
确保CH395的数据收发任务具有较高的优先级,避免被低优先级任务打断。
Charlotte夏 发表于 2024-11-10 14:13 | 显示全部楼层
在数据收发过程中,暂时屏蔽其他中断,确保CH395的操作不被打断。
Betty1299 发表于 2024-11-10 16:21 | 显示全部楼层
合理分配时间片,确保CH395有足够的时间完成数据收发操作。
alxd 发表于 2024-11-11 21:16 | 显示全部楼层
我觉得数据丢包应该不容易吧,把中断优先级配置好就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

727

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部