基于S3C2410A的MDB/ICP协议的实现

基于S3C2410A的MDB/ICP协议的实现

发布:2011-05-17 | 作者: | 来源: limaosheng | 查看:761次 | 用户关注:

MDB/ICP广泛应用于自助售卖系统,实际上已经成为自助售卖系统的行业标准通信协议。国内也有采用这个标准的产品,基本上都是采用51单片机作为硬件解决方案,让功能更强大的处理器S3C2410A支持该协议,可以大大提升自助售卖系统的软硬件功能。  基于ARM处理器提供了一种让高端处理器支持MDB/ICP的灵活方法,在该方法的引导下,也可以广泛应用在MIPS、Power PC等非ARM处理器芯片上,有很强的行业实用性。  1 MDB/ICP协议概述

     MDB/ICP广泛应用于自助售卖系统,实际上已经成为自助售卖系统的行业标准通信协议。国内也有采用这个标准的产品,基本上都是采用51单片机作为硬件解决方案,让功能更强大的处理器S3C2410A支持该协议,可以大大提升自助售卖系统的软硬件功能。

  基于ARM处理器提供了一种让高端处理器支持MDB/ICP的灵活方法,在该方法的引导下,也可以广泛应用在MIPS、Power PC等非ARM处理器芯片上,有很强的行业实用性。

  1 MDB/ICP协议概述

  MDB/ICP协议(Multi-Drop Bus/Internal Communication Protocol)是欧洲售货机制造者协会制定的一套用于协调自动售货机的主控制器(VMC)与多个外设(硬币机、读钞机等)之间通信的协议。硬币机和读钞机的标准首先是由Coinco在美国可口可乐公司的指定下开发的。这个标准于1993年被NAMA(National Automatic Merchandising Association)协会采用,经过一个专门的工作组修订后,于1994年被EVMMA(Euro-pean Vending Machine Manufacturers Association)采用。当前的最新协议版本version 4.O在2009年4月由NAMA和EVA(European Vending Association)共同制定。

  1.1 MDB协议串行位格式

  MDB接口是工作在9 600 bps波特率的主从型串行总线接口,所有外围设备(例如硬币机、纸币机、读卡器等)均为主控制器VMC的从机。所有外围设备与VMC之间的通信方式都一致。最多支持32个外设。

  MDB协议的串行位格式为:9600 bps、1个起始位、8位数据、1个模式位(mode bit)和1个停止位。

  1.2 MDB/ICP通信协议帧要求

  在MDB总线上,VMC通过广播方式向外发送命令。第一字节为地址字节(高5位为寻址信息,低3位为对外设的指令)。该字节被所有的外设读取,但只有符合地址字节所指定的外设才处理其后的数据字节,并做出反应。在VMC到外设的数据中,地址字节的方式位被置1,数据字节的方式位被置0,外设通过检验接收到的方式位确认是地址命令还是数据。当数据从外设发送到主机时(最长36字节),最后送出的字节方式位被置1,标志着数据发送完毕。

  VMC向外设传送的指令由一个地址字节、一些可选的数据字节与一个校验和(CHK)字节构成。发送指令后,外设应答VMC的通信块可以由一个数据块和一个CHK字节组成,或者一个应答字节(ACK),或者一个无应答字节(NAK)。如果外设应答数据块的话,VMC将通过一个应答字节(A-CK)、无应答字节(NAK)或发字节(RET)应答外设传回的数据。

  2 MDB/ICP协议应用

  自动售货机(Vending Machine)是一种全新的商业零售形式,20世纪70年代自日本和欧美发展起来。它又被称为24小时营业的微型超市。在日本,70%的罐装饮料是通过自动售货机售出的。全球着名饮料商可口可乐公司在全世界就布有50万台饮料自动售货机现在,自动售货机产业正在走向信息化并进一步实现合理化。例如实行联机方式,通过第三方无线网络将自动售货机内的库存信息和销售记录及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行,实现自动售货设备的全球连锁。并且可以通过第三方网络对售货终端进行远程控制和监测,通过以太网控制可以实现设备的云操作,将来也可以接入物联网实现web操作购物。在市场对功能提出日益复杂化的要求下,传统的51单片机+MDB设备的解决方案难以满足市场的需求。在ARM处理器日渐流行的今日,采用S3C2410A来作为VMC是满足客户需求的解决方案。S3C2410A芯片功能模块丰富,软件支持良好,可以使Linux操作系统实现更为复杂的用户功能需求。图1是港湾教育售货系统的框图。

港湾教育售货系统的框图

图1 港湾教育售货系统的框图

  由图1可知,该方案融合当前最主流的嵌入式系统接口,足以实现功能强大的售货系统来满足客户的需求。

  2.1 S3C2410A芯片UART串行位格式

  通过对S3C2410A数据手册的研读,会发现当前一些主流的处理器芯片,比如S3C2410A,UART模块不像传统的51单片机一样正好满足MDB协议的串行位协议格式,S3C2410A的UART数据格式:最高115 200 bps、1个起始位、5~8位数据、1个奇偶校验位(odd/even parity bit)、1或2个停止位。

  2.2 S3C2410A支持MDB/ICP应用方法

  如果要想支持MDB协议,S3C2410A没有mode bit可用,这样对MDB总线上的数据判断是地址字节还是数据字节和总线一帧数据什么时候结束在S3C2410A上无法判断识别,这对最初制定的方案提出了严重的挑战,迫不得已要对S3C2410A成为MDB/IPC协议的VMC设备的可能性进行预研,最直接的方式就是想到利用S3C2410A的可选的奇偶校验位的值来逆推MDB设备的mode bit的值,让奇偶校验位来充当MDB mode bit的作用,从而来判断出S3C2410A接收MDB设备传送的数据是否是结束了。经过分析就可以得到表1所列的推理。

