datasheet

STM32学习笔记之以太网的通信+lwip协议移植

2018-10-23来源: eefocus 关键字:STM32  以太网的通信  lwip协议移植

STM32F107自带 MAC控制器


而有的芯片把Mac和PHY坐到一起了,像ENC28J60


以太网通信  依据 TCP/IP协议是  LWIP协议,这个LWIP 协议是可以运行在STM32上面的。


STM32F107为以太网外设专门做的库直接下载对应的demo 可能协议版本不一样,下载运行即可。


 


主要有几个部分说明一下


 


1、修改 ethernetif.c 


     包含了与以太网网卡密切相关的初始化、发送、接收等函数的实现。这个文件夹中的函数并不能使用,它们都是一个框架性的结构,移植者需要根据自己使用的网卡特性来完成这些函数。


2、mem管理


     使用系统堆内存管理或者使用自定义内存管理(类似战舰开发板内存管理)


    //u8_t ram_heap[MEM_SIZE_ALIGNED + (2*SIZEOF_STRUCT_MEM) + MEM_ALIGNMENT];


    //#define LWIP_RAM_HEAP_POINTER ram_heap


 


3、 平台相关


    lwipopts.h                // lwip配置文件,详见附件


       1、DHCP是否被使能,参数设置是LWIP_DHCP


  2、TCP和UDP的连接数量,分别参数是MEMP_NUM_TCP_PCB 和MEMP_NUM_UDP_PCB


  3、堆栈的数量设置参数是MEM_SIZE


       4、缓冲区的数量和大小,参数是 PBUF_POOL_SIZE和PBUF_POOL_BUFSIZE


    cc.h


    #define BYTE_ORDER LITTLE_ENDIAN       //  cpu大小端


    


4、是否移植操作系统(使能对应的宏)


    主要对应 Sys_arch.c 移植的主要工作在这里,关于信号量、消息队列、任务创建    


    如果使能操作系统、LwIP的初始化必须在RTOS启动之后才可以进行, 因为它的初始化代码使用了一些OS提供的功能!!!     


 5、接口选择(在对应的文件下)


    //#define MII_MODE         


    #define RMII_MODE      


 


关键字:STM32  以太网的通信  lwip协议移植

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/2018/ic-news102341968.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32学习笔记:FSMC详述
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32学习笔记:FSMC详述

FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列采用一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。使用FSMC控制器后,可以把FSMC提供的FSMC_A[25:0]作为地址线,而把FSMC提供的FSMC_D[15:0]作为数据总线。(1)当存储数据设为8位时,(FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b)    地址各位对应FSMC_A[25:0],数据位对应
发表于 2018-10-21
STM32学习笔记:FSMC详述

STM32学习之:读取芯片的唯一标识ID

产品唯一的身份标识的作用:    ●  用来作为序列号(例如USB字符序列号或者其他的终端应用);    ●  用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性;    ●  用来激活带安全机制的自举过程;     96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。按照用户不同的用法,可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。嘿嘿,要注意大端小端
发表于 2018-10-21

STM32学习之:定时器简介

本文为STM32定时器设计大体简介。 一、定时器简介1、时钟来源2、定时器结构(以基本定时器为例)二、基本定时器的编程方法1、基本定时器的寄存器2、例程/*** @brief 定时器6的初始化,定时周期0.01s* @param 无* @retval 无*/void TIM6_Init(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;/*AHB = 72MHz,RCC_CFGR的PPRE1 = 2,所以APB1 = 36MHz,TIM2CLK = APB1*2 = 72MHz */RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6
发表于 2018-10-21

STM32学习之:Context—M3简介

Cortex-M3概览(1)简介     Cortex-M3是一个 32位处理器内核。内部的数据路径是 32位的,寄存器是 32位的,存储器接口也是 32 位的。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性, CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。     比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下
发表于 2018-10-21

STM32学习之:NVIC的初步理解

1  对NVIC的理解      CM3支持硬件中断嵌套,分为抢占式优先级和亚优先级,使用规则主要有,抢占优先级高级别的可以打断低级别的,同一级别的抢占优先级同时发生时,亚当优先级高的先发生中断,若是相同,则按硬件排列顺序发生。若是有一个亚优先级正在执行中断,同一级别的其它亚优先级发生时,则先挂起,等此中断执行完再执行!     从库函数中找到优先级分组模式:#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /* 0 bits for pre-emption
发表于 2018-10-21

STM32学习之:USART中断方式

 前面我们接收了串口通信的查询方式,现在我们来介绍中断方式。   步骤一:初始化GPIOGPIO_InitTypeDef GPIO_InitStructure; /* Configure USART1 Tx (PA.09) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitSt
发表于 2018-10-21

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved