STM32H743 RL-TCP(一)基于RTX环境移植硬汉大哥例程(使用阿波罗开发板)
由于最近开始学习TCP/IP协议栈,从网上查询资料发现嵌入式端的主流协议栈包括lwip、RL-TCP等。在安富莱电子论坛上能找到lwip和RL-TCP的教程,综合来看,lwip用的人更多,但arm近来主推RL-TCP,在MDK5中使用较为方便,仅需要简单配置。
最终本人选择了RL-TCP。硬汉大哥对RL-TCP有相关的教程,十分详细,但目前来说其教程都是基于安富莱v7开发板。由于手头只有阿波罗板,故需要对此进行适配,折腾了两天,遇到无数的坑,最终简单运行硬汉的demo,故以此文记录如何移植。
1、准备工作
1、硬件:正点原子阿波罗开发板,核心板型号为STM32H743IIT6、烧录器等
2、软件:MDK5.31(目前本人的环境,没尝试过其他版本)、来自硬汉大哥的工程移植模板
其余环境配置如下
软件包汇总下载地址
http://www.armbbs.cn/forum.php?mod=viewthread&tid=95609
2、移植
打开工程目录文件,由于之前的步骤按照硬汉大哥的教程即可实现,此处省略,着眼于阿波罗开发板的适配。
2.1 修改网卡驱动
阿波罗板载PHY芯片型号为LAN8720A,但安富莱v7开发板为DM9161。并且根据阿波罗原理图可知,LAN8270A的复位引脚接在了IO扩展芯片PCF8574上,初始化时需要对PCF8574 的 D7 口写0复位。此处很容易犯错!!!!
同时,二者的引脚接法也有所不同。
首先,删除原有网卡DM9161驱动,将PHY_LAN8720.c 和 PHY_LAN8720.h添加进工程。这两个文件在这里。
随后添加复位部分文件,这里需要iic驱动PCF8574,故具有四个文件。pcf8574.c
/ pcf8574.h
/ myiic.c
/ myiic.h
myiic.c
(修改自原子的myiic.c)
#include "myiic.h"
//
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK STM32F429开发板
//IIC驱动代码
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2016/1/13
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2014-2024
//All rights reserved
//
void delay_us(uint32_t nus)
{
for(int i; i<480*nus; i++)
{
}
// 采用此方式是为避免出现systick卡死情况
}
//IIC初始化
void IIC_Init(void)
{
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_GPIOH_CLK_ENABLE(); //使能GPIOH时钟
//PH4,5初始化设置
GPIO_Initure.Pin=GPIO_PIN_4|GPIO_PIN_5;
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FAST; //快速
HAL_GPIO_Init(GPIOH,&GPIO_Initure);
IIC_SDA(1);
IIC_SCL(1);
}