STM32F407通过SPI连接W5100S进行TCP网络通信

2023-05-16

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模块连接
包括:

  1. 4根SPI线
  2. 1根W5100S硬件复位线
  3. 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/7
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOA, &GPIO_InitStructure);

	GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_SPI1); //PA5复用为 SPI1
	GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_SPI1); //PA6复用为 SPI1
	GPIO_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总线模式
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F407通过SPI连接W5100S进行TCP网络通信 的相关文章

  • 解决ROS常遇到的Couldn’t find executable named报错解决

    解决办法 xff1a 将执行文件打开权限允许作为程序执行文件
  • ROS学习(一)ROS Noetic安装及环境配置

    文章目录 前言0 ROS Installation Options1 Installation1 1 Configure your Ubuntu repositories1 2 Setup your sources list1 3 Set
  • 嵌入式Linux 时间同步 gpsd+chrony

    嵌入式Linux 时间同步 gpsd 43 chrony 嵌入式Linux系统 xff0c 外接GPS设备 xff0c 系统通过NMEA数据和pps进行时间同步 xff0c 同时将本系统作为时间同步服务器 一 基本原理 NMEA中获取UTC
  • ModbusRTU串口读写报文解析

    0 MODBUS速览 Modbus是一种通信协议 xff0c ModubsRTU是它的一种传输模式 xff0c 通过这个协议能实现串口数据通讯 可以用C 控件读写串口 xff0c 也可以直接使用开源的串口助手 为了简化问题 xff0c 本文
  • Types of daTabases数据库类型

    NoSQL databases provide the performance scalability and stability that s required by the modern data driven apps we inte
  • jeston TX1_TX2 ubuntu18.04安装(国内安装源gitee)ROS Melodic

    查看ubunut系统信息 cat proc version uname a lsb release a 我自己的系统信息是 xff1a 由于我自己已经迁移了系统至SD卡 xff0c 所以存储比较富裕 xff1a 通过对应的ubuntu版本安
  • 9 个将改变一切的物联网应用

    无论您是有远见的 CEO 技术驱动型 CEO 还是 IT 领导者 xff0c 您之前都遇到过 IoT 一词 它经常与最高级一起使用 xff0c 表示它将如何彻底改变您的工作 娱乐和生活方式 但这只是另一个流行语 xff0c 还是承诺的技术圣
  • Android aplog是什么?

    aplog 是系统应用层的log xff0c 比如应用程序无响应或强行关闭 xff0c kernel相关的 xff0c 比如driver xff08 相机 蓝牙 usb 启动 xff09 出了开机问题 手机对服务唤醒和休眠的一些记录蓝牙相关
  • android 7.0 加入 android:directBootAware

    Android N引入了一个新特性 xff1a Direct Boot Mode 设备启动后进入的一个新模式 xff0c 直到用户解锁 xff08 unlock xff09 设备此阶段结束 在此 Direct Boot Mode 下 APP
  • Kotlin概述与Java的比较

    Kotlin是JetBrains的一种新的编程语言 它首次出现在2011年 xff0c JetBrains推出了名为 科特林 的项目 Kotlin是开源语言 基本上像Java一样 xff0c C和C 43 43 Kotlin也是 静态类型编
  • armlink 用法详解

    映像文件 image xff1a 是指一个可执行文件 xff0c 在执行的时候被加载到处理器中 一个映像文件有多个线程 它是ELF Executable and linking format 格式的 段 Section xff1a 描述映像
  • 人工智能的五大核心技术

    计算机视觉 机器学习 自然语言处理 机器人和语音识别是人工智能的五大核心技术 xff0c 它们均会成为独立的子产业 计算机视觉 计算机视觉是指计算机从图像中识别出物体 场景和活动的能力 计算机视觉技术运用由图像处理操作及其他技术所组成的序列
  • ubuntu下文件拷贝命令cp命令

    该命令的功能是将给出的文件或目录拷贝到另一文件或目录中 xff0c 就如同DOS下的copy命令一样 xff0c 功能非常强大 语法 xff1a cp xff3b 选项 xff3d 源文件或目录 目标文件或目录 说明 xff1a 该命令把指
  • android camera 照相机/摄像机

    一 camera启动 1 一个activity启动调用流程 xff1a onCreate gt onStart gt onResume onCreate xff1a 1 可添加所需布局文件 xff0c 画界面 2 开启线程 xff0c 启动
  • 正确学习javascript。困惑的指南

    正确学习 javascript 困惑的指南 迷失了 javascript xff1f 这一点都不奇怪 你需要一个能告诉你真正重要的指南 我们只有一个 向左看 有一个框架市场 xff0c 它们相互竞争 xff0c 赞扬它们的能力 向右看 这是
  • 【ROS学习2】创建ROS工作空间及功能包

    目录 创建ROS工作空间及功能包工作空间 workspace src 代码空间 Source Space build 编译空间 Build Space devel 开发空间 Development Space install 安装空间 In
  • 【GStreamer 】5-5-总结USB相机转RTSP网络视频流-推流usb摄像头JPEG

    我们使用gstreamer rtsp server xff0c 实现了USB相机转RTSP网络流的基本功能 xff0c 之前很多篇都讲了如何实现 xff0c 这一次我们集中精力解决之前的一些问题 文章 GStreamer 5 4 USB相机
  • C程序设计语言 5-3

    练习5 3 用指针方式实现第2章中的函数strcat 函数strcat s t 将t指向的字符串复制到s指向的字符串的尾部 include lt stdio h gt int my strcat char char int main cha
  • NuttX 文件系统架构介绍(7.14)

  • 谈谈memcpy函数的优化(纯C)

    在使用C语言编程时 xff0c 我们常用memcpy来复制内存数据 xff0c 但很少有人会关注到memcpy怎么实现 最简单的memcpy功能实现如下 xff1a void low memcpy void dst const void s

