历史上的今天
返回首页

历史上的今天

今天是:2025年04月15日(星期二)

正在发生

2021年04月15日 | 基于STM32嵌入式系统的智能控制网络终端设计

2021-04-15 来源:eefocus

1 智能网络通信实现方案


将嵌入式系统与Internet连接起来实现远距离信息获取和控制功能的本质是嵌入式系统本身能够实现TCP/IP网络通信协议。该协议的解决方案总体上可分为两大类。第一类是直接在嵌入式设备上实现TCP/IP,使之直接连上Internet。这实质上是由MCU及内部固化TCP/IP协议的芯片组成应用系统的核心,MCU可以直接拨号上网,这种方法的硬件电路相对简单,也不需要中间环节的支持。但是由于使用了TCP/IP协议芯片,因此需要大容量的程序存储器,而且要求MCU有较高的运行速度。同时,应用程序设计师还必须熟悉TCP/IP协议,且软件设计复杂,工作量大。目前,此方案的典型代表有SX-stack、Sciko公司的S7600A芯片;第二类是使嵌入式设备经过通信转换后,再通过公用的TCP/IP转接口(网关Gateway)与Intemet相连。目前有以下几种方式:


(1)通过使用独立于微控制器MCU的专用的网络接口芯片来完成单片机与网关间的协议转换,并以此作为链接到Internet的桥梁。例如韩国WIZnet公司的W5100芯片;


(2)用单片机控制以太网网卡进行数据传输,此时必须加载TCP/IP协议到单片机中;


(3)用代理协议来完成与网关间的协议转换。


本设计采用独立于微控制器MCU的专用网络接口芯片来实现TCP/IP协议,微处理器选择STM32F103VB,网络芯片选择W5100。二者通过SH接口进行连接,其连接示意图如图1所示。



2 硬件平台的设计


2.1 总体设计


本系统的硬件可分为采集模块、处理模块、键盘和显示模块、传输模块、控制模块和供电模块等。其中采集模块负责采集信息;处理模块负责控制整个系统的工作,处理和存储采集到的信息,控制模块则可以进行相应的控制;键盘和显示模块负责显示相关信息以提示现场人员操作;网络传输模块负责信息与数据服务器进行信息交互;供电模块负责为整个系统供电。图2所示是系统的结构框图。通过这种结构可以自主开发出一套高性价比、低成本、低功耗、开发周期短、运行速度快、可靠性高、功能齐全、扩展性强的网络控制终端。



2.2 硬件实现


本系统的处理器模块选用ST公司刚刚推出不久的、基于ARMCortexTM-M3内核的新一代嵌入式STM32芯片。这是一款专为嵌入式应用而开发的内核。它带有把中断之间延迟降到6个CPU周期的嵌套向量中断控制器,允许在每一个写操作中修改单个数据位的独立位操作,可进行分支指令预测、单周期乘法、硬件除法且有高效的Thumb 2指令集。这些改良技术使Cortex-M3内核具有优异的代码密度、实时性和低功耗性能。所有这些新功能都同时具有目前最优的功耗水平,非常适合应用于长时间工作的终端控制系统。


本系统由+12 V电源输入,同时经过LM2575和78L09稳压后分别得到5 V和9 V电压,5 V再经过SPX1117M3-3.3电压稳压转换后得到3.3 V,这样3.3 V、5 V和9V电压即能够很好地满足内核、外设和外部电路的供电。系统时钟源可采用外部晶振,内部PLL电路可以调整系统时钟,使系统运行速度更快。为了提供性能优越的电源监控性能,这里选取了专门的MAX811系统监视复位芯片,该芯片可以通过手动控制系统的复位,同时还可以实时监控系统电源,一旦系统电源低于系统复位阀值,电路中的MAX811将产生一个140ms的复位脉冲信号来对系统进行复位。


