首页 >> 知识 >> stm32h750以太网调试记录

stm32h750以太网调试记录

看了stm32h750系列的介绍,其模拟性能、运算性能和通信功能都很强,并且作为一款新的MCU,迅速在市场上普及,价格也可以接受,所以很快入手了一块stm32h750VBT6开发板,进行实验。

与之前一样,完全不使用st的固件库,只借鉴启动文件:startup_stm32h750xx.s和系统定义:stm32h750xx.h,并将其中定义的固件库相关信息删除。

CPU没有跑满480MHz,而是是用一般例程中的400MHz。

由于项目只是用udp通信,就不用lwip那么麻烦的协议栈了,自己写一个就够了,只需实现arp、icmp、ip、udp协议。当然,udp协议是简化的,最大支持包长1472字节,就是没有实现ip层在以太网帧的分包,整个网络协议含头文件不到500行

 

由于单片机比较新,一开始调试时还是遇到了很多问题:

1、使用jlink调试stm32H750,无法识别,使用的是6.40的dll,下载6.8的jlink驱动后,能够识别,但无法下载,一下载就报错,然后必须给芯片下电后才能再次识别。然后插上了电源适配器,就没问题了。说明是瞬间大电流导致下载失败了。

2、在AD的时钟选择,需要在RCC处选择时钟,时钟需分频

3、h750以太网调试时,接收缓存使用硬件的sram3原位操作,发生hard fault。

    //memcpy(yip_buf,p,n); //收发互斥,使用同一个缓存   (这是之前可以用的代码)

    u32 arp_desIP;

    //memcpy(&arp_desIP,&(arp.desIP),sizeof(arp_desIP)); //错误代码

    int i;

    for(i=0;i 48Mbit/s  

结论  

1. 由于以太网驱动和IP层协议没有写mac分包,所以一个udp包的最长大小在1472字节以内  

2. 大数据包发送效率高,处理效率高  

3. 对于小包应用场景,能保证CPU占用的帧频率需要限制在40Kf/s以下  

4. 必须开cache才能保证性能,但使用DTCM存储区并没有加速,可能是cache已经很快了  

5. 必须注意内存对齐,sram3上memcpy或者直接访问非对齐的u32会hard fault  

网站地图