随机推荐

  • USB DEVICE调试心得

    一 USB设备链接后无法HUB不上报发现新设备 USB控制器未打开 xff0c USB DP DM引脚配置不正确 二 能够发现设备 xff0c 但HOST端提示获取描述符失败 获取描述符是 USB DEVICE 链接后 HOST 向 DEV
  • PX4uORB介绍[4]-对象和数据结构

  • ubuntu禁止显示器休眠的方法

    近期在firefly RK3399开发板上调试代码 xff0c 经常遇到显示器自动休眠 xff0c 并且发现每次休眠都对系统实时性产生一些影响 xff0c 最终在万能的CSDN博客上找到解决办法 xff1a Linux不让显示器休眠的方法
  • STM32F4 SPI RX/TX DMA 读写FLASH数据

    STM32 使用DMA读写FLASH数据需要注意以下几点 xff1a 1 SPI全双工模式下 xff0c 无论读写FLASH数据均需要同时使能RX TX DMA 2 写数据时回读数据应当丢弃 xff0c 读数据时应当发送0xff来启动SPI
  • C++ vector的用法总结(整理)

    vector 是向量类型 xff0c 它可以容纳许多类型的数据 xff0c 如若干个整数 xff0c 所以称其为容器 它相当于一个动态的数组 当程序员无法知道自己需要的数组的规模多大时 用其来解决问题可以达到最大节约空间的目的 vector
  • 【问题已解决】无法定位程序输入点XXX于动态链接库xxxxxx

    因为刚接触OSG需要用CMake进行编译 xff0c 在操作上的问题还可以适应 xff0c 主要是电脑环境的影响比较大 编译成功后 xff0c 运行程序提示缺少一些dll文件 这里的主要处理办法是下载缺失的部分 xff0c 加到对应的文件夹
  • [python]重新安装pip

    目录 pip简介 一 恢复easy install文件 二 安装pip pip简介 python中一开始的import指令大家都不陌生 xff0c 也是因为可以调用不同模块的功能 xff0c 被称为 胶水语言 一般安装外部库有很多种方式 x
  • 【ROS2 入门】Jeston TX1 JetPack_4.6.3环境 ubuntu 18.04 ROS2 安装

    大家好 xff0c 我是虎哥 xff0c 从今天开始 xff0c 我将花一段时间 xff0c 开始将自己从ROS1切换到ROS2 xff0c 在上一篇中 xff0c 我们再虚拟机环境中安装了 ROS2 eloquent版本 xff0c 并完
  • 【已解决】拯救者Y7000不能调节亮度

    在上午的时候 xff0c 电脑突然有一些进程失控 xff0c 在任务管理器中一些服务关不掉 xff0c 电脑接近死机 xff0c 只能重启来解决 但是重启之后电脑突然很暗 回顾今天发生的情况 xff0c 应该是软件的锅了 应该是因为该型号的
  • 【已解决】win10 “你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。

    在访问局域网共享盘的时候 xff0c 突然出现报错 通过强大的网友 xff0c 通过改变组策略权限可以解决 1 按下win 43 R xff0c 输入gpedit msc 2 打开 管理模板 gt 网络 gt Lanman工作站 gt 启动
  • 【已解决】win10离线安装.net framework 3.5(错误:0x8024402c)

    首先说一下问题的背景 xff0c PC是离线环境win10系统 xff0c 主要在在离线安装VS2008的时候需要先安装这个低版本 Net 网上有很多方式 xff0c 这次参考价值最大的是这两个 Win10离线安装 net framewor
  • 【已解决可更新】VS2008 写入位置 0xCDCDCDCD 时发生访问冲突

    这个问题分两个小问题来细说 问题的背景是VS2008项目中封装了网络协议接口类 xff0c 对象成员有一个SOCKET类型成员变量和封装的进行三次握手的成员函数 在调用成员函数时报错发生访问冲突 1 写入位置 0xCDCDCDCD 时发生访
  • 【python】删除python代码中的简单注释

    可以当作一个简单的小工具来使用 xff0c 不过也是比较有局限性 xff0c 只能去掉 开头的注释行 使用内置函数 xff0c 没有引入模块 filename 61 34 xxx txt 34 打开名为xxx的txt文件 file 61 o
  • 再见2022,加油2023

    其实变化最大的一点就是 xff0c 这一年自己变成了一个北漂 没有很多的成熟的规划 xff0c 没有很多预算准备来到了北京 那会儿和之前的同事合租 xff0c 也给他添了不少麻烦 最开始到北京的时候 xff0c 因为口罩问题入职前生活状态比
  • 有效解决“SyntaxError: Non-UTF-8 code starting with” 语法错误

    在程序中出现中文的时候会有这种报错 xff0c 在代码的第一行加一句注释 xff0c 说明一下字符类型可以解决 coding 61 gbk coding utf 8这两种在我的程序里是亲测有效的
  • STM32F407定时器编码器接口模式

    STM32F407定时器编码器接口模式 16位定时器扩展32位 span class token comment TIM5初始化为编码器接口模式 xff0c 读取光栅尺数值 span span class token keyword voi
  • STM32F407的USB_HID 基础配置STM32CubeMX

    STM32F407的USB HID 基础配置 示例详解 参考 xff1a https blog csdn net zhanglifu3601881 article details 89675307 工具 xff1a STM32CubeMX5
  • STM32F407通过FSMC连接W5100S进行TCP网络通信

    STM32F407通过FSMC连接W5100S进行TCP网络通信 一 W5100S硬件 1 HS NM5100SA模块 模块厂家 xff1a 成都浩然电子http www hschip com HS NM5100SA以太网络控制器接口模块是
  • 【ROS2 入门】ROS2 创建工作空间

    大家好 xff0c 我是虎哥 xff0c 从今天开始 xff0c 我将花一段时间 xff0c 开始将自己从ROS1切换到ROS2 xff0c 在上几篇中 xff0c 我们一起了解ROS 2中很多基础概念 xff0c 从今天开始我们逐步就开始
  • STM32F407通过SPI连接W5100S进行TCP网络通信

    STM32F407通过SPI连接W5100S进行网络通信 一 W5100S硬件 1 HS NM5100SA模块 模块厂家 xff1a 成都浩然电子http www hschip com HS NM5100SA以太网络控制器接口模块是将W51