CcTalk (网络协议)
本文介绍的是一种串行协议。
ccTalk (发音作"see-see-talk")是一种广泛使用的串行协议,遍及货币交
易和销售时点情报系统行业。如硬币和纸币验钞机等外部设备在多元
化的自动支付设备如交通,票务,投币电话,娱乐设备,以及零售现
金管理中建立,使用 ccTalk 与主机控制器通信。
该协议是在一家位于英格兰西北部港市曼彻斯特郊外的名为 Coin
Controls (因此 coin-controls-talk),(后名为 Money Controls,自 2010 起
叫 Crane Payment Solutions)的公司开发的,主要由工程师 William
Barson 完成。该协议的第一个版本发布于 1996 年。
该协议使用类似 RS232 的方式进行字符帧的异步传输。其主要区别是,
它为半双工通信使用单一的双向通信数据线而非分开的传输和接收
线。 它在 TTL voltage 下操作,并且是‘multi-drop’的,即外围设备
可以连接到一个共同的总线和在逻辑上是由设备地址分离。在 ccTalk
总线上的每个外设都必须有一个唯一的地址。
初始的协议操作于于 4800 波特后续版本的标准化在 9600 波特。低成
本的桥接芯片现在可以从很多厂家得到以允许 ccTalk 以至少 1 Mbit/s
的波特率通过 USB 接口运行。
ccTalk 协议堆栈已经从极小的 512 字节的 ROM 微芯片微控制器到强
大的 ARM7-32 位处理器的范围的设备上实现。
该协议支持用于电子设备的所有标准操作如固件闪存升级,数据和详
细的诊断信息的安全传输.
ccTalk 的优势包括低成本 UART 技术,简单易懂的数据包结构,易于
扩展的命令接口和无需许可的要求。后者使得协议在类似开源软件这
样拥挤而竞争激烈的领域得到了很好的普及。
在 2010 年,DES 加密被加入了特定命令以便对对总线的攻击做出更
具弹性的处理。
一个 cctalk 信息包示例[编辑]
TX data = 002 000 001 245 008 _____
• 002 = 目标地址
• 000 = 零数据字节
• 001 = 源地址
• 245 = 命令头‘请求设备类别 ID’
• 008 = 校验和 ( 002 + 000 + 001 + 245 + 008 = 256 = 0 mod 256 )
这是从地址 1(主机)发至外设地址 2 以查明其是什么的信息。
RX data = 001 013 002 000 067 111 105 110 032 065 099 099 101 112
116 111 114 022
• 001 = 目标地址
• 013 = 13 个字节的数据
• 002 = 源地址
• 000 = 应答头
• 067…114 = ‘投币’的 ASCII 码
• 022 = 校验 (所有数据包的字节总和是零)
从地址 2 返回至地址 1 的应答将其标识为投币。
硬币和票据命名[编辑]
多年来形成了许多源于 ccTalk 的相关的标准。例如,全球标签识别世
界的永久性替换硬币和钞票。
在 ccTalk 中一个 a coin 有 6 个字符的标识符。 <2-字国家代码><3-l
字值><1-字版本代码>
国家代码由 ISO 3166 确定。发行代码指定到不同的发行日期或相同硬
币的特别币种。
e.g.
• US025A United States 25c
• GB010B Great Britain 10p
• EU200A Euro 2€
钞票效仿了相同的形式,但是分配了 4 个字符给值,并且有一个相关
的比例转换因子,通常是 x100,以及国家。
e.g.
• US0001A United States $1
• GB0020A Great Britain £20
• EU0005A Euro 5€