奋斗STM32开发板uIP1.0 以太网例程讲解
- 格式:pdf
- 大小:894.94 KB
- 文档页数:21
北京世讯电子技术有限公司STM32 WIFI 开发板开发指南及教程欢迎选用世讯电子的开发板! 注意: 注意:如果你是初学者, 如果你是初学者,务必仔细 务必仔细阅读 仔细阅读每节内容 阅读每节内容! 每节内容! 1. 使用指南1.1 adhoc 模式工作( 模式工作(板子默认 wifi 工作模式) 工作模式)拿到板子后, ,先不要下载程序, 1) 拿到板子后 先不要下载程序,先给板子上电, 先给板子上电,测试运行一下! 测试运行一下! 2) 观看开发板上的指示灯, 观看开发板上的指示灯,等到 WIFI 模块旁边的 LED 不闪烁了。
不闪烁了。
3) 打开电脑的 wifi, 搜索一下, 搜索一下,看看能不能找到“ 看看能不能找到“ShiXun_ADHOC”这样的网 络,如下图所示4) 如果不能找到“ 如果不能找到“ShiXun_ADHOC”网络, 网络,需先恢复出厂设置, 需先恢复出厂设置,具体查看 1.2恢复出厂设置模式5) 在电脑上选中“ 在电脑上选中“ShiXun_ADHOC”网络, 网络,输入密码“ 输入密码“1234567890123”然后 选择连接。
选择连接。
6) 然后等待, 然后等待,这个过程有点长, 这个过程有点长,几十秒甚至 几十秒甚至 1 分多钟。
分多钟。
7) 等 wifi 模块旁边的 D6(LED)指示常亮 指示常亮了 常亮了,说明网络连接上了。
说明网络连接上了。
说明板子工 作正常。
作正常。
如下所示Rev 0.32Confidential Copyright@2014 by Shixun Electronic Inc-1-北京世讯电子技术有限公司B. 显示分配到 IP A. 显示已经连接上 8) 打开浏览器, 打开浏览器,输入地址 http://192.168.10.10/ 就可以出来下面页面了9) 然后点击测试部分, 然后点击测试部分,继电器开、 继电器开、关,LED 灯开、 灯开、关。
stm32官方udp例程详解摘要:1.STM32 简介2.UDP 协议简介3.STM32 的UDP 实现4.STM32 官方UDP 例程的特点5.例程详解6.总结正文:1.STM32 简介STM32 是一种基于ARM Cortex-M 内核的微控制器,它具有高性能、低功耗、多功能、易扩展等特点,广泛应用于嵌入式系统中。
2.UDP 协议简介UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供面向数据报的传输服务,不保证数据的可靠性和顺序性,但具有较高的传输效率,适用于那些对数据传输实时性要求较高,但不要求数据完整性的应用场景。
3.STM32 的UDP 实现STM32 的UDP 实现基于ARM 的UDP 库,它提供了一系列的UDP 相关函数,包括UDP 套接字初始化、数据发送、数据接收等。
4.STM32 官方UDP 例程的特点STM32 官方UDP 例程是基于STM32 的UDP 实现编写的,它具有以下特点:(1)简洁明了:例程代码简洁,易于理解;(2)功能完善:例程实现了UDP 的基本功能,包括UDP 套接字初始化、数据发送、数据接收等;(3)实用性强:例程在实际应用中可以直接使用,或者作为参考进行UDP 相关功能的开发。
5.例程详解以STM32 官方UDP 例程中的JoyStick 功能为例,详细说明例程的实现。
(1)UDP 套接字初始化在例程中,使用了UDP_Init() 函数进行UDP 套接字初始化,该函数主要完成以下工作:(1)配置UDP 缓冲区;(2)配置UDP 发送和接收函数;(3)初始化UDP 套接字。
(2)数据发送在例程中,使用了UDP_SendData() 函数进行数据发送,该函数实现了将数据通过UDP 套接字发送到目标主机的功能。
(3)数据接收在例程中,使用了UDP_ReceiveData() 函数进行数据接收,该函数实现了从UDP 套接字接收数据的功能。
0、友情提示《零死角玩转STM32》系列教程由初级篇、中级篇、高级篇、系统篇、四个部分组成,根据野火STM32开发板旧版教程升级而来,且经过重新深入编写,重新排版,更适合初学者,步步为营,从入门到精通,从裸奔到系统,让您零死角玩转STM32。
M3的世界,与野火同行,乐意惬无边。
另外,野火团队历时一年精心打造的《STM32库开发实战指南》将于今年10月份由机械工业出版社出版,该书的排版更适于纸质书本阅读以及更有利于查阅资料。
内容上会给你带来更多的惊喜。
是一本学习STM32必备的工具书。
敬请期待!8、以太网(ENC28J60+LWIP)8.1 友情提醒Lwip的教程非常庞大且深入,是《stm32库开发实战指南》里面的内容,鉴于跟出版社的合约的关系,这里不能够开源,但野火STM32开发板里面提供了源码。
欲知更详细内容,请关注机械工业出版社将于10月份出版的《stm32库开发实战指南》。
LWIP实验需要用到ENC28J60这个以太网模块,野火STM32开发板已经板载了这个模块,可直接做LWIP实验。
8.2实验步骤下面简单介绍下LWIP的操作方法和能够达到的效果。
野火STM32开发板供电(DC5V),插上JLINK,插上串口线(两头都是母的交叉线),利用网线把STM32开发板接入与PC相同的路由,也可以直接利用网线把开发板和PC相连,其实验的操作是相同的(这样可以排除路由的问题),但在进行浏览网页实验时,图片可能无法正常显示。
把本工程文件编译后烧录到开发板上,在程序运行框输入cmd命令进入dos模式。
8.2.1 ping实验在命令提示符窗口输入命令并回车: ping 192.168.1.18输入ping命令成功后的现象ping 192.168.1.188.2.2 telnet实验1.如果使用windows 7系统,系统没有telnet程序,需要自行下载安装。
使用xp系统的用户,在命令提示符窗口输入命令并回车:telnet 192.168.1.18输入命令后弹出如下窗口:进入 telnet程序2.见错误!未找到引用源。
奋斗版STM32开发板V2.0的硬件说明1. 供电电路:AMS1117-3.3输入+5V,提供3.3V的固定电压输出,为了降低电磁干扰,C1-C5为CPU 提供BANK电源(VCC:P50、P75、P100、P28、P11 GND:P49、P74、P99、P27、P10)滤波。
CPU的模拟输入电源供电脚VDDA(P22)通过L1 22uH的电感与+3.3V VDD电压连接,CPU的模拟地VSSA(P19)及VREF-(P20)通过R1 0欧电阻与GND连接。
VREF+(P21)采用VDDA(P22)电源基准。
AMS1117-2.5输入+5V,提供2.5V的固定电压输出,为MP3电路VS1003提供所需的电压。
为RTC的备份电源采用V1 3.3V锂离子片状电池。
2. 启动方式设置:Boot1—Boot0(P37,P94): x0: 内部程序存储区启动01:系统存储区启动(为异步通信ISP编程方式)在此将BOOT1始终设置为0, BOOT0为可变的状态,在正常模式下将其置为0,在ISP 编程时将其置为1。
用JP1跳线块设置,开路为ISP模式,短路为正常运行模式。
3. 时钟源电路:外部晶体/陶瓷谐振器(HSE)(P12、P13):B1:8MHz晶体谐振器,C8,C9谐振电容选择10P。
系统的时钟经过PLL模块将时钟提高到72MHz。
低速外部时钟源(LSE)(P8、P9):B2: 32.768KHz晶体谐振器。
C10,C11谐振电容选择10P。
注意:根据ST公司的推荐, B2要采用电容负载为6P的晶振,否则有可能会出现停振的现象。
4. SPI存储电路:D2 AT45DB161(2M Bytes)CPU采用SPI1端口PA7-SPI1-MOSI(P32)、PA6-SPI1-MISO (P31)、PA5-SPI1-SCK(P30)、PC4-SPI1-CS2(P33)控制读写访问, SPI1地址:0x4000 3800 - 0x4000 3BFF5. 显示及触摸接口模块:显示器采用2.4” TFT320X240LCD(控制器ILI9325), 采用CPU的FSMC功能,LCD片选CS采用FSMC_NE1(P88),FSMC_A16(P58)作为LCD的RS选择,FSMC_nWE(P86)作为LCD的/WR, FSMC_nOE(P85)作为LCD的/RD, LCD的RESET脚用CPU的PE1(P98)(LCD-RST),FSMC_D0---FSMC_D15和LCD的D1-D8 D10-D17相互连接,触摸屏接口采用SPI1接口,片选为PB7-SPI1-CS3,由于LCD背光采用恒流源芯片PT4101控制,采用了PWM控制信号控制背光的明暗, PWM信号由PD13-LIGHT-PWM来控制。
STM32F103核心模块开发板使用说明V1.0一、核心模块特点介绍1、MCU:STM32F103VB,Cortex-M3内核,128kB Flash, 20KB RAM,最高工作时钟72MHz,100脚2、USB接口,可以做USB实验3、包括CAN-BUS芯片TJA1050,可做CAN通信实验4、ARM JTAG 2x10 座5、所有 IO 口均引出6、专用复位芯片电路7、电源指示灯、状态指示灯8、两个用户按键9、启动模式选择10、板载5V、3.3V LDO 1117,最大提供 800mA 电流11、USB供电或单电源供电: +9VDC ,电容滤波12、8MHz 晶振,32.768kHz 晶振13、PCB尺寸: 90mm×64mm二、跳线说明1、启动方式选择跳线说明开发板上的启动方式选择跳线R16100KV33231SW2BOOT0R15100KV33231SW1PB2启动方式选择跳线对应的原理图SW1和SW2为STM32启动方式选择跳线,当SW2左边两个插针短接(即中间插针BOOT0与GND 短接),SW1不接任何跳线帽时,为从FLASH 启动模式,正常使用开发板时,此跳线需短接,如上图所示。
当SW1左边两个插针短接(即中间插针PB2与GND 短接,1和2短接),SW2不接任何跳线帽时,为System Memory 模式。
2、其他跳线说明 (1) JP4和JP5开发板上的JP4和JP5跳线JP4和JP5跳线对应的原理图如上图所示,JP4短接后可以通过USB接口给开发板供电,JP5用来选择是否给PA12(D+)提供1.5k电阻的上拉,做USB相关实验时,需短接。
(2) JP8跳线开发板上的JP8跳线V33VDDAJP8跳线对应的原理图JP8跳线用来给STM32芯片的模拟电源选择供电电源,通常情况下,JP8跳线需短接,用+3.3V提供电源。
(3) JP9双排针(4) JP10双排针(5) JP11双排针(6) JP12双排针三、IAR下用Jlink调试STM32核心模块开发板确认SW2,JP8,JP4,JP5跳线正确短接后,开始安装IAR软件,安装EWARM-EV-WEB-511后,在安装后的目录里\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\examples\ST\STM32F10x\IAR-STM32-SK ,打开IAR-STM32-SK.eww文件,它里面包含多个工程,除了LCD_Demo外,其它工程均无需改动,可以直接使用JLINK下载调试。
详解STM32 ISP设置及使用说明(原创)1. STM32的BOOT概述STM32三种启动模式对应的存储介质均是芯片内置的,它们是:用户闪存:BOOT1=x BOOT0=0芯片内置的Flash,即主存储器FlashSRAM:BOOT1=1 BOOT0=1芯片内置的SRAM 区,就是内存啦。
系统存储器:BOOT1=0 BOOT0=1芯片内部一块特定的区域,叫做系统存储器。
芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。
这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM 区。
在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。
BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1 BOOT0=1 从内置SRAM 启动,这种模式可以用于调试。
要注意的是,一般不使用内置SRAM 启动(BOOT1=1 BOOT0=1),因为SRAM 掉电后数据就丢失。
多数情况下SRAM 只是在调试时使用,也可以做其他一些用途。
如做故障的局部诊断,写一段小程序加载到SRAM 中诊断板上的其他电路,或用此方法读写板上的Flash 或EEPROM 等。
还可以通过这种方法解除内部Flash 的读写保护,当然解除读写保护的同时Flash 的内容也被自动清除,以防止恶意的软件拷贝。
一般BOOT0 和BOOT1 跳线都跳到0(GND),即正常的从片内Flash运行,只是在ISP下载的情况下,需要设置BOOT0=1,BOOT1=0 ,下载完成后,把BOOT0 的跳线接回0,这样系统可以正常运行了。
对于一般的应用来说,直接把BOOT0 和BOOT1 引脚接地即可,不用设置跳线,使用IAR 调试程序时可以选择RAM 调试还是Flash 调试,与BOOT0 和BOOT1 的配置无关。
STM32开发板使用说明1、开发板使用到的软件及安装说明在开始学习开发板之前需要安装的软件有:1、KEIL3.80A,2、PL-2303HX驱动,3、串口调试助手,4、下载器MCUISP。
这些软件在课件文件下面的软件文件里。
具体安装步骤如下:1.KEIL3.80A的安装,打开路径:课件\软件\KEIL3.80A\MDK3.80A安装手册,根据上面的步骤安装软件。
2.PL-2303HX驱动的安装,打开路径:课件\软件\PL-2303HX新版驱动,可根据使用电脑的操作系统来选择安装的软件,如选择安装XP驱动,可打开XP驱动,根据里面的安装说明来安装软件。
一般只要运行PL-2303 Driver Installer。
exe就可以了。
3.串口调试助手的安装,打开路径:课件\软件\串口调试助手,点击sscom33。
exe即可,也可以创建快捷方式在桌面。
4.下载器MCUISP的安装,打开路径:课件\软件\下载器MCUISP,点击mcuisp。
exe 即可,也可以创建快捷方式在桌面。
2、开发环境介绍及使用说明首先是我们之前安装的keil3.80a。
再点击Project->New uVision Project如下图所示:弹出create new project 对话框,新建一个文件夹TEST,然后把工程名字设为test。
点击保存。
弹出选择器件的对话框,因为我们的开发板使用的是STM32F103RBT6 ,所以在这里我们选择STMicroelectronics 下面的STM32F103RB( 如果使用的是其他系列的芯片,选择相应的型号就可以了)。
如下图所示:点击OK,MDK会弹出一个对话框,问你是否加载启动代码到当前工程下面,这里我们选择是。
启动代码是一段和硬件相关的汇编代码。
是必不可少的!在上面点击了是以后,MDK 就把启动代码STM32F10x。
s 加入到了我们的工程下面。
如下图所示:到这里,我们就可以开始编写自己的代码了。
STM32开发板(小苗板)资料系列之八——按键例程讲解来源:第九单片机论坛在流水灯例程中通过对GPIO端口的应用明白了I/O口输出的使用,接下来通过按键方式点亮LED来明白GPIO的输入使用。
在资料七里面介绍了输出四种模式的使用场合,下面介绍下输入的四种模。
上拉输入:若GPIO引脚配置为上拉输入模式,在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,即高电平。
下拉输入:与上拉输入正好相反,在默认状态下其引脚数据为0,即低电平。
浮空输入:经由触发器输入,在芯片内部没有上拉和下拉电阻。
由于其输入阻抗交大,一般把这种模式用于标准的通讯协议,比如I2C、USART的接收端。
模式输入:该模式关闭了施密特触发器,不接上拉和下拉电阻,经由一线路把电压信号传送到片上外设。
如ADC,由其采集电压信号。
在使用ADC外设的时候,必须设置为模拟输入模式。
这部分具体的结构可查看芯片手册,通过电路分析会更加清晰明了。
8.1按键代码分析这部分电路图如下所示。
四个按键分别与GPIOC的pin5、pin6、pin7、pin9相连,实验现象是当S3按下,LED1亮;当S3再按下,LED1灭。
其他三个按键实现同样功能。
在这里按键按下就是向GPIO输入一个低电平信号,下面看下具体的代码分析来了解如何进行输入控制。
先看看都用到哪些库文件:startup_stm32f10x_md.sstm32f10x_conf.hcore_cm3.c core_cm3.hsystem_stm32f10x.c system_stm32f10x.hstm32f10x.hstm32f10x_gpio.c stm32f10x_gpio.hstm32f10x_rcc.c stm32f10x_rcc.h 用户编写的文件:main.cled.c led.hkey.c key.hstm32f10x_it.c其中使用到的库文件都已经在流水灯例程中做过说明,按键实验和流水灯主要差别在需要用户编写的文件多一个源文件和头文件,以及在原先的led.h头文件中增加一下宏定义代码。
STM32网络通信的应用解析网络通信是指通过计算机网络连接和交换信息的过程。
在STM32单片机中,网络通信被广泛应用于各种领域,如物联网、智能家居和工业自动化等。
本文将对STM32单片机中网络通信的应用进行分析和解析。
1. TCP/IP协议栈TCP/IP协议栈是一种常用的网络协议集合,用于在网络中传输数据。
在STM32单片机中,通过集成TCP/IP协议栈,可以实现网络通信功能。
该协议栈包含了TCP、IP、UDP、ICMP和ARP等多个协议,用于实现可靠的数据传输和网络连接。
2. Socket编程Socket编程是一种常用的网络编程模型,它提供了一套API接口,用于在网络中创建和管理网络连接。
在STM32单片机中,通过使用Socket编程,可以实现与其他设备之间的网络通信。
通过建立Socket连接、发送和接收数据,可以实现设备之间的数据交换和通信。
3. USART通信USART通信是一种串行通信协议,常用于短距离的设备之间的通信。
在STM32单片机中,通过配置USART模块,可以实现USART通信功能。
通过设置波特率、数据位、停止位和校验位等参数,可以实现与其他设备的串行通信。
4. CAN通信CAN通信是一种常用的工业控制网络协议,常用于工业自动化系统中。
在STM32单片机中,通过集成CAN模块,可以实现CAN通信功能。
通过配置CAN模块的波特率、滤波器和发送/接收缓冲区等参数,可以实现与其他设备之间的CAN通信。
5. Ethernet通信Ethernet通信是一种常用的有线局域网通信协议,常用于局域网中的设备之间的通信。
在STM32单片机中,通过集成Ethernet模块和PHY芯片,可以实现Ethernet通信功能。
通过配置MAC地址、IP地址和端口等参数,可以实现与其他设备之间的Ethernet通信。
6. WLAN通信WLAN通信是一种无线局域网通信协议,常用于无线网络中的设备之间的通信。
在STM32单片机中,通过集成WLAN模块,可以实现WLAN通信功能。
北京智嵌物联网电子技术有限公司 I智嵌 STM32F407开发板基本型V1.0实验例程操作手册版本号:A拟制人:赵工时 间 :2014年12月27日目录1本文档编写目的 (1)2实验例程操作说明 (1)2.1LED闪烁实验 (1)2.2KEY_LED实验 (1)2.3RS232通讯实验 (1)2.4RS485通讯实验 (2)2.5CAN1通讯实验 (3)2.6I2C实验—读写24c04 (3)2.7SPI通讯实验--读写SST25016B (5)2.8CPU温度测量实验 (5)2.9CRC实验 (5)2.10DAC例程实验 (6)2.11DS18B20温度测量实验 (6)2.12EXIT例程实验 (6)2.13RNG随机数发生器例程实验 (7)2.14RTC时钟例程实验 (7)2.15独立看门狗例程实验 (8)2.1616通道ADC采集实验 (9)2.17U盘读写实验 (10)2.18SD卡FatFS文件系统实验 (11)2.19USB数据存储实验-PC机通过USB读写SD卡实验 (13)2.20基于OLED的RFID_RC522读写IC卡实验 (14)2.21OLED显示实验 (16)2.22TCP服务器收发数据实验 (16)2.23动态IP实验 (18)2.24HTTP网页服务器实验 (20)2.25 2.4G无线模块NRF24l01通信实验 (22)2.26基于LCD的RFID_RC522读写IC卡实验 (22)2.27SNTP协议实验_网络授时_RTC实验 (24)2.28UDP客户端发送数据实验 (27)2.29UDP服务器收发数据实验 (28)2.30TCP客户端收发数据实验 (30)2.31HTTP网页拍照例程 (33)2.32其他实验例程 (34)1本文档编写目的本手册是针对智嵌 STM32F407开发板基本型V1.0的例程而编写的,包括每个实验例程的实验原理、实验步骤、注意事项等。
基于STM32的以太网通信模块设计引言以太网通信是当今许多嵌入式系统中不可或缺的一部分。
它提供了快速、安全和可靠的数据传输方式,使得设备能够与其他设备或云服务进行通信。
STM32是常用的嵌入式系统开发板,具有强大的处理能力和丰富的外设接口,非常适合用于以太网通信模块的设计。
本文将介绍如何基于STM32设计一个简单的以太网通信模块。
1.系统架构设计在设计以太网通信模块之前,首先需要了解整个系统的架构。
一般来说,以太网通信模块由硬件和软件两部分组成。
硬件部分主要包括STM32开发板和以太网PHY芯片。
以太网PHY芯片负责将数字信号转换为模拟信号,并通过以太网接口与外部网络连接。
STM32开发板通过接口与PHY芯片进行通信,并负责处理网络数据的收发。
软件部分主要包括驱动程序和网络协议栈。
驱动程序负责与PHY芯片进行通信,控制数据的收发。
网络协议栈实现了TCP/IP协议栈,包括IP、TCP和UDP等协议。
它负责处理数据包的组装和解析,以及网络连接的建立和断开。
2.硬件设计硬件设计主要涉及PHY芯片与STM32开发板之间的连接和接口配置。
PHY芯片通常使用RMII(Reduced Media Independent Interface)接口与STM32开发板连接。
在STM32上配置相应的引脚和寄存器,使其与PHY芯片进行通信。
为了方便调试和监测网络状态,可以在硬件设计中添加LED指示灯,显示网络连接状态。
3.软件设计软件设计主要涉及驱动程序和网络协议栈的开发。
驱动程序可以使用STM32的标准外设库进行开发。
根据PHY芯片的型号和通信接口,编写相应的驱动程序,实现数据的发送和接收。
网络协议栈可以使用第三方库,如lwIP(Lightweight IP)等。
lwIP是一个开源的TCP/IP协议栈,提供了各种网络协议的实现,支持多种硬件平台。
在软件设计时,需要根据具体需求配置网络协议栈的参数,如IP地址、子网掩码、默认网关等。
STM32入门系列教程如何使用STM32-ISP下载调试Revision0.01(2010-04-15)1.STM32-ISP原理STM32系列CPU自带固化的ISP程序,在芯片上电的时候会检查BOOT0(pin_94)与BOOT1(pin_37)引脚的电平状态,如果BOOT0=1,且BOOT1=0,则会进入自带的ISP程序。
为什么要这样设计呢?先来看下其他系列的CPU如何在没有仿真器的情况下下载升级版本。
像单片机可以用STC-ISP软件从串口下载,但是对于STM32系列的CPU来说,在没有ARM仿真器的情况下,如何来调试STM32目标板?OK,STM32也提供了串口ISP下载的功能,并配备专门的官方ISP软件:Flash loader demostrator。
目前我们使用的是V2.0版本。
只要在电脑上安装好这个软件,并用串口连接目标板,即可通过串口把HEX文件下载到目标版中运行,非常方便。
2.如何使用ISP下载调试2.1安装Flash loaderFlash loader安装软件,请在芯达STM32光盘中的“软件工具”目录中,如下图标:双击该图标,出现如下图所示窗口:大约等待几秒钟,进入下一个界面:从这个界面可以看出,我们安装的是V2.0.0的版本。
接下去一路点击“Next”,安装非常简单,一直到最后“finish”。
相信您一定可以顺利安装完成。
我们还是把安装图解贴在这里,以备参考。
2.1使用ISP下载调试1、用串口线一头插在芯达STM32开发板的串口座上(使用COM1座),一头插在电脑串口上(若使用笔记本,请自备USB转串口)。
2、检查电源附近的短路帽是否已经把BOOT0拔掉,BOOT1插上(拔掉即为高电平1,插上就是低电平0。
我们要的状态是BOOT0=1,且BOOT1=0)。
3、给目标板上电。
4、打开ISP下载软件如下,在开始菜单�程序�STMicroelectronics�Flash Loader demostrator�Flash Loader Demo,点击打开该软件。
通用IO口(GPIO)例程实验1.GPIO功能描述每个GPI/O 端口有两个32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32 位置位/复位寄存器(GPIOx_BSRR),一个16 位复位寄存器(GPIOx_BRR)和一个32 位锁定寄存器 (GPIOx_LCKR)。
根据数据手册中列出的每个I/O 端口的特定硬件特征, GPIO 端口的每个位可以 由软件分别配置成多种模式。
− 输入浮空− 输入上拉− 输入下拉− 模拟输入− 开漏输出− 推挽式输出− 推挽式复用功能− 开漏复用功能每个I/O 端口位可以自由编程,然而I/0 端口寄存器必须按32 位字被访问(不允许 半字或字节访问)。
GPIOx_BSRR 和GPIOx_BRR 寄存器允许对任何GPIO 寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ 时不会发生危险。
下图给出了一个5V兼容I/O端口位的基本结构。
(1) VDD_FT 对5 伏兼容I/O 脚是特殊的,它与VDD 不同端口位配置表2 通用I/O(GPIO)刚 开 I/O (CNFx[1:0]=01b MODEx[1:0]=00b)。
复位后,JTAG 引脚被置于输入上拉或下拉模式:− PA15:JTDI 置于上拉模式− PA14:JTCK 置于下拉模式− PA13:JTMS 置于上拉模式− PB4: JNTRST 置于上拉模式当作为输出配置时,写到输出数据寄存器上的值(GPIOx_ODR)输出到相应的I/O引脚。
可以以推挽模式或开漏模式(当输出0 时,只有N-MOS 被打开)使用输出驱动器。
输入数据寄存器(GPIOx_IDR)在每个APB2 时钟周期捕捉I/O 引脚上的数据。
所有GPIO 引脚有一个内部弱上拉和弱下拉,当配置为输入时,它们可以被激活也可以不被激活。
2.1 输入配置当I/O 端口配置为输入时:● 输出缓冲器被禁止● 施密特触发输入被激活● 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接● 出现在I/O 脚上的数据在每个APB2 时钟被采样到输入数据寄存器● 对输入数据寄存器的读访问可得到I/O 状态2.2 输出配置当I/O 端口被配置为输出时:● 输出缓冲器被激活− 开漏模式:输出寄存器上的0 激活N-MOS,而输出寄存器上的1 将端口置于高阻状态(P-MOS 从不被激活)。
接触了STM32的开发板快一周了,拿到板子厂商提供了些DEMO程序,其他想自己学习,看了ST的资料手册,感觉看下来,一个工具还是不知道怎么用,还好现在网络强大,在论坛上可以去找自己需要的资料.我把搜集的资料整理了一下,以及自己加了一些自己的,方便自己以后再用到,方便查找,同时和网友们一起分享,希望你们有什么新的想法也提出来,一起分享.开始吧!嘿嘿简述1STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出)①浮空输入_IN_FLOATING②带上拉输入_IPU③带下拉输入_IPD(所谓上拉就是接一电阻到电源;下拉就是接一电阻到地。
也就是说带上拉就是口初始的时候是高电平,下拉就是低电平。
)④模拟输入_AIN⑤开漏输出_OUT_OD⑥推挽输出_OUT_PP⑦复用功能的推挽输出_AF_PP⑧复用功能的开漏输出_AF_ODI/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。
通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。
当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
关键是GPIO的引脚速度跟应用匹配(推荐10倍以上)。
比如:对于串口,假如最大波特率只需,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO 引脚速度。
对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。
使用STM32F2x7系列单片机的以太网接口实施IAP介绍此应用笔记上的目的在于方便使用STM32F2x7系列微控制器的工程师。
它提供了用STM32F2x7微控制器的网络通信接口来实现在应用编程(IAP)的方案。
在Lwip TCP/IP协议栈项层有两种协议可以用于实现IAP功能:1.使用TFTP(简单文件传输协议)完成IAP功能。
2.使用HTTP(超文本传输协议)完成IAP功能。
1IAP概览1.1工作原理IAP是一种利用MCU的如串口、USB、CAN、以太网等的通信接口来更新单片机内部指定地址范围空间内容(固件程序)的方法。
在引导MCU执行工作时,可以通过某些设置将单片机置于IAP模式以便执行IAP部分的代码或者置为普通模式以便开始执行应用代码。
无论是IAP模式的代码还是普通模式的代码都存放在MCU内嵌的Flash存储空间。
IAP部分的代码通常情况下是放在Flash的从第一页开始的连续区域内,剩余的空间用于存放应用程序的代码。
图1IAP操作流程1.2使用MCU的以太网接口实现IAP功能在一个嵌入式应用中,当以太网通信功能可用时,一般情况下以太网接口是用以实现IAP功能的最佳选择,因为该接口具有以下优势:A.它是一个高速的通信接口(10/100Mbit/s)B.通过网络可以远程更新固件C.在Lwip协议栈的顶层有标准化的协议(如FTP、TFTP、HTTP等)用于实施IAP1.3在STM32F2x7上通过以太网实现IAP功能该应用笔记描述了2种使用STM32F2x7网络通信外设实现IAP的解决办法:A.使用TFTP(简单文件传输协议)B.使用HTTP(超文本传输协议)1.3.1通过TFTP完成IAP在需要固件更新通力的嵌入式应用中,通过TFTP来实现IAR的方法被广泛使用(比如:嵌入式Linux Bootloaders)。
TFTP是简单文件传输协议。
它工作在UDP传输协议的传输层的上层。
使用TFTP协议实现IAP功能一般在局域网(LAN)环境下使用。
奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程uIP1.0 ENC28J60 以太网例程实验平台:奋斗版STM32开发板V2、V2.1、V3 实验内容:本例程演示了在奋斗STM32开发板上完成ARP,ICMP,TCP服务器、WEB 服务器以及UDP服务器,该实验学习了基于uIP1.0网络协议栈的程序编制。
预先需要掌握的知识1.ENC28J60ENC28J60是MICROCHIP公司的带SPI 接口的独立以太网控制器, 以太网控制器特性 • IEEE 802.3 兼容的以太网控制器 • 集成MAC 和10 BASE-T PHY • 接收器和冲突抑制电路 • 支持一个带自动极性检测和校正的10BASE-T 端口 • 支持全双工和半双工模式 • 可编程在发生冲突时自动重发 • 可编程填充和CRC 生成 • 可编程自动拒绝错误数据包 • 最高速度可达10 Mb/s 的SPI 接口 缓冲器 • 8 KB 发送/ 接收数据包双端口SRAM • 可配置发送/ 接收缓冲器大小 • 硬件管理的循环接收FIFO • 字节宽度的随机访问和顺序访问(地址自动递增) • 用于快速数据传送的内部DMA • 硬件支持的IP 校验和计算 介质访问控制器(MAC)特性 • 支持单播、组播和广播数据包 • 可编程数据包过滤,并在以下事件的逻辑“与” 和“或”结果为真时唤醒主机: - 单播目标地址 - 组播地址 广播地址 - Magic Packet - 由64 位哈希表定义的组目标地址 - 多达64 字节的可编程模式匹配(偏移量可由用户定义)淘宝店铺:1奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程• 环回模式 物理层(PHY)特性 • 整形输出滤波器 • 环回模式 工作特性 • 两个用来表示连接、发送、接收、冲突和全/ 半双工状态的可编程LED 输出 • 使用两个中断引脚的七个中断源 • 25 MHz 时钟 • 带可编程预分频器的时钟输出引脚 • 工作电压范围是3.14V 到3.45V • TTL 电平输入 • 温度范围:-40°C 到+85°C (工业级), 0°C 到 +70°C (商业级)(仅SSOP 封装) • 28 引脚SPDIP、SSOP、SOIC 和QFN 封装概述ENC28J60 是带有行业标准串行外设接口(SerialPeripheral Interface,SPI)的独立以太网控制器。
它可作为任何配备有SPI 的控制器的以太网接口。
ENC28J60 符合IEEE 802.3 的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。
它还提 供了一个内部DMA 模块,以实现快速数据吞吐和硬件支持的IP校验和计算。
与主控制器的通信通过两个中断引脚和SPI 实现, 数据传输速率高达10 Mb/s。
两个专用的引脚用于连接LED,进行网络活动状态指示。
图1-1所示为ENC28J60的简化框图。
图1-2所示为使用该器件的典型应用电路。
要将单片机连接到速率为10 Mbps 的以太网, 只需ENC28J60、两个脉冲变压器和一些无源元件即可。
淘宝店铺:2奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程ENC28J60 由七个主要功能模块组成: 1. SPI 接口——充当主控制器和ENC28J60 之间通信通道。
2. 控制寄存器——用于控制和监视ENC28J60。
3. 双端口RAM缓冲器——用于接收和发送数据包。
4. 判优器——当DMA、发送和接收模块发出请求时对RAM 缓冲器的访问进行控制。
5. 总线接口——对通过SPI 接收的数据和命令进行解析。
6. MAC (Medium Access Control)模块——实现符合IEEE 802.3 标准的MAC 逻辑。
7. PHY(物理层)模块——对双绞线上的模拟数据进行编码和译码。
该器件还包括其他支持模块,诸如振荡器、片内稳压器、电平变换器(提供可以接受5V 电压的I/O 引脚)和系统控制逻辑。
奋斗板STM32 V3和ENC28J60的连接淘宝店铺:3奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程2. 轻型以太网协议栈uIP:开源的uIP软件包为嵌入式位处理器建立TCP/IP协议堆栈提供了一种解决方法。
它为互联网提供了一系列必要的协议。
对 代码和数据的内存要求量十分小。
uIP是亚当-邓克尔斯(Adam Dunkels)在瑞典计算机学院开发的。
uIP1.0版本实现了符合 IEEE802.3的比较重要的协议, 例如ARP,ICMP,IP,TCP,UDP等,详细手册可以参考光盘资料目录下的UIP1.0源码目录下的参 考手册。
本例程是选用了uIP1.0版本作为移植版本,移植到了基于STM32F103VET6控制的ENC28J60网络模块上。
实现了以下协议。
ARP:地址解析协议。
IP: 网际协议 ICMP: 因特网信息控制协议(包含了ping的响应) TCP: UDP: 传输控制协议(包含了TCP服务器,WEB服务器) 数据报协议(包含了UDP服务)3. 应用实例设计要求本例程移植uIP-1.0协议栈,演示开发板和PC间的TCP通信。
自定义了一个简单的应用层 有: (1)实现一个TCP服务器,可以通过PC机的TCP客户端控制板子上的LED (2)实现了一个简单的Web服务器。
可以通过PC的浏览器控制板子上的LED (3)实现了一个UDP服务器。
可以通过PC机的UDP客户端控制板子上的LED 本例程设置的缺省IP地址是 192.168.1.15,默认的TCP服务器监听端口是1200, WEB服务器监听端口80, UDP服务器监听端口 2000。
用户可以做如下测试: (1)ping 试验 (ICMP) 点击windows 开始-运行,执行cmd命令,然后在dos窗口输入 ping 192.168.1.15 应该看到如下结果: Reply from 192.168.0.15: bytes=32 time<1ms TTL=128 Reply from 192.168.0.15: bytes=32 time<1ms TTL=128 Reply from 192.168.0.15: bytes=32 time<1ms TTL=128 Reply from 192.168.0.15: bytes=32 time<1ms TTL=128 (2)PC机的TCP客户端控制开发板上的LED试验 (TCP服务器) 通信协议。
本例程实现的功能淘宝店铺:4奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程运行网络调试助手软件,端口选择1200,服务器IP地址选择192.168.1.15, 协议类型选择TCP客户端, 点击连接按钮,在命令输入窗口输入控制LED的命令字符串,然后点击发送,开发板上对应的LED灯会发生 变化。
命令代码如下: (末尾无0x00和回车字符) ledon 1 ledoff 1 ledon 2 ledoff 2 ledon 3 ledoff 3 ----- 点亮LED1 ----- 关闭LED1 ----- 点亮LED2 ----- 关闭LED2 ----- 点亮LED3 ----- 关闭LED3 (WEB服务器) 可以看到基于uIP的Web测试页面,在对话框输入1-3,点确定按钮,(3)WEB网页控制开发板上的LED试验打开IE浏览器,在地址栏输入http://192.168.1.15可以控制相应的LED点亮。
网页保存在httpd-fsdata.c的data_index_html数组里, 是通过amo的编程小工具集合转换的,可以 在奋斗论坛下载到。
(4)UDP服务器实验 本地UDP端口默认是2000, 远端UDP可以直接连接本地端口,并进行通信 命令代码如下: (末尾无0x00和回车字符) getname ledon 1 ledoff 1 ledon 2 ledoff 2 ledon 3 ledoff 3 ------返回板子的信息 ----- 点亮LED1 ----- 关闭LED1 ----- 点亮LED2 ----- 关闭LED2 ----- 点亮LED3 ----- 关闭LED33.2 硬件电路连接用网络线把PC和开发板连接起来。
需要注意的是,由于开发板断的网络芯片配置为10M 全双工。
由于该芯片不具有自动协 商功能,需要将PC端得网络设置为10M 全双工。
否则采用自动协商的话,会判别开发板采用的是10M 半双工, 由于开发板默 认的IP地址设置为192.168.1.15, 需要将连接的网络设备设置为192.168.1.X, 否则会引起不能正常通信。
3.3 软件程序设计根据任务要求,主程序内容主要包括: 1. 2. 3. 4. 5. 6. 7. 8. 9. 设置系统时钟为72Mhz 中断源配置 (采用了ENC28J60的中断接收模式) 串口1初始化(用于监视网络状态) GPIO接口初始化 (配置LED控制) SPI1接口初始化 (用于END28J60的控制) 网络配置初始化 (ENC28J60的初始化设置以及uip的接口函数设置) 创建TCP服务器端口及WEB服务器端口 根据接收的UDP包进行UDP初始化设置 (绑定远端及本地的IP及端口) 网络状态监控及响应。
整个工程包含6类源文件:淘宝店铺:5奋斗版 STM32 开发板例程文档———uIP1.0 ENC28J60 以太网例程Startup--startup_stm32f10x_hd.s由于奋斗板采用的是STM32F103大存储器芯片,因此采用STM32标准库自带的大存储器芯片启动代码,这个文件已经配置好了初始状态,以及中断向量表。
可以直接在工程里使用,如果你在以后的应用中采用了中存储 器或者小存储器STM32芯片,可以将启动代码换为startup_stm32f10x_md.s 或者startup_stm32f10x_ld.s。
FWLIB--stm32f10x_gpio.c ST公司的标准库,包含了关于对通用IO口设置的函数。
stm32f10x_rcc.c stm32f10x_USART.c ST公司的标准库,包含了关于对系统时钟及外设设置的函数。
ST公司的标准库,包含了关于串口的函数。
stm32f10x_SPI.c ST公司的标准库,包含了关于SPI的函数。
stm32f10x_EXTI.c ST公司的标准库,包含了关于EXTI中断的函数。