本帖最后由 forgot 于 2023-7-27 11:38 编辑
首先很高兴通过这次申请,江苏的代理商还大老远来我们公司做了一次当面沟通,便于后续做进一步的技术支持和采购合作。其实我拿到板子已经挺长时间了,因为对APM32片子已经比较熟悉了,这次主要是测试一下F407以太网TCP功能模块的应用。
硬件环境搭建:
先是下载了APM32F407-Tiny\APM32F4xx_SDK_v1.3,在Examples\ETH下面是有ETH_Ping和ETH_TCP_client两份Demo,例程可以实现PA9,PA10串口进行网络参数打印,所以将串口也接到PC上。
但是APM32F4xx_SDK_v1.3中并没有看到ETH_TCP_server例程,所以就到APM32F4xx_EVAL_SDK_V1.0\Examples\ETH\ETH_TCP_server中复制了相关内容过来,稍微改了一下。
PING测试:
TCP客户端实验: 电脑IP地址为:192.168.2.101; 板子IP配置为:192.168.2.88; 以PC机作为服务端,监听6000端口。 通过运行效果如下: if ((APM_TINY_PBGetState(BUTTON_KEY1)==0)&&(flag==0)) {
APM_TINY_LEDOn(LED2);
if (EthLinkStatus == 0) {
/** connect to tcp server */
printf("\n\rConnect TCP server \r\n");
IP4_ADDR( &DestIPaddr, COMP_IP_ADDR0, COMP_IP_ADDR1, COMP_IP_ADDR2, COMP_IP_ADDR3 );
tcpc_echo_init(&DestIPaddr,COMP_PORT);
flag=1;
}
}
if ((APM_TINY_PBGetState(BUTTON_KEY2)==0)&&(flag==1)) {
APM_TINY_LEDOff(LED2);
printf("\n\rDisconnect TCP server \r\n");
tcpc_echo_disable();
flag=0;
}
复位后,串口打印网卡参数信息; 通过按钮KEY1,实现TCP连接。 用服务发送bbs.21ic.com,串口也会打印:received message:bbs.21ic.com 通过按钮KEY2,实现TCP断开。
TCP服务端实验: 电脑IP地址为:192.168.2.101; 板子IP配置为:192.168.2.88; 以板子机作为服务端,监听5000端口。 通过运行效果如下: if ((APM_TINY_PBGetState(BUTTON_KEY1)==0)&&(flag==0)) {
APM_TINY_LEDOn(LED2);
if (EthLinkStatus == 0) {
/** create tcp server */
printf("\n\rcreate TCP server IP: %d.%d.%d.%d:%d\n",
IP_ADDR0,IP_ADDR1,IP_ADDR2,IP_ADDR3,LOCAL_SERVER_PORT);
tcps_echo_init(LOCAL_SERVER_PORT);
flag=1;
}
}
if ((APM_TINY_PBGetState(BUTTON_KEY2)==0)&&(flag==1)) {
APM_TINY_LEDOff(LED2);
printf("\n\rclose TCP server\n");
tcps_echo_disable();
flag=0;
}
复位后,串口打印网卡参数信息; 通过按钮KEY1,实现TCP服务创建。 用服务发送geehy.com,串口也会打印:received message:geehy.com 通过按钮KEY2,关闭TCP服务。
因为用的是lwip协议栈,所以UDP的相关操作也比较简单,用lwip相关函数就好了。 提点意见就是demo中相关网络的应用例程太少了,并没有一些厂家那样做类似WebServer、MQTT、DNS之类的应用,连UDP都没看到。如果可以进行补充,这样对于新手会友好一点。
最后也祝极海MCU越做越好!
|