77范文网 - 专业文章范例文档资料分享平台

2-07毕业设计(论文)初稿--左欣 (2)(4)

来源:网络收集 时间:2019-03-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

湖南工业大学本科毕业设计(论文)

图3.8 JTAG部分电路原理图

这里采用的是标准的 JTAG 接法,但是STM32还有SWD 接口,SWD只需要最少2跟线(SWCLK 和SWDIO)就可以下载并调试代码了,而且速度更快,能调试。STM32 的SWD 接口与JTAG 是共用的,只要接上JTAG,你就可以使用SWD 模式了,JLINKV8/JLINKV7 和ULINK2 都支持SWD。

3.4 接口设计

想要实现嵌入式系统与以太网之间的互联互通,那么接口设计就显得尤为重要了,STM32开发板与W5500网络控制芯片的连接如图3.9。

配置W5500 的INT引脚必须通过一个10 kΩ 的电阻接高电平, 以选择W5500 的SPI 接口模式, 置STM32F103 为SPI 主模式,W5500 为SPI 从模式, 在SPI总线模式下的配置复用输入输出接口(AFIO) 的PA5 、PA6、PA4 、PA7 分别为SCLK、MISO、/SCS (SPI 从模式选择, 低电平有效)、MOSI 信号线直接相连, 并用软件设置管脚的输出最大速度为10 MHz ,STM32F105V 通过SPI对W5500 读写操作。

配置PB5 口作为W5500 的复位信号/RST_W, 低电平有效。为实现准确的硬件复位, 复位引脚RST_W 上复位信号至少保持2 μs 。

配置PB1 口为外部中断线1(EXTI1) , 并作为W5500的中断信号输出端/INT, 低电平有效。当W5500 在端口产生连接、断开、接收数据、数据发送完成以及通信超时等条件下, 该引脚输出低电平信号指示微处理器。

配置PA8 口为W5500 输出的以太网物理层信号灯(LINKLED) 指示W5500 的网络连接状态, 通过上拉电阻输入到微处理器, 低电平有效。

14

湖南工业大学本科毕业设计(论文)

图3.9 STM32开发板与W5500网络控制芯片接口

15

湖南工业大学本科毕业设计(论文)

第4章 软件设计

4.1 总体设计

W5500固化了TCP/IP协议,所以我们只需要设计Socket接口。这样简化了设计流程,同时也降低微控制器的处理能力以及系统资源的使用。总体流程图见图4.1。

图4.1 总体流程

配置中断W5500初始化配置模式寄存器配置本机MAC地址网关地址掩码地址IP地址配置发送超时重复发送计数配置存储器大小寄存器结束当Socket作为服务器模式时,初始化端口需要设置运行模式(Sn_MR) 和本机端口号(Sn_Port) ,并在端口命令寄存器打开(OPEN) 端口。引用Socket_Listen (SOCKET s)程序,只调用一次该程序就可使W5500 设置为服务器模式。主要程序如下所示。 void W5500_Socket_Set(void) if(S0_State==0)//端口0初始化配置

if(S0_Mode==TCP_SERVER)//TCP服务器模式 if(Socket_Listen(0)==TRUE) S0_State=S_INIT; else S0_State=0

else if(S0_Mode==TCP_CLIENT)//TCP客户端模式 if(Socket_Connect(0)==TRUE) S0_State=S_INIT; else

16

湖南工业大学本科毕业设计(论文)

S0_State=0;

Else //UDP模式 if(Socket_UDP(0)==TRUE) S0_State=S_INIT|S_CONN; else S0_State=0;

完成Socket 的打开和设置侦听工作后, 至于远程客户端是否与其连接, 则需要等待Socket 中断, 在服务器侦听模式下, 不需要设置目的IP 和目的端口号。

当端口接收数据时, 产生接收中断。首先调用端口接收数据包函数Process_Socket_Data () , 并对接收到的数据类型进行判断和加工。本过程先调用接收函数S_rx_process () 从W5500 端口的接收数据缓存区读取数据, 然后将读取的数据加上接收存储器读指针寄存器(S0_RX_RD) 的值再写入S0_RX_RD, 最后将RECV 命令重新写入端口0 的命令寄存器(S0_CR) , 以等待下次数据的接收。或者将处理完的数据拷贝到发送缓冲区, 再调用S_tx_process 函数发送数据包给CPU。主要程序如下:

void Process_Socket_Data(SOCKET s) { }

//本过程先调用S_rx_process()从W5500的端口接收数据缓冲区读取数据,然后将读取的数据从Rx_Buffer拷贝到Temp_Buffer缓冲区进行处理。处理完毕,将数据从Temp_Buffer拷贝到Tx_Buffer缓冲区。调用S_tx_process()发送数据。

System_Initialization(); //STM32系统初始化函数(初始化STM32时钟及外设) Load_Net_Parameters(); W5500_Initialization(); while (1)

W5500_Socket_Set();//W5500端口初始化配置 if(W5500_Interrupt)//处理W5500中断

W5500_Interrupt_Process();//W5500中断处理程序框架

if((S0_Data & S_RECEIVE) == S_RECEIVE//如果Socket0接收到数据 S0_Data&=~S_RECEIVE;

17

unsigned short size;

size=Read_SOCK_Data_Buffer(s, Rx_Buffer); memcpy(Tx_Buffer, Rx_Buffer, size);

Write_SOCK_Data_Buffer(s, Tx_Buffer, size);

//装载网络参数

W5500_Hardware_Reset(); //硬件复位W5500

//W5500初始货配置

湖南工业大学本科毕业设计(论文)

0xaa Process_Socket_Data(0);//W5500接收并发送接收到的数据 else if(W5500_Send_Delay_Counter >= 500)//定时发送字符串 if(S0_State == (S_INIT|S_CONN)) S0_Data&=~S_TRANSMITOK;

memcpy(Tx_Buffer, \

Write_SOCK_Data_Buffer(0, Tx_Buffer, 23);//指定Socket(0~7)发送数据处理,端W5500_Send_Delay_Counter=0;

0x55 长度 目标代码 命令 数据 口0发送23字节数据

其中通信数据包格式为: 其中Oxaa 和Ox55 为接收数据包的标志头;长度位为数据包字节长度,不包括数据包头和本身字符,命令位为对对象数据的操作,为0 时读取数据,为1 时设置对象数据,目标代码位用来显示对象代码,如Ox00 为网关IP 、Ox01 为子网掩码、0x02 为物理地址、LED 为状态显示等;数据位为接收到的数据,数据是以16 进制形式接收,最后再加上2 B 的数据报头和1 B 的数据本身。

18

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2-07毕业设计(论文)初稿--左欣 (2)(4)在线全文阅读。

2-07毕业设计(论文)初稿--左欣 (2)(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/508590.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: