基于LM3S6432 的串口以太网转换器的设计与实现
2013-12-29罗彩洪陈晓敦
摘要:对于当前物联网的应用及需求,以Cortex-M3芯片为模版,实现串口与以太网之间的数据转换与传送,该文简要介绍了转换设备的硬件与软件设计,通过实际应用验证其的可行性。
关键词:LM3S6432、Cortex-M3、串口、以太网
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)02-0252-05
近几年来,随着物联网的推广,越来越多的设备需要联入网路工作,通过现有的精简的TCP/IP协议栈来实现网路通信。对于现有的32位的ARM芯片来说,集成这样的一个带有TCP/IP协议的通信系统,是件很容易的事。但是对于8位的单片机来说却是件难事,固有的FLASH空间限制了其使用,那么使用8位单片机的产品就不能实现网路通信了吗?答案是否定的。串口以太网转换器就是将得到的8位单片机的串口,通过内部转换以网络帧的形式进行通信,以达到网络通信的目的,大大增加了原串口设备的远程控制收发的功能。
1 转换器的硬件规划与设计
转换器在MCU的选择上,根据功耗、存储空间,硬件特点等方面,我们选择TI公司的LM3S6432 作为转换器的主芯片。
如果说软件设计是系统的思想的话,那么硬件设计就是整个系统的躯干了。整个转换器在硬件设计上由核心板+底板+ 接线板构成,核心板可用于后期的芯片升级和更换,接主板提供了主要的供电和IO接口,接线板方便后期的线材链接。电源部分采用DC-DC电路作为系统电源部份,输入电压12V,输出为5V和3.3V两路。
本系统MCU芯片LM3S6432是LuminaryMicro(TI)公司推出的基于ARMCortex-M3嵌入式内核的微控制器。
该微控制器包括以下特性:32位ARMCortexTM-M3V7M架构;工作频率为50-MHz;96KB单周期Flash,32KB单周期访问的SRAM;3个通用定时器模块(GPTM),每个提供2个16-位定时器。;兼容ARMFiRM的看门狗定时器;局域网控制器,传输速率可达1Mb/S;以太网控制器,在100Mbps和10Mbps速率运作下支持全双工和半双工的操作方式,同步串口接口,2个完全可编程的6C550-typeUART,支持IrDA;3个10位模数转换器(ADC);2个独立集成模拟比较器;I2C模块在标准模式下主机和从机接收和发送操作的速度可达100Kbps,在快速模式下可达400Kbps;高达14-43个GPIO口,输入/输出可承受5V,片内低压差稳压器,具有可编程的输出电压;灵活的复位源;包括是上电复位(POR),软件复位,看门狗定时器复位;遵循IEEE802.3-2002规范的10/100M以太网控制器,集成了10/100Mbps收发器(PHY物理层),可编程MAC地地址、遵循IEEE1149.1-1990标准的测试访问端口(TAP)控制器通过JTAG和网络接口进行调试访问、完整的JTAG边界扫描。
本设计系统在MCU上已经基础了一个符合IEEE802.3-2002标准的工业以太网接口,并且内部集成了MAC+PHY层,外面只需要接一个网络变压器和RJ-45的以太网接口就可以很方便的实现以太网通讯了,在硬件设计上非常的简便,并且稳定,成本降低,图1就是实际设计中以太网控制的连接图。
图1 以太网Ethernet通讯接口部分
LM3S6432内置的以太网控制器由一个完全集成的Media Access Control( 即MAC介质访问控制器)和Physical Layer( 即PHY网络物理层)等接口器件组成。LM3S6432的以太网控制器也是遵循IEEE 802.3 协议规范的,对于10BASE-T 和 100BASE-TX的标准完全支持。 因此我们在做系统设计师时只需要在外围接入一个双路 1:1隔离变压器就能与线路相连,实现网路通信。
电路连接描述:
在电路的连接上,我们考虑到LM3S6432内部已经集成了MAC和PHY两个模块,且与ISO模型的1,2层相对应,芯片本身可以实现以太网帧的发送和接收处理。因此我们只需要接入一个网络变压器,通过RJ45接口隔离不同设备之间的电平不同,增强信号以实现IP网路的通信的功能。
UART部分:
Stellaris®通用异步收发器(UART)具有完全可编程、16C550型串行接口的特性。LM3S8962控制器带有2个UART模块。支持IrDA 串行红外(SIR)编码器/解码器,用户可以根据需要对IrDA串行红外(SIR)或UART输入/输出端进行编程,IrDASIR编码器/解码器功能模块在半双工时其数据速率可高达115.2Kbps,可编程的内部时钟发生器,允许对参考时钟进行1到256分频以得到低功耗模式的位持续时间。
图4 UART结构图
2 转换器的软件规划与设计
在软件设计上主要分为两大部分,一部分为以太网的信号处理,一部分为串口通信数据处理,软件设计在结构上采用模块化的设计方法,各个功能为一个模块。
1)串口接收部分
Stellaris通用异步收发器(UART)的API接口提供了一组使用StellarisUART模块的函数。提供的函数用来配置和控制UART模块的发送和接收数据、管理UART模块的中断。通过对UART控制寄存器(UARCTL)的RXE位进行设置,将UART配置成接收。由于复位完成后,发送和接收都是使能的。可以通过将UARTCTL寄存哭喊的UARTEN位清零来实现。
代码如下:
2)以太网处理部分
Stellaris 以太网控制器由一个完全集成媒体访问控制器(MAC)和一个网络物理(PHY )接口器件组成。以太网控制制器符合IEEE 802.3 规范和完全支持10B ASE-T 标准与100BA SE-TX标准。 以太网API 提供这样一组函数:以太网控制器需要用这一组函数来执行这个以太网控制器的一个中断驱动的以太网驱动程序。函数被提供来配置和控制MAC,以便访问在PHY设置的寄存器,以便发送和接收以太网包,并配置和控制可用的中断。
要使用以太网控制器,外设必须通过置位RCGC2寄存器的EPHY0和EMAC0位来使能。然后 ,使用以下步骤来配置以太网控制器执行基本的操作。
(1)编程MACDIV寄存器在内部MII上获得一个2.5MHz的时钟(或更小的时钟)。假设系统时钟为20MHz,则MACDIV的值就是4。
(2)编程MACIA0和MACIA1寄存器进行地址过滤。
(3)使用值0x16编程MACTCTL寄存器,实现自动CRC产生、填充和全双工操作。
(4)使用值0x08编程MACRCTL寄存器来拒绝带有坏FCS的帧。
(5)通过置位MACTCTL和MACRCTL寄存器的LSB来使能发送器和接收器。
(6)要发送一个帧,就使用MACDATA寄存器将该帧写入TXFIFO。然后置位MACTR寄存器的NEWTX位启动发送过程。当NEWTX位被清零后,TXFIFO就可用于下个帧的发送。
(7)要接收一个帧,就必须等到MACNP寄存器的NPR域为非零值。然后使用MACDATA寄存器开始将帧从RXFIFO中读出。当帧(包括FCS字段在内)被读取后,NPR域的值应当减1。当RXFIFO中没有帧时,NPR域将读出为零。
代码如下:
3 结束语
通过实际的应用说明了串口转以太网的可行性及可靠性,降低了生产中系统投入的成本,增强了系统的可靠性和可拓性。电路简单、成本低廉。目前已应用于某公司的实际产品中。
参考文献:
[1] 吴春锐,张志凯.基于LM3S6432的嵌入式以太网转串口模块设计[J].电脑编程技巧与维护,2012(2):76-78.
[2] 殷伦,王英民.串口联网技术在远程设备控制中的应用[J].电声技术,2007 31(12):46-47,55.
[3] 陈晓敦.多路(单平台)称重传感采集控制系统的设计与实现[D].福州:福州大学,2012.