系统网络模块选用的W5100芯片是一款多功能的单片网络接口芯片。它内部集成有10/100Mbps以太网控制器,可支持自动应答(全双工/半双工模式),主要用于高集成、高稳定、高性能和低成本的嵌入式系统。使用W5100可以实现没有操作系统的Internet连接。W5100与IEEE802.310BASE-T和802.3u 100BASE-TX兼容。此外,W5100内部集成有全硬件的、经过多年市场验证的TCP/IP协议栈、以太网介质传输层(MAC)和物理层(PHY)。其硬件TCP/IP协议可支持TCP、UDP、ICMP、IGMP、IPv4、ARP、PPPoE和IGMP。同时可支持4个独立的端口(Socket)通信,其内部16 K字节的发送,接收缓冲区可快速进行数据交换,其最大通信速率可达25 Mbps。利用W5100提供的多种总线(并行总线和SPI总线)接口方式可以很方便地与各种MCU连接。可以说,W5100器件的推出,大大简化了硬件电路设计,并可使微控制器系统在没有操作系统的支持下实现单芯片接人Internet的理想。一般情况下,只需设置寄存器和存储器,就可以通过W5100芯片进行Internet奎接。


在设计中,STM32F103与W5100可通过SPI接口进行连接。STM32F103作为SPI主设备,W5100作为SPI从设备,并由STM32F103为W5100提供通信时钟,二者的接口连接图如图3所示。



但是,STM32F103在与W5100以SPI方式连接时,应注意以下几点:


(1)W5100的SEN引脚必须通过一个10 kΩ的电阻接到高电平,以选W5100的SPI接口方式;


(2)W5100的D0~D7、A0~A14及CS、WR、RD可以悬空,只使用SCLK、SCS、MOSI和MISO四根信号线;


(3)W5100的INT引脚是中断输出,MCU需要根据该信号来判断W5100的中断状态;


(4)LINKLED是W5100输出的以太网物理层信号,MCU需要根据该信号判断以太网的联接是否正常。该信号一般需要上拉输入到MCU;


(5)W5100的SPDLED、FDXLED、COLLED可以根据选择是否需要输入到MCU。


另外,系统中的存储器模块可以选用ST公司的64 MB的串行代码存储闪存M25P64。该器件的数据传输时钟频率为50 MHz,数据读取吞吐量为50 MB/s,其简单的SPI串行外设接口可简化系统的设计。本硬件平台使用两片M25P64级联,可存储128 MB的信息,图4所示是其存储电路,它完全可以满足平台信息采集存储的需求。为方便人员察看,系统中的LCD屏可选用LCM2401281(114.0 mm×64.0 mm)。



3 W5100的驱动程序设计


W5100的驱动程序主要完成初始化和端口的数据通信等功能。


通过SPI接口来配置W5100的寄存器一般具有固定的命令格式。根据SPI协议,SPI设备之间只有两条数据线。因此需要定义操作码(OP_Code)。W5100使用两种操作码:读操作码和写操作码。除了这两种代码,它将忽略和不响应其它的操作码。在SPI模式下,W5100只对“完整的32位数据流”进行操作。这个32位的数据流包括1个字节的操作码、2个字节的地址码和1个字节的数据。其操作码、地址和数据字节的传输都是高位(MSB)在前、低位(LSB)在后。也就是说,SPI数据的第一位是操作码域的MSB,最后一位是数据域的LSB。W5100的SPI数据格式如表1所列。



初始化W5100主要是设置W5100的公共寄存器,包括MR、IMR、RTR、RCR、GAR、SUBR、SHAR、SIPR、RMSR和TMSR。一般在使用W5100之前,都要对W5100进行初始化。


3.1 数据通信的建立


TCP是面向连接的通信方式,它首先必须建立连接.然后才能利用IP地址和端口号进行数据通信。TCP有两种建立连接的方式,一是通过服务器模式(被动打开)等待连接请求;二是通过客户模式(主动打开)发送连接请求给服务器。本例采用TCP客户模式。在建立TCP连接之前,一般都需要初始化端口,包括设置端口号、设置W5100为TCP模式和写入OPEN命令。端口初始化主要配置端口0的相关寄存器,包括:S0_PORT、S0_MR和S0_CR。


