STM32F407通过SPI连接W5100S进行TCP网络通信
STM32F407通过SPI连接W5100S进行网络通信
一、W5100S硬件
1.HS-NM5100SA模块
模块厂家:成都浩然电子http://www.hschip.com
HS-NM5100SA以太网络控制器接口模块是将W5100S与必要的外围元器件集成在一块电路板上,为客户提供便利应用的产品。
1. 它保持了W5100S的全部功能和性能;
2. 将W5100S与MCU接口(SPI接口和并行总线接口)通过排针引出;
3. RJ-45座内部集成网络变压器,网线可直接与模块连接;
4. RJ-45上的指示灯可以指示W5100S的以太网连接状态;
5. 直流3.3V供电;
6. 严格的老化测试保证产品优质的品质。
2.设置通信模式
模块集成了总线模式和SPI模式,通过W5100S的MOD[3~0]进行选择
模块背面有电阻用来设置总线模式或SPI模式,设置方式如下图:
模块原理图
二.与单片机连接
使用单片机SPI1接口与W5100S模块连接
包括:
- 4根SPI线
- 1根W5100S硬件复位线
- 3.3V供电
单片机SPI配置复用模式,片选信号配置成输出模式
//SPI1初始化 配置成主机模式
//SPI1 RCC_APB2=84M
void W5100S_SPI_Init(void)
{SPI_InitTypeDef SPI_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA时钟 RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE);/* Configure SPIy pins: SCK, MISO and MOSI */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //PA5/6/7GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_SPI1); //PA5复用为 SPI1GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_SPI1); //PA6复用为 SPI1GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_SPI1); //PA7复用为 SPI1/*Init CS*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA, GPIO_Pin_4);/* SPI Config -------------------------------------------------------------*/SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //时钟空闲状态为低电平SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;//时钟的第1个跳变沿SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;//波特率预分频SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;SPI_InitStructure.SPI_CRCPolynomial = 7;SPI_Init(SPI1, &SPI_InitStructure);SPI_Cmd(SPI1, ENABLE);//使能SPI外设
}
W5100S复位引脚配置成输出模式
//W5100S复位引脚 PA12
#define W5100S_RSTn GPIO_Pin_12
#define W5100S_RSTn_PORT GPIOA
#define W5100S_RSTn_CLK RCC_AHB1Periph_GPIOA
//初始化W5100S复位引脚 W5100S_RSTn
void Reset_GPIO_Config(void) //初始化W5100S复位引脚
{GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(W5100S_RSTn_CLK, ENABLE);//挂载外设时钟 GPIO_InitStructure.GPIO_Pin = W5100S_RSTn; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置最高输出速率GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_Init(W5100S_RSTn_PORT, &GPIO_InitStructure);//GPIO_SetBits(W5100S_RSTn_PORT, W5100S_RSTn); //高电平}
三、程序源码
STM32F407源码已上传到我的资源https://download.csdn.net/download/sgjiajia/13130744点击进入
STM32F407通过W5100S进行网络通信.rar
例程包括:SPI模式和FSMC总线模式
包含TCP_Server服务器模式和TCP_Client客户端模式
仅需通过修改自定义参数选择SPI模式或FSMC总线模式
STM32F407通过SPI连接W5100S进行TCP网络通信相关推荐
- STM32F407通过FSMC连接W5100S进行TCP网络通信
STM32F407通过FSMC连接W5100S进行TCP网络通信 一.W5100S硬件 1.HS-NM5100SA模块 模块厂家:成都浩然电子http://www.hschip.com HS-NM51 ...
- tcp网络通信教程 java_基于java TCP网络通信的实例详解
JAVA中设计网络编程模式的主要有TCP和UDP两种,TCP是属于即时通信,UDP是通过数据包来进行通信,UDP当中就会牵扯到数据的解析和传送.在安全性能方面,TCP要略胜一筹,通信过程中不容易出现数 ...
- Nginx加密与上游服务器的TCP网络通信
Nginx加密与上游服务器的TCP网络通信 本文介绍了如何保护NGINX和TCP上游服务器或TCP服务器上游组之间的TCP通信. 先决条件 NGINX Plus R6和更高版本或使用--with-st ...
- 一文搞懂如何使用Node.js进行TCP网络通信
摘要: 网络是通信互联的基础,Node.js提供了net.http.dgram等模块,分别用来实现TCP.HTTP.UDP的通信,本文主要对使用Node.js的TCP通信部份进行实践记录. 本文分享自 ...
- Java网络编程 ---- TCP 网络通信编程
视频:[零基础 快速学Java]韩顺平 零基础30天学会Java 文章目录 1. Socket 2. TCP 网络通信编程 3. 应用案例 1(使用字节流) 4. 应用案例 2(使用字节流) 5. 应 ...
- QT实现TCP网络通信
QT实现TCP网络通信 前言 一.目标 二.思路总览 服务器端主要代码 客户端主要代码 三.代码 客户端代码 mainwindow.h mainwindow.cpp mainwindow.ui 服务器 ...
- 基于TCP网络通信的自动升级程序源码分析-客户端接收文件
升级程序客户端接收文件 /// <summary>/// 文件数据缓存 索引是 ConnectionInfo对象 数据包的顺序号 值是数据/// </summary>Dicti ...
- Qt 的TCP网络通信
Qt网络通信: Socket 通信: Qt 中提供的所有的 Socket 类都是非阻塞的. Qt 中常用的用于Socket 通信的套接字类 QTCPServer:用于TCP/IP 通信,作为服务器端套 ...
- 通过连接实例解读TCP/IP协议
通过连接实例解读TCP/IP协议 最近狂补基础,猛看TCP/IP协议.不过,书上的东西太抽象了,没有什么数据实例,看了不 久就忘了.于是,搬来一个sniffer,抓了数据包来看,呵呵,结合书里面得讲解 ...
最新文章
- nginx的读写分离
- C# 实现Winform全屏后不遮挡任务栏,显示任务栏
- Keil中的Code,RO,RW,ZI分别表示什么?
- 子类怎么继承父类方法中的变量_关于继承的那些事!
- c/c++将字符串中的空格替换成%20
- qq家园纵横四海的源码
- 1513_人月神话阅读笔记_再论没有银弹
- 分布式系统架构实例剖析
- DSN,W-DSN文献资料整理
- Java开源中文分词器的使用方法和分词效果对比
- 现在还有人说Python 爬虫没用吗?股票数据定向爬虫让你轻松了解股势
- 抖音小程序调起支付宝支付php微擎代码和HTML代码
- CeTx解决pdf书签乱码问题
- 幼儿课外活动游戏_适合幼儿园的课外活动有哪些游戏
- 如何在黑客马拉松中生存
- 大型分布式系统监控平台(六)-- 第一个flink应用topN
- 基于python下django框架 实现多用户商城平台详细设计
- 调用CMD执行程序的各种方法
- 计算机毕业设计 SSM+Vue停车位管理系统 临时停车位管理系统 车位停车管理系统 停车位租用管理系统Java Vue MySQL数据库 远程调试 代码讲解
- cannot be cast to android.view.inputmethod.InputConnection
热门文章
- if语句(条件表达式)
- logstash丢弃没有精准匹配到文件名的日志数据
- 金字塔原理的核心思想
- 微信小程序微信公众号支付宝小程序H5(获取信息用户信息,支付,分享,人脸识别)
- Robotics Education and Research at Scale - A Remotely Accessible Robotics Development Platform
- 双目摄像头立体成像(三)双目摄像头的标定及测距(Ubuntu16.04 + OpenCV)
- linux常用命令详解 1
- 插入排序详解(Java)
- 轧机是用计算机操作的吗,轧机生产操作流程及安全规程
- 如何有效地与开发人员一起工作(一)