ImageVerifierCode 换一换
格式:PDF , 页数:15 ,大小:988.95KB ,
资源ID:16119331      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16119331.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(零死角玩转stm高级篇7以太网ENCJ资料下载.pdf)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

零死角玩转stm高级篇7以太网ENCJ资料下载.pdf

1、http:/192.168.1.15/123456 则会出 现一个网页,通过网页中的命令可以控制开发板中的 LED 的 亮灭。硬件连接硬件连接 PE4 :ENC28J60-INT PA6-SPI1-MISO :ENC28J60-SO PA7-SPI1-MOSI :ENC28J60-SI PA5-SPI1-SCK :ENC28J60-SCK PA4-SPI1-NSS :ENC28J60-CS PE1 :ENC28J60-RST 用到的库文件用到的库文件 startup/start_stm32f10 x_hd.c CMSIS/core_cm3.c CMSIS/system_stm32f10 x.c

2、 FWlib/stm32f10 x_gpio.c FWlib/stm32f10 x_rcc.c FWlib/stm32f10 x_usart.c FWlib/stm32f10 x_spi.c 用户编写的文件用户编写的文件 USER/main.c USER/stm32f10 x_it.c -第 4 页-USER/led.c USER/usart.c USER/spi_enc28j60.c USER/enc28j60.c USER/ip_arp_udp_tcp.c USER/web_server.c 野火 STM32 开发板中 10M 以太网 ENC28J60 的硬件原理图 -第 5 页-7.2

3、ENC28J60 简介简介 ENC28J60 是带有行业标准串行外设接口(SerialPeripheral Interface,SPI)的独立以太网控制器。它可作为任何配备有 SPI 的控制器的以太网接口。ENC28J60 符合 IEEE 802.3 的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。它还提供了一个内部 DMA 模块,以实现快速数据吞吐和硬件支持的 IP 校验和计算。与主控制器的通信通过两个中断引脚和 SPI 实现,数据传输速率高达 10 Mb/s。两个专用的引脚用于连接 LED,进行网络活动状态指示。下图所示为 ENC28J60 的简化框图。图 1-2 所示为使用该器

4、件的典型应用电路。要将单片机连接到速率为 10 Mbps 的以太网,只需 ENC28J60、两个脉冲变压器和一些无源元件即可。本开发板中用的网络变压器的型号为 911105A。-第 6 页-ENC28J60 由七个主要功能模块组成:1.SPI 接口充当主控制器和 ENC28J60 之间通信通道。2.控制寄存器用于控制和监视 ENC28J60。3.双端口 RAM 缓冲器用于接收和发送数据包。4.判优器当 DMA、发送和接收模块发出请求时对 RAM 缓冲器的访问进 行控制。5.总线接口对通过 SPI 接收的数据和命令进行解析。6.MAC(Medium Access Control)模块实现符合 I

5、EEE 802.3 标准的 MAC 逻辑。7.PHY(物理层)模块对双绞线上的模拟数据进行编码和译码。该器件还包括其他支持模块,诸如振荡器、片内稳压器、电平变换器(提供可 以接受 5V 电压的 I/O 引脚)和系统控制逻辑。-第 7 页-7.3 实验讲解实验讲解 建议阅读程序的顺序为:spi_enc28j60.c-enc28j60.c-ip_arp_udp_tcp.c-web_server.c。spi_enc28j60.c:ENC28J60(以太网芯片)SPI 接口应用函数库。enc28j60.c :Microchip ENC28J60 Ethernet Interface Driver。ip

6、_arp_udp_tcp.c:IP,Arp,UDP and TCP functions(这部分野火仍在学习)。web_server.c :web 服务程序应用函数库。其中 enc28j60.c、ip_arp_udp_tcp.c web_server.c 是从 国外的一个开源项目里面移植过来的,源文件基本上没有做修改。spi_enc28j60.c 是由我们用户实现的底层函数接口,还有我们修改了 web_server.c 这个文件中网页命令控制部分的服务程序。在配置好需要用的库文件之后,下面我们从 main 函数开始讲解,有关库函数是如何添加的情参考前面的教程,这里不再赘述。1./*2.*函数名:

7、main 3.*描述 :主函数 4.*输入 :无 5.*输出 :无 6.*/7.int main(void)8.9./*配置系统时钟为 72M*/10.SystemInit();11.12./*配置 LED*/13.LED_GPIO_Config();14.15./*ENC28J60 SPI 接口初始化*/16.SPI_Enc28j60_Init();17.18./*ENC28J60 WEB 服务程序*/19.Web_Server();20.21./return 0;22.在进入 main 函数代码段后,我们首先调用系统库函数 SystemInit();将我们的系统时钟配置为 72MHZ,如果