表1

表1

  通过上面的分析,开始编写测试程序,结果发现S3C2410A的串口设计的一个bug:当配置UART LINECONTROL REG ULCONn的BITS[5:3]为“101”,选择evenparity接收MDB总线的数据的时候,无论是构造出来的数据1的位数为奇数个还是偶数个搭配具体的模式位,发现S3C2410A的UART errorSTATUS REG(UERSTATn)的bit2 frame. error位并不能准确的置位。想想S3C2410A这么流行的芯片竟然还有设计不完美的地方,几乎要放弃的时候,本着一切皆有可能的原则,既然芯片都不可靠了,就索性测试一下,按照表1把ULCONn的BITS[5:3]设置为“100”,选择odd parity接收数据。按常理推断even parity的结果应该和odd parity结果是一样的,抱着试一试的态度,构造测试代码,结果出现了明显的规律:当模式位为“O”的时候,UERSTATn的bit2 frame. error位可以准确的置位;当模式位为“1”的时候,UART TX/RX STATUS REG(UTRSTATn)的bit 0(receive buffer data ready)可以准确置位,正常接收数据。得到这个规律之后,2410 VMC设备就可以准确判断出MDB设备发送过来的数据是否是收到了结束标志。另外,当VMC向MDB设备发送数据的时候,可以按照协议要求当要发送地址字节时可设置ULCONn的BITS[5:3]为“110”,代表parity forced/checked as 1来把奇偶位强制1充当模式位,地址字节发送结束之后调整ULCONn的BITS[5:3]为“111”来发送数据字节。至此,S3C2410A充当MDB VMC设备可以得到完美的解决。下面是VMC接收总线数据的部分调试代码片段。VMC向总线发送数据相对比较简单,有兴趣的读者可以与笔者交流探讨。




  结语

  本文给出了一种在嵌入式处理器ARM(S3C2410A)上实现MDB/ICP协议的实现方法,在工程实践中,证明该方法准确可靠,满足了市场的需要,拓展了支持该协议的硬件平台,丰富了支持该协议设备的软件功能接口。本文的实现方法也可以应用在其他嵌入式处理器上。


自动售货机被称为“永不下班的超级营业员”。是 20 世纪 70 年代 在日本和欧美发展起来的高新技术产品, 这种零售方式已经在世界 65 个国家和地区出现。 自动售货机在日本被亲切地称为 “微 型小 店”。 “微型小店”出售的商品,从咖啡、香烟、各种酒类已经发展到部 分日常生活用品,就连报纸、大米、邮票、明信片、电池、录像带等也可 以 自 动 出 售。 在自动售货机的使用过程中,VMC (Vending Machine Controller)与外设(读卡器、硬币器、纸币器等)的通讯是很重要的,因 此,采用一种可靠的内部通讯总线协议非常必要。 MDB/ICP 协议是由 国家自动机械销售协会(NAMA)和欧洲售货机协会(EVA)的 有关成 员制订,用于协调自动售卖机的主控制器(VMC)与多个外设之间通信 的协议。 1 MDB/ICP 协议 1.1 简介 MDB 为一个主从结构的串行总线接口标准, 采用 9600bps 的波 特率通信。 主从操作模式,MDB 规定总线有唯一 1 个主机和最多 32 个外设。 每个外设有唯一的地址和命令。 所有通信的外设都是主机完 成初始化的。 1.2 通信格式 a.字节格式 一个字节被定义为 11 位的格式,1 个起始位+8 个数据位+1 个模 式位+1 位停止位;其中,模式位根据传递方式的不同分别置 0 或置 1: 当控制器 VMC 发送数据到外设时,模式位置 1 表示为地址字节,置 0 表示数据字节;当外设发送数据到控制器 VMC 时,模式位置 1 表示所 有字节发送完毕。 b.块格式 主到从: 控制器 VMC 传送给外设的数据由 1 个地址字节、若干数据字节 和 1 个校验字节组成,总数不超过 36 个字节。 地址字节包含两部分命令,高 5 位是外设的地址,低 3 位是外设 的命令。 主控器响应外设时发送应答(ACK)、非应答(NAK)、重发(RET)。 5ms 超时(无响应)等价于非应答。 如果从机地址在 5mS 内无响应, 主控器重发相同的命令或不同 的命令,直到收到从机的响应或达到最大无响应时间(硬币器为 2S、 纸币器为 5S)。 在这期间,主控器同时应该访问其他外设。 主控器可以通过拉低发送线(至少 100mS)对总线进行复位。 从到主: 一帧数据包含一个数据块、1 字节校验和、1 字节应答或非应答。 校验和字节包含在最大数据块(36 字节)之内。 外设响应主控器时,主控器必须响应一个应答,非应答或重发。 外设在相应 ACK 或 NAK 时无需校验和。 当外设发送一个数据块之后,主控器在 5ms 无响应时间之内必须 响应一个 ACK、NAK 或 RET。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值