基于stm32的智能建筑以太网与rs232数据传输网关的设计(编辑修改稿)内容摘要:

5 STM32的功能 及优势 有专门 以太网 MAC,还有 DMA 和硬件支持的 IEEE1588。 所以是低成本的网络化,还有精确的时钟同步。 MII 或 RMII 的以太网物理 PHY 接口,因此,我们可以非常灵活的选择物理 PHY 接口。 OTG PHY 的 USB OTG 全速的接口,所以,具有 USB 主机的功能,不再需要外置的 USB OTG 或 PHY. PLL 模块 , 配有 高级 的 时钟配置方案 为外设提供服务 , 目的就是为了更加的 灵活 ,而 且成本 也会更加的优化。 除此之外,我们也 可以 向 USB、 CAN 或者是 以太网 MAC 提供时钟 的控制。 启动模式 非常的灵活 ,可以 向很多的设备提供启动的服务,例如 CAN、 USART和 USB 等 设备 ,完全可以为这些设备的固件升级提供启动。 正是由于它 灵活的通信接口,所以在我们的启动程序出现故 障,在无法 擦除 的情况下 , 它一样的可以 保证新代码的烧录成功。 低功耗模式的灵活电源 ,还有时钟管理。 另外, 可编程唤醒功能的时钟和 84 字节的后备数据寄存器 的存在 , 也是它的一大优势。 正是因为 这个原因, 因此在运行的过程中 ,甚至 在 待机 的状态 时 都 会裁减应用系统,可以 使 性能和功耗 能长期的保持在 一个 相对 平衡 的状态 ,电池可以 为 RTC 的运行 提供充足的电能 ,同时 可以在 84字节后备寄存器中保持应用程序关键数据。 80 个 5v 容忍的通用 I/O 口,还支持 10 个定时器的串口,其他的例如: CAN、 USB、 USRT和 以太网 等都收到它的支持。 模拟功能一般包含 2个 DAC,还有完整的电源监控功能。 因为 STM32 芯片的 互联型产品 功能非常的齐全,是一个非常安全稳定的 通信中枢器件,所以, 在进行工作的时候,这些所有的功能模块都是可以同时工作的。 第三章 网关硬件设计 6 第三章 网关硬件设计 总体框架设计 为了能够极大地提高系统的稳定性和可靠性,也为了能够最大化地缩短开发时间和节约开发所花费的费用,在系统硬件的设计选型时, 能选取一种既具有以太网接口,又具有 RS232 接口的芯片当然是最好的结果了。 因为当我们需要的芯片同时具有了以太网和 RS232 的功能,那么在实现以太网和 RS232 的数据传输的时候,就会减少很多不必要的外围电路的设计了。 显然,尽量的减少对外围电路的设计,会减少我们设计的一大部分时间。 这样大大地提高了系统的利用率,同时也减少了成本。 因此,为了实现项目的开发要求,选用控制系统开发芯片 STM32f107 作为系统控制主芯片,它不仅广泛地用于工业方面,而且自身功能非常的强大。 对于 STM32F107 芯片来说,他不仅功能非常的强大,而且性价比也 是 非常的高。 它主要是以 CotexM3 内核 为基础而存在 的 32 位闪存微控制器, 它所采用的指令也是非常的高 端,是一种 高代码 、 高性能密度的指令集, 除此之外,还运用到了一个叫作 紧藕合嵌套向量中断控制器。 一般来说,配有 一个 RMII 接口 ,还有以太网接口和 RS232 接口。 正是因为它的配置齐全,所以它的优点就是低功耗,低成本和高性能等等。 设计的网关电路 将系统分为四个模块设计 如 下 : 图 31 网关电路 模块结构框 由图 31 可知, 以太网 可以通过双绞线与 STM32 芯片 相连,而 RS232 接口也 与 STM32芯片 相连。 这样一来,我们的 以太网就可以很容易地通过 STM32F107 芯片与 RS232 之间形成信息交换了。 当以太网需要 传送数据到 RS232 的时候,或者 RS232 需要传送数据到以太网的时候, STM32 芯片就显得格外的重要,因为它是协议转换的控制中心,第三章 网关硬件设计 7 不管是转换成以太网数据包还是 RS232 帧的数据,都是需要 STM32 来进行协议转换的。 所以必须对以上各个模块进行严谨的设计,才能使数据能够顺利的传输。 电源模块设计 在实验的设计过程中,要想使实验中的各个模块能够正常的运行 ,就需要对STM32F107 芯片 提供有效 且充足 的电源。 对于 STM32F107 开发板来说,供电方式一般有两种:第一种是 5v 电源适配器进行供电;第二种是 USB 串口进行供电。 而本设计主要用到的是 5v 电源适配器供电。 当我们直接把适配器的一端插在 220v 的插座上,一端接在 STM32F107 芯片 的 J6 上时,就能对 STM32 芯片 提供 5v 的电压了。 电路图如下: 图 32 5v 适配器供电电路 而无论我们采取什么样的供电方式对 STM32 芯片 进行供电,最后都会把 5v 的电源转换为 的电源为系统进行供电。 因此,我们选取 SPX1117 芯片来实现对 STM32 芯片 电压的转换, SPX 芯片是一种常用的 稳压芯片,能够产生 的稳压电源,对我们系统的正常运行至关重 要。 转换电路如下: 图 33 5v 转 电路 第三章 网关硬件设计 8 JTAG 下载电路 JTAG 的主要功能有两种:一种是对系统仿真调试,另一种是芯片内部测试, 一般来说, 标准的 JTAG 接口包括 四线: 第一条是 TD0(测试数据输出) 、 第二条是 TDI(测试数据输入) 、 第三条是 TMS(测试模式选择) 、 第四条是 TCK(测试时钟)。 JTAG 有 14 针的接口和 20 针的接口,在本次设计当中,我们采用的是 20 针的接口来进行调试电路和下载程序。 详细的接口电路图如下: 图 34 JTAG 下载电路 复位电路 复位电路是一 个很简单的电路,如下电路图所示,当按下开关 S2 的时候,电路接通,复位引脚电平就会降低,因此就达到了系统复位的效果。 一般来说,复位电路有两个作用,即可以对系统上电进行复位,又可以在系统运行过程中,通过按键来进行手动复位。 第三章 网关硬件设计 9 图 35 复位电路 以太网模块电路设计 当在实际的模块与模块间的设计过程中,怎样解决 STM32F107 芯片和以太网之间的连接,将是我们需要重视的问题。 对于这个设计而言,必须在芯片和以太网间加一个物理层的接口芯片才能完成连接,因此我们选取一个能支持 MII(介质无关接口)和 RMII(精简的介质无关接口)的 DP83848C 芯片,这是一款功能齐全,功耗低的单路物理层器件,它所具有的 MII 和 RMII 接口,可以让我们的设计变得更加的简单。 除此之外,这个芯片还支持 10BASET和 100BASETX的以太网外设,对于任何以太网的问题都有很好的兼容性和通用性。 下面是 STM32 芯片与 DP83848C 芯片的以太网接口硬件连接图: 图 36 STM32F107 以太网接口硬件连线设计 RS232通讯电路设计 一般来说, STM32F107 芯片 的接口电路的电平为 1TL,但是标准的 RS232 电平是采用负逻辑形式的,显然和 1TL 与 COMS 电平是完全不一样的,且规定 +3+15v 间的电平为第三章 网关硬件设计 10 逻辑“ 0”电平,而 315v 间的电平为逻辑“ 1”电平。 所以在设计通信的过程中必须采用电平转换的方法,以便使两者的电平相配。 因此,在这次设计中,我们采用的是 SP3232芯片来完成电平的转换工作。 详细的电平转换电路图如下: 图 37 RS232 电平转换电路第四章 软件介绍 11 第四 章 软件介绍 LWIP 协议栈简介 在网络传输中,为了顺利地完成通讯,必须使用具有多层 以上的多种协议,这些协议按一定的层次顺序组合在一起, 便会组成 一个协议栈( Protocol STack)了, 换句话说,也叫 协议族( Protocol Suite)。 LWIP 协议 其实 主要是一种 专门适用于嵌入式系统的 TCP/IP 协议栈 , 它的通俗意思 就是大家都熟悉的 Light Weight(轻型) IP 协议,在运行的范围方面,即可以移植到操作系统上运行,也可以在没有操作系统的情况下独立的运行。 LWIP 的主要目地 其实只有一个,那就是能够最大化的 减少存储器利用量和代码的尺寸, 一般情况下, LWIP 协议 能够在只有 几十 K 的 RAM 的情况下, 或者 在只有 40K左右的 ROM 的情况下 就可以 正常的运行, 正因为如此, LWIP 协议就可以很容易的 适合于空间 小的 和 资源有限的处理器, 例 如嵌入式系统。 为了符合 减少处理器和存储器的 设计要求, LWIP 可以利用 不需要任何拷贝的 API 进行裁减。 TCP/IP 协议是一个缩写的名称,其实它的全名 叫 做 传输控制 /因特网互联网协议( Transmission Control Protocol/Inter Protocol),它对 Inter 来说是非常的重要的,因为它是 互联网络的基础,也是 人们运用的 最基础的 传输 协议, 它的 组成 单元包括两种 : 第一种是 网络层的 IP 协议 ,第二 种是 传输层的 TCP 协议。 pbuf 结构体定义 LWIP 协议栈中的数据包是用 pbuf 结构体来进行定义的,该结构体的主要定义如下面所述: Struct pbuf{ Struct pbuf*next; Void*payload; u16_t tot_len; u16_t len; u8_t type; u8_t flags; u16_t ref; } Next 指针 的作用主要是 指向下一个 需要用到的 pbuf 数据包 ,其中, 当你要运用当前的数据包的时候,就需要用到 payload 指针, 而当前的 pbuf 长度则需要 totl_en 来表示,第四章 软件介绍 12 在 pbuf 链中接下来的 pbufs 的所有 len 领域的总数 也是需要 totl_en 来表示的 , 然而当前 pbuf 的长度 则是需要利用 len 来表示的 , flags 和 type 表示的是 pbuf 的类型,具体来说, pbuf 具有三种类型,分别是 pbuf ram、 pbuf rom 和 pbuf pool, ref 则包含一个参考计数。 LWIP 协议栈中各层的实现 的 接口: next 指针 一般会指向它的下一个接口 , ip_addr 表示的是 ip 地址,mask 表示的是子网掩码, gw 则表示的是默认网关。 他们三 个都是 都是由 IP 层调用的。 当硬件接收到数据包的时候, 系统 就会 马上 调用 input 指针指向该 函数 了 ;反之,当 IP 模块有数据包发送的时候,就会调用 output 指针指向的函数;当 ARP 模块有数据包发送时,同样会调用 linkoutput 指针指向的函数。 除此之外, if 还定义了一些状态回调函数,只有当配置了该功能时,才会使用。 层:在 IP 层中, LWIP 仅仅能够发送 、 接收和转发包,基本可以完成 IP 的基本功能,但是,它却不能够接收和发送已经被分割的 IP 包,还有一些带 IP 选项的包它也不能够处理。 所以,在需要接收 IP包的时候,我们需要先调用 ip_input()函数,然后,函数再通过网络接口的 IP 地址去检验目的地址,以确保数据包是否被发往主机。 当发送 数据 包时 ,是 需要调用函数 ip_output() 来完成接下来的流程,它可以启用合适的 函数 ip_route()去寻。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。