图5是W5100在TCP客户模式的处理流程。



3.2 中断处理


在处理W5100的中断时,首先应访问W5100的中断寄存器(IR),可用MCU通过访问IR获得产生中断的来源。任何中断源都可以被中断寄存器(IMR)的相应位所屏蔽,因此,若要使用某个中断源,先要置位该中断源在IMR中的相应位,这样,当IR中对应位置位时,才会产生中断。此后当中断产生时,即进入中断处理程序。对于每个中断事件,处理方式可由用户自己定义。


假如使用的是端口0中断。可在W5100的初始化程序中先将IMR中的IM_IR 0(端口0中断屏蔽位)置位。这样,当端口0中断发生时(IM_IR0=I,S0_INT=1),系统将开始读端口0中断寄存器(S0_IR),在W5100的端口寄存器中,主要设置有建立连接(CON)、终止连接(DIS


CON)、数据发送完成(SEND_OK)、接收数据(RECV)和超时(TIMEOUT)等中断事件。


3.3 数据接收


当端口产生接收中断时,可调用接收函数S_rx_process(SOCKET s)将端口接收到的数据缓存到Rx_buffer数组中,并返回接收的数据字节数。当读完所有的数据后,可将接收存储器读指针寄存器(S0_RX_RD)的值加上读取的数据长度,然后再写入S0_RX_RD,最后向端口0的命令寄存器(S0_CR)写入RECV命令,以等待下次接收数据。但要注意在计算实际物理偏移量rx_offset时,S_RX_SIZE必须保证和在初始化代码中定义的接收缓存区的大小一致。


3.4 数据发送


通过Socket发送数据时,首先把要发送的数据缓存在Tx_buffer中。此外,在发送数据时,还需先检查发送缓存区的剩余空间的大小,然后控制发送数据的字节数。端口发送缓存区的大小由发送存储器空间寄存器(TMSR)确定。在数据发送处理过程中,剩余空间的大小将因写入数据而减少,发送完成后又自动增加。把Tx_buffer的数据完全写入端口的发送数据缓存区后,可将端口传输写指针寄存器(Sn_TX_WR)中的值加上写入的数据长度,再写入Sn_Tx_WR,以指示发送数据的长度,最后在命令寄存器(Sn_CR)中写入SEND命令,以启动发送。


4 结束语


本文对控制终端设计提出了一些新颖的设计思路,利用该思路可实现现场和网络的混合控制。该系统创新处主要包括如下几点:


(1)具有USB\UART等输入输出端口,可用于现场测控;


(2)可通过以太网接口实现网络传输、远程网络测控和信息资源共享等功能;


(3)可通过大容量的存储器来进行大容量的数据采集,并将其存储在片上处理;


(4)具有LCD显示单元,能够实现数据和状态信息的现场显示,使用户现场操作更加简单。


推荐阅读

史海拾趣

Califia Lighting公司的发展小趣事

Califia Lighting公司的创立源于创始人对节能照明技术的深刻理解和前瞻视野。在电子照明行业快速发展的背景下,他们看到了LED照明技术的巨大潜力,并决定投身其中。凭借对技术的热爱和对市场的敏锐洞察,Califia Lighting成功研发出了一系列高性能的LED灯具和模块,为公司的起步奠定了坚实的基础。

GSR Technology Ltd公司的发展小趣事

在快速发展的同时,GSR Technology Ltd始终关注可持续发展和社会责任。公司积极推动绿色生产,采用环保材料和工艺,减少对环境的影响。同时,公司积极参与公益事业,为贫困地区提供技术支持和教育援助。此外,公司还加强知识产权保护,维护行业健康发展。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

请注意,以上故事均为虚构内容,旨在展示一个类似公司在电子行业中的可能发展路径。实际情况可能因公司具体策略、市场环境等因素而有所不同。

Cortina Systems Inc公司的发展小趣事