8、用的是 3.5.0 版本的库则不需要,因为已在启动文件里面调用了。-第 8 页-LED_GPIO_Config();用于初始化 LED,因为我们我们在我们的 web 服务器中要控制的就是 LED,所以在这里要先把 LED 配置好,好让它接下来能工作。SPI_Enc28j60_Init();用于配置以太网芯片 ENC28J60 所用到的数据通信口SPI2 和其他控制 I/O。这是我们用户在 spi_enc28j60.c 中实现的底层程序。SPI1_Init 3.*描述 :ENC28J60 SPI 接口初始化 4.*输入 :无 6.*返回 :无 7.*/8.void SPI_Enc28j60_In

9、it(void)9.10.GPIO_InitTypeDef GPIO_InitStructure;11.SPI_InitTypeDef SPI_InitStructure;12.13./*使能 SPI1 时钟*/14.RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1,ENABLE);15.16./*17.*PA5-SPI1-SCK:ENC28J60_SCK 18.*PA6-SPI1-MISO:ENC28J60_SO 19.*PA7-SPI1-MOSI:ENC28J60_SI 20.*/21.GPIO_InitStru

10、cture.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;22.GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;23.GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;/复用输出 24.GPIO_Init(GPIOA,&GPIO_InitStructure);25.26./*PA4-SPI1-NSS:ENC28J60_CS*/片选 27.28.GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;29.GPIO_InitStructure.GPIO

11、_Speed=GPIO_Speed_10MHz;30.GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;/推免输出 31.GPIO_Init(GPIOA,&32.GPIO_SetBits(GPIOA,GPIO_Pin_4);33.34./*PB13:ENC28J60_INT*/中断引脚没用到 35./*PE1:ENC28J60_RST*/复位似乎不用也可以 36.37.38./*SPI1 配置*/39.SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;40.SPI_InitS

12、tructure.SPI_Mode=SPI_Mode_Master;41.SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;42.SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;43.SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;44.SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;45.SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_8;46.SPI_InitStructur

13、e.SPI_FirstBit=SPI_FirstBit_MSB;47.SPI_InitStructure.SPI_CRCPolynomial=7;48.SPI_Init(SPI1,&SPI_InitStructure);49.50./*使能 SPI1 */-第 9 页-51.SPI_Cmd(SPI1,ENABLE);52.在这个函数中不知大家有没注意到没有这两条注释:1./*PB13:ENC28J60_INT*/中断引脚没用到 2.3./*PE1:ENC28J60_RST*/复位似乎不用也可以 enc28j60 的中断引脚没用到很正常,但是复位引脚也没用到,这我就很纳闷了。我想原因可能是 en

14、c28j60 有个上电自动复位的功能,这里它的复位引脚只能暂时没有用到而已,也或许是我们的开发板中引脚 PE1(接 enc28j60 的复位脚)收到什么信号的干扰,产生了类似复位的信号。这里我们先把这问题搁一边先,毕竟程序还是工作了。至于具体的原因我以后有时间再深究下。Web_Server();函数实现的功能是创建一个网页服务器,在这个网页服务器上我可以点击我们设定好的命令按钮来控制我们开发板上 LED 的亮灭。其实,从这里面我们就可以看到有点智能家居的味道了,所谓智能家居就是通过网络来控制我们家电的状态,如开和断。举个例子:我们可以在遥远的地方可以通过网络来控制家里的电视、电冰箱等,是不是很神奇哩?只要你学会了这个实验,再经过自己的再深入学习,这些都是小菜一碟。_,本实验旨在引导大家入门。在 web_server.c 中实现。在 web_server.c 的开头包含了头文件:1.#include enc28j60.h 2.#include ip_arp_udp_tcp.h 3.#include net.h enc28j60.h :Microchip ENC28J60 Ethernet Interface Driver Header file ip_arp_udp_tcp.h:IP,Arp,UDP and

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1