STM32与FPGA实现以太网功能--web、UDP、tcp测试

web网管程序在ETH工程已经做好并验证完成了,现在STM32+FPGA实现ping功能,那么web功能应该一样能实现

**问题1:**浏览器输入192.168.1.30,能出现登入界面,但是输入密码点击没反应,果然没有一帆风顺的。

原因:发现有一个设备正常,另一个设备通过TFTP下发web网页偶尔正常。打印排查下,发现读网页大小不对(估计用W25Q16弄的文件系统哪里bug,记录下,等以后处理)

**问题2:**web网管有的卡,登入界面不是很流畅

原因:浏览器下发命令,STM32上传web数据帧,网页数据比较大,有10K以上,需要发送10帧以上数据,STM32与FPGA数据传输效率不行,

解决方法:

1、FSMC驱动速率尽可能快,减少与FPGA通信时间

复制代码
  /* ComSpaceTiming */
  ComSpaceTiming.SetupTime = 0;
  ComSpaceTiming.WaitSetupTime = 2;
  ComSpaceTiming.HoldSetupTime = 2;
  ComSpaceTiming.HiZSetupTime = 1;
  /* AttSpaceTiming */
  AttSpaceTiming.SetupTime = 0;
  AttSpaceTiming.WaitSetupTime = 2;
  AttSpaceTiming.HoldSetupTime = 2;
  AttSpaceTiming.HiZSetupTime = 1;

2、STM32网络输出等待FPGA发送完(数据频率快,可能出现丢包现象)

复制代码
uint8_t fpgaBuf[1600] = {0};
uint8_t fpga_SendPacket(struct pbuf *p)
{
	struct pbuf* q = NULL;
    uint8_t regData = 0;
    uint16_t txLen = 0;
	xSemaphoreTake(FSMC_Handle, 1000);
    regData = fpga_One_read(FPAG_TX_ISR);
    while((regData &0X01)==1)//FPGA中有未发送完成数据
    {
		xSemaphoreGive( FSMC_Handle );//给出互斥量
        // printf("FPGA donot send over %d\r\n", regData);
        return 0;
    }

    q = p;
    txLen = 0;
    while(q)
	{
        if(txLen + q->len >= 1600)
        {
            xSemaphoreGive( FSMC_Handle );//给出互斥量
            printf("FPGA err %d %d\r\n", txLen, q->len);
            return 0;
        }
        memcpy(&fpgaBuf[txLen], (uint8_t*)q->payload, q->len);
        txLen += q->len;
        q = q->next;
	}

    if(txLen < 60)// 最少60,ARP应答42字节无效?
    {
        memset(&fpgaBuf[txLen], 0, (60 - txLen));
        txLen = 60;
    }
    fpga_write(FPAG_TX_ADD, fpgaBuf, txLen);
	fpga_One_write(FPAG_TX_LEN_ADDH,(txLen>>8)&0XFF);
    fpga_One_write(FPAG_TX_LEN_ADDL, txLen&0XFF);
    fpga_One_write(FPAG_TX_ISR, 0X01);
    while((fpga_One_read(FPAG_TX_ISR)&0X01));			//等待发送完成

    // printf("FPGA send start %d\r\n", txLen);
	xSemaphoreGive( FSMC_Handle );//给出互斥量
	return 1;
}

3、减小web网页,减少发送次数

web网管实现,udp、tcp通讯应该没问题,这监控数据通信,频率很低,数据很少

相关推荐
国科安芯23 分钟前
星间激光通信终端CANFD控制网络的时延确定性与辐射可靠性
网络·嵌入式硬件·信息与通信·canfd·低轨卫星·商业航天·抗辐射
一直C36 分钟前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
传感器与混合集成电路1 小时前
150MHz主频、8路DAC与6路PWM:JLH221360伺服控制SIP解析
嵌入式硬件
comyccccc1 小时前
STM32PID控制板设计全解析学习笔记
单片机·嵌入式硬件
幻智星科技2 小时前
多通道数据采集DMA设计详解
fpga开发·udp·硬件架构
碧海银沙音频科技研究院2 小时前
实现炬芯ATS308X的usb cdc 串口IAP 固件升级功能实现
人工智能·嵌入式硬件·深度学习·算法
恒锐丰科技林技术员2 小时前
EG1160 高压半桥驱动芯片:高压功率变换的实用驱动方案
经验分享·嵌入式硬件·硬件工程
智购科技自动售卖机厂家3 小时前
双摄像头方案F1-score只有0.85,排查发现是上下视角的融合逻辑写反了~YH
python·单片机·嵌入式硬件·算法·eclipse
llilian_164 小时前
脉冲时间间隔及计数如何精准测试?
功能测试·嵌入式硬件·51单片机·软件工程
路上有只喵4 小时前
认识元器件 · 牛角型电解电容· 规格书解读
嵌入式硬件