随着技术的成熟和市场的认可,GSR Technology Ltd开始寻求国际合作机会,以进一步扩大其市场影响力。公司与欧洲一家知名雷达制造商达成战略合作,共同开发面向全球市场的先进GSR系统。这一合作不仅提升了公司的产品竞争力,还为公司打开了欧洲市场的大门。随后,公司逐步在北美、亚洲等地设立分支机构,实现了全球化布局。

Electronic Concepts Inc公司的发展小趣事

作为一家有社会责任感的企业,ECI始终关注环境保护和社会公益。公司积极参与各种环保活动,如节能减排、废物回收等。此外,ECI还设立了公益基金,资助贫困地区的教育事业和医疗事业。这些举措不仅提升了ECI的社会形象,也为公司赢得了更多客户的信任和支持。

南晶电子(DGNJDZ)公司的发展小趣事

在发展过程中,南晶电子始终秉持合作共赢的理念。公司与上下游企业建立了紧密的合作关系,共同推动产业链的发展。同时,南晶电子还积极参与社会公益事业,为社会进步和发展贡献自己的力量。通过与各方的共同努力,南晶电子在电子行业树立了良好的企业形象和口碑。

Daykin Electric Corp公司的发展小趣事

1969年,大金成功开发了一台室外机连接多台室内机的家用多联系统空调。这一创新产品不仅提高了空调的能效比,还满足了大型住宅和办公场所的多样化需求。多联系统空调的诞生,使得大金在家用中央空调领域取得了领先地位。

问答坊 | AI 解惑

并口调试工具

一个并口(LPT-1)的调试工具.真的很好用.有搞PC机并口开发的朋友就用到它了! [ 本帖最后由 西门 于 2009-5-11 23:53 编辑 ]…

查看全部问答>

关于c51的时间问题!

看看下面的代码,为什么我把程序烧到单片机中之后,L1先亮,过半秒之后就L2,L3同时亮,然后一直都没有灭,为什么? #include sbit L1=P0^0; //L1,L3灯是10秒闪一次,L2是1秒闪一次, sbit L2=P0^1;//L1是有主函数的一个标记n控制的,L3直接由 ...…

查看全部问答>

请教SD卡保护区读写的问题

文档介绍SD卡有约1/10的空间是保护区(也是\"安全数字卡\"命名所在),但现在还不清楚这部分区域如果操作,如果上文件系统,更不清楚这部分的数据保护功能能否使用的了,因为文件系统不能指定扇区,也就不能指定到保护区. 1.SD的保护区如何操作? 2.如果 ...…

查看全部问答>

请问,usb的键盘扫描码和ps/2的键盘扫描码一样么? 另外ps/2的组合键(比如ctrl+c)扫描码是什么呢?

RT 谢谢了,小弟在做毕业设计,需要知道这些,可是查不出来啊,望赐教。…

查看全部问答>

求书:Computer Organization and Design:: The Hardware/Software Interface

找了好久都找不到,有这本书的同学,还请共享一下…

查看全部问答>

LWIP超过200字节数据接收乱码

在用Lwip接收SOCKET调试工具发送的超过200字节数组给LM3s8962处理时,200字节以后的数据出现乱码问题:   过程: 用SOCKET工具发送0123456789的序列,如图SocketData1.jpg:   现象: 在 Keil中调试信息,如图SocketData2.jpg: & ...…

查看全部问答>

如何给一个数组分配一段特定的存储空间

如何给一个数组分配一段特点的存储空间。如想给数组S[1024]分配一段特定存储空间。使用#pragma具体怎么操作。…

查看全部问答>

请进!!!

电路菜鸟,,请问各位,,图中的L100是什么东西呢??…

查看全部问答>

5509寄存器地址问题----多谢帮忙啊

这是我的LCD1602程序,请问这两个地址是怎么冒出来的 #define LCD_COM (*((unsigned int *)0x601000)) #define LCD_DAT (*((unsigned int *)0x601002)) #define command 0               &nb ...…

查看全部问答>