STM32-以太网学习之路
2015-08-14 15:17
169 查看
{{{本文章是实时更新的,就是笔者开发STM32F107 ETH 的笔记!!前面写好的内容可能会添加或者修改! 注: {{{ }}} 这包含的 是 开发过程中 又添加的,就是当时看资料的时候没想到这些!!!}}}
开始:首选看了一些“资料”以后,知道了STM32进行以太网通信,需要 MAC控制器 和 PHY 和 以太网变压器 .
STM32F107自带 MAC控制器! {{{有的芯片把Mac和PHY坐到一起了,像ENC28J60.}}}
紧接着 以太网通信 依据 TCP\IP协议,但是这个协议太大了,STM32上运行不了,而有一个简化版的TCP/IP协议是 LWIP协议,这个LWIP 协议是可以运行在STM32上面的。
下面就是LWIP协议移植到STM32F107上 。。。。 2015年8月14日17:28:29
首先下载LWIP协议栈({{{后面发现没啥用,因为ST 给移植好了}}})和STM32F107为以太网外设专门做的库({{{后面发现不是库,是移植LWIP好的工程}}})。
LWIP协议栈下载地址: (下载两个文件 名称分别为 contrib-1.4.1.zip 和 lwip-1.4.1.zip)注: (2015年8月15日13:13:08这个时间 是这个版本)
http://ftp.twaren.net/Unix/NonGNU//lwip/
STM32F107为以太网外设专门做的库下载地址:(在页面的最下面: 文件名称为:stsw-stm32026.zip) 注: (2015年8月15日13:14:12这个时间 是这个版本)
http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1734/PF257862#
笔者再下载之前,以为这个文件(stsw-stm32026.zip)只是一个库函数(一个eth.C文件,一个eth.H文件) ,让我们调用.实际不是这样的,是一个移植好LWIP协议的一个好的(可以编译通过)keil工程。
笔者正在阅读这个工程,在阅读这个工程之前下载了这个工程的说明文档(和下载工程在同一个界面(AN3102[b]Application note[/b])),但是是英文的,笔者C和英文不是学的很好,正在阅读中…… 2015年8月16日22:10:28
ethernetif.c 和stm32_eth.c:在这个工程文档中有这样的一段话,协议栈(LWIP)和以太网控制器(MAC)的连接文件是ethernetif.c 和stm32_eth.c。 英文原句:For the STM32F107xx, the ethernetif.c (under Utilities\lwip-1.3.1\src\netif) and stm32_eth.c(under Libraries\STM32_ETH_Driver) files constitute the low-level layer, which is theinterface between the stack and the Ethernet controller. 这两个文件怎么连接的,现在还不清楚!
netconf.c:为了使LWIP协议栈的周期任务能正常工作,还利用一个定时器为协议栈工作,有一个函数负责调度LWIP协议的任务。这个函数是LwIP_Periodic_Handle,定义在netconf.c中,注意这个文件不是协议栈LWIP的文件。主要功能包括:LWIP初始化,MAC地址和IP地址设置等等。
opt.h:协议栈的初始化参数在opt.h中可以找到,依靠opt.h修改后的新文件lwipopts.h,这个文件包含了LWIP协议栈为STM32F107做的一些修改!修改内容如下:
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
5、更详细的请参考文件lwipopts.h 。
PHY 接口配置:MII 和RMII 为STM32F107连接PHY的 两种接口模式,[b]在stm32f107.c文件中有两个宏定义,想用哪个接口,就把另外一个接口宏定义屏蔽掉。
此次编辑时间:2015年8月19日15:10:08
[/b]
看了上面的源代码简单说明,笔者准备找个开发板试验一下(开发板硬件说明: 芯片STM32F107,DM9161,HR911105A分别对应 MAC,PHY,以太网变压器)。
2015年8月23日08:00:34 ,之所以这次更新和上次相差了很多的时间,是因为笔者想把这个工程下载到开发板运行起来,我想是不是得修改STM32F107(MAC)和DM9161(PHY)之间的连线,看了一段时间后发现开发板上的线和代码上的线是一样的,只不过PHY有个地址是1(某个引脚控制的拉高是1,拉低是0)),开发板上是1,程序里面是0,就修改这个,编译,下载到开发板,代码跑起来了,现在程序跑起来了,很是激动,虽然没我多大的贡献。MAC,PHY,以太网变压器怎么连接的稍后会加进来.
2015年8月26日11:11:33,代码跑起来了,准备进行 UDP 数据传输。
开始:首选看了一些“资料”以后,知道了STM32进行以太网通信,需要 MAC控制器 和 PHY 和 以太网变压器 .
STM32F107自带 MAC控制器! {{{有的芯片把Mac和PHY坐到一起了,像ENC28J60.}}}
紧接着 以太网通信 依据 TCP\IP协议,但是这个协议太大了,STM32上运行不了,而有一个简化版的TCP/IP协议是 LWIP协议,这个LWIP 协议是可以运行在STM32上面的。
下面就是LWIP协议移植到STM32F107上 。。。。 2015年8月14日17:28:29
首先下载LWIP协议栈({{{后面发现没啥用,因为ST 给移植好了}}})和STM32F107为以太网外设专门做的库({{{后面发现不是库,是移植LWIP好的工程}}})。
LWIP协议栈下载地址: (下载两个文件 名称分别为 contrib-1.4.1.zip 和 lwip-1.4.1.zip)注: (2015年8月15日13:13:08这个时间 是这个版本)
http://ftp.twaren.net/Unix/NonGNU//lwip/
STM32F107为以太网外设专门做的库下载地址:(在页面的最下面: 文件名称为:stsw-stm32026.zip) 注: (2015年8月15日13:14:12这个时间 是这个版本)
http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1734/PF257862#
笔者再下载之前,以为这个文件(stsw-stm32026.zip)只是一个库函数(一个eth.C文件,一个eth.H文件) ,让我们调用.实际不是这样的,是一个移植好LWIP协议的一个好的(可以编译通过)keil工程。
笔者正在阅读这个工程,在阅读这个工程之前下载了这个工程的说明文档(和下载工程在同一个界面(AN3102[b]Application note[/b])),但是是英文的,笔者C和英文不是学的很好,正在阅读中…… 2015年8月16日22:10:28
ethernetif.c 和stm32_eth.c:在这个工程文档中有这样的一段话,协议栈(LWIP)和以太网控制器(MAC)的连接文件是ethernetif.c 和stm32_eth.c。 英文原句:For the STM32F107xx, the ethernetif.c (under Utilities\lwip-1.3.1\src\netif) and stm32_eth.c(under Libraries\STM32_ETH_Driver) files constitute the low-level layer, which is theinterface between the stack and the Ethernet controller. 这两个文件怎么连接的,现在还不清楚!
netconf.c:为了使LWIP协议栈的周期任务能正常工作,还利用一个定时器为协议栈工作,有一个函数负责调度LWIP协议的任务。这个函数是LwIP_Periodic_Handle,定义在netconf.c中,注意这个文件不是协议栈LWIP的文件。主要功能包括:LWIP初始化,MAC地址和IP地址设置等等。
opt.h:协议栈的初始化参数在opt.h中可以找到,依靠opt.h修改后的新文件lwipopts.h,这个文件包含了LWIP协议栈为STM32F107做的一些修改!修改内容如下:
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
5、更详细的请参考文件lwipopts.h 。
PHY 接口配置:MII 和RMII 为STM32F107连接PHY的 两种接口模式,[b]在stm32f107.c文件中有两个宏定义,想用哪个接口,就把另外一个接口宏定义屏蔽掉。
此次编辑时间:2015年8月19日15:10:08
[/b]
看了上面的源代码简单说明,笔者准备找个开发板试验一下(开发板硬件说明: 芯片STM32F107,DM9161,HR911105A分别对应 MAC,PHY,以太网变压器)。
2015年8月23日08:00:34 ,之所以这次更新和上次相差了很多的时间,是因为笔者想把这个工程下载到开发板运行起来,我想是不是得修改STM32F107(MAC)和DM9161(PHY)之间的连线,看了一段时间后发现开发板上的线和代码上的线是一样的,只不过PHY有个地址是1(某个引脚控制的拉高是1,拉低是0)),开发板上是1,程序里面是0,就修改这个,编译,下载到开发板,代码跑起来了,现在程序跑起来了,很是激动,虽然没我多大的贡献。MAC,PHY,以太网变压器怎么连接的稍后会加进来.
2015年8月26日11:11:33,代码跑起来了,准备进行 UDP 数据传输。
相关文章推荐
- gdb调试之coredump
- 定义全局变量
- 数据结构实验之求二叉树后序遍历和层次遍历
- caffe LRN层作用 和源码分析
- 字符串操作——面试题总结
- UI设计,使用 线框图(页面示意图或页面布局图)
- 微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发
- UI设计 - 手机列表风格总结
- UI设计 - 首页(主页)的任务
- android开发(32) android 中 actionbar 常用方法。设置标题,隐藏图标等
- android开发(33) 让 actionbar 透明2
- android开发(34) 自定义 listView的分割线( 使用xml drawable画多条线)
- Servlet
- 验证中文、英文、电话、手机、邮箱、数字、数字和字母、Url地址和Ip地址的正则表达式
- 分享一些不错的学习IOS资源网站
- 正则表达式 是 iOS 字符串仅仅支持中文
- npm ERR publish 403,nodejs发布包流程
- linux
- 缓存机制
- JPA查询的使用体会