一般情况下,组播MAC前三个字节固定为0x01,0x00,0x5E,后三个字节与组播IP的后三个字节对应。注意,0x5E这一项的原因,会导致一个组播MAC实际上是对应多个组播IP的,此时需要人为的去规避一个局域网内不要使用会导致重复的组播IP地址。
好的,谢谢。”0x5E这一项的原因,会导致一个组播MAC实际上是对应多个组播IP的,此时需要人为的去规避一个局域网内不要使用会导致重复的组播IP地址。“这个怎么理解呢,一个组播MAC对应到多个组播IP,那实际是对应到哪几个组播IP了,对应关系是如何的呢,如果不知道对应关系,就无法人为避免导致重复的组播IP地址了。
请问我用spi给ch395发送命令,不管发什么它都返回255,这个可能是哪里出问题了?
读取的是255情况下问题可能性很多,建议抓取SPI时序波形查看。
技术支持你好,请问可以提供一份使用STM32的CH395的FTP客户端例程吗?
您好,没有STM32的CH395的FTP客户端例程。
你好,我这边使用CH395Q,SPI接口连接处理器:
测试1:给395Q连发2包数据间隔很小(100us),包大小约1000字节,使用中断方式,发现接收有概率会丢包,丢第2个包。
测试2:使用keil进调试模式,处理器暂停执行,给395Q连发2包数据间隔很小(100us),然后处理器再继续执行,可正确读回2个包。
初步估计,测试1中当收到第1包数据后,中断中去读取数据,此时395Q收到了第2包数据,然后实际读取不到第2包数据。
看到楼主的说明,是否跟描述的这个原因有关:
1)395在收发数据的过程中不能被其他进程打断,如果395在数据收发中被其他任务打断,则可能会导致数据丢包
如果是,请问这个过程具体是指从什么时候开始什么时候结束?处理器这边如何判断395Q是否正在收发?
您好,请问您使用的是UDP、还是TCP模式,如果您使用的是UDP模式,那么按照您的这个速度,那么您可以使用CH395重新设置Socket接收缓冲区大小函数,将单个Socket接受缓冲区设置大一些,这样可以连续收到两包数据不丢包。如果您是TCP模式的话,您也可以先是前面的步骤,然后抓包看重传包是否有发送。
使用的是UDP。SPI时钟24MHz
应该不是接收缓冲区的问题,缓冲区大小已设置成9(个块),实际使用外部工具发送也是只发送连续2个包(间隔很小)测试1次。
而且,把主控处理器进调试模式暂停,这个时候实际上收到的2个包都在395中,然后再主控处理器继续执行时是能正常收到2个包的。
目前判断:如果主控全速运行,外部工具发2个包,当主控读取第1个包时,395可能正在接收第2个包。不知道这个过程有没有影响?
主控目前在接收到395中断时,中断处理程序中发信号量后退出;信号量会唤醒395数据处理线程,执行“查全局中断状态”->“查socket中断状态”->“是接收中断则读取接收长度”->"读取接收数据"。
也曾怀疑是否在spi读取接收数据的过程中被第2包数据产生的中断打断会有问题,所以做了验证:在上述“查全局中断状态”前就关闭了全局中断,直到"读取接收数据"执行完才开全局中断,但是还是会有概率读不到第2包
多个CH395通过交换机进行组网,5ms为周期通过UDP广播发送数据,一段时间后出现CH395_1无法接收到CH395_2的数据情况(最长约30s后恢复),但此时CH395_1能够接收CH395_3的数据,且此时CH395_3能够收到CH395_2的数据;测试抓包发现CH395的发送全部成功;请问技术支持这是什么原因呢?让人很费解,从现象看此时CH395_1的接收功能应该还是正常的;通过交换机端口监控,也能看见此时CH395_2发送的数据包也向CH395_1转发了,但CH395_1就是收不到
你好:
我用 UDP客户端模式 通讯正常. 改用UDP服务模式 遇到点儿问题.
通过中断引脚状态 判断有无新数据包 有时会重复读最后收到的包两次,
过程如下
while 中断引脚为低
{??
? 读中断状态寄存器
?? 判断有socket中断
?? 读socket状态
?? 读接收数据长度? 并处理
}
用这种方法处理 发现 有时发生数据包丢失.
有时发生 重复读取. ??
由于在服务模式下? 接收数据长度 寄存器,在数据读出后还保持原来的值, 无法判断数据是否读空,不知如何处理比较可靠.
你好,我们使用stm32f407 spi1 PA5 PA6 PA7 连接CH395Q,在初始化过程中测试CHECK_EXIST ,无论发送什么数据均只能收到0x00回复。请问能否提供一份该硬件下的初始化示例代码,谢谢!
我在使用CH395L时,经常出现CH395CMDInitCH395指令返回0xFA 位置异常错误。请问如何处理呢?
您好,(1)设置完IP掩码网关之后建议增加300ms之后再执行初始化指令 (2)初始化之后功耗会急增,建议电源驱动3v3和1v8各按150mA计算。