欢迎来到天天文库
浏览记录
ID:27518804
大小:93.50 KB
页数:7页
时间:2018-12-04
《Lon总线在图像采集节点中应用设计.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Lon总线在图像采集节点中应用设计 本文通过一个具体的实例,介绍了LonWorks技术在智能家庭的具体应用。LON总线是美国ECHELON公司1991推出的为集散式监控系统提供的实现手段,并有一系列完整的开发平台。 作者采用神经元芯片Neuron3150并配合W77E58单片机系列开发了低成本的图像采集节点,并能通过上位机向用户发送手机短信,有效地弥补了现在的智能住宅的不足。 1系统结构 本系统是智能家庭系统中的子系统,主要实现的是:当有人进入该区域时则立即进行图像采集,通过各个模块进行处理后经LON总线送入上位机并通知用户,该
2、系统属于家庭安全防范中的一部分。由于本文的需要,只设置了1个节点(也可以有多个节点)。设计中采用通用的LonWorks节点模块,以神经元芯片Neuron3150作为主控制端,W77E58单片机作为受控端进行图像采集处理。其系统总体框图如图1所示。 图1系统总体框图 2硬件设计 2.1ZM460图像采集模块 ZM460图像压缩模块采用JPEG压缩技术,是一种内置JPEG压缩功能的数字输出嵌入式摄像设备,图像具有多种分辨率,输出完整的JPEG文件并结合最适应的网络协议,将图像通过RS232/485串口输出图像。由于该智能节点实时
3、性要求不是很高,故本文采用W77E58单片机来控制。 2.2W77E58单片机芯片 W77E58单片机芯片是一个快速并与8051单片机兼容的微控制器,它的内核经过重新设计,提高了时钟的速度和存储器访问周期速度,W77E58的指令执行速度是标准8051单片机的1.5~3倍。在相同的吞吐量及低频时钟情况下,电源消耗也比8051单片机低。W77E58内含32KBFlashEPROM,工作电压为4.5V~5.5V,具有1KB片上外部存储器,当用户应用时使用片上SRAM,可节省更多IO口。FIFO存储器用作对ZM460图像采集模块所采集的图像
4、数据进行缓存,调节W77E58单片机与ZM460图像采集模块之间速度的差异,从而采集到完整图像。ZM460模块与W77E58单片机之间采用的是RS232接口。 2.3Neuron3150芯片 Neuron3150芯片是LON总线的核心,内部包括3个微处理器:MAC处理器、网络处理器、应用处理器。Neuron3150芯片[2]的IO8、IO10通过双排针IO口分别与W77E58单片机的串行通信口RXD、TXD连接。因为神经元Neuron3150芯片只支持半双工异步通信,所以应用程序处理器在处理其他事件时将不能够再顾及串行输入,有可能发
5、生丢失串口字符的现象。为解决该问题,可以使用硬件握手协议,Neuron3150芯片的IO0和IO1作为RST、CTS信号,分别与W77E58单片机的P2.4和P2.5引脚相连,为了增强驱动能力,中间再加1个反相器。如图2所示。 图2主从处理器的连接框图 2.4Neuron3150芯片收发器 收发器是智能节点与LON网之间的接口,是通信电路的核心。双绞线收发器是最通用的收发器类型。本设计采用变压器耦合型收发器FTT-10A。神经元芯片收发器的电路图如图3所示。另外,还有晶振电路、复位电路和Service电路等。晶振电路为Neur
6、on3150芯片提供工作时钟。复位电路用于在智能节点上电时产生复位操作。 图3Neuron芯片收发器连接图 2.5Neuron芯片与PC机的连接 Neuron芯片与PC机通过双绞线连接。主机是1台PC机,通过PCLTA可以自由地在LonWorks上进行网络通信。PCLTA(PCLonTalkAdapter)是一个网络适配器,在驱动程序的作用下,主机通过PCLTA上网,充当上位机的角色,它是LonWorks网络的一个特殊节点,其作用是:与神经元芯片进行通信及与外界进行通信(包括手机)。 3软件设计 单片机与Neuron315
7、0芯片之间的通信流程图如图4所示。 图4单片机与3150芯片通信流程图 3.1Neuron3150芯片程序 在Neuron3150芯片中,使用的IO口称为串口(Serial)输入/输出对象。管脚IO8、IO10分别设置为异步串行数据的输入线和输出线。该IO对象类型是用于使用异步串行数据格式传输数据的场合,如RS-232通信。传输格式是:1个开始位、1个数据位、1个停止位。输入串行IO对象将等待被接收的数据帧开始直到接收了202个以上字符所要时间才结束。限于篇幅,只给出下面接收程序: //接收程序: IO_0outputbi
8、tCTS; IO_1inputbitRTS; IO_10inputserialRXD; Networkoutputintfkmingling; When(io_change(RTS)to0) {
此文档下载收益归作者所有