ETC系统中FM0软件解码的设计
2017-10-12张劲松
李 焱,张劲松
(1.武汉邮电科学研究院 湖北 武汉 430074;2.武汉长江通信智联技术有限公司 湖北 武汉 430074)
ETC系统中FM0软件解码的设计
李 焱1,张劲松2
(1.武汉邮电科学研究院 湖北 武汉 430074;2.武汉长江通信智联技术有限公司 湖北 武汉 430074)
在电子不停车收费(Electronic Toll Collection,ETC)系统中车载单元(On Board Unit,OBU)与路侧单元(Road Side Unit,RSU)的短距离通信需要较高的实时性和可靠性,无线链路使用的是频点在5.8G的FM0编码,FM0编码其特点有便于位同步提取、频谱带宽较窄、实现电路简单等。针对ETC中的FM0编码,讨论了使用意法半导体公司的STM32L0系列低功耗单片机通过C语言在IAR编译环境下实现FM0解码,并使用示波器验证出该FM0软解码方法30uS内即可解出,实时性达到需求。
FM0;短距离通信;ETC;数据解码
Abstract:Short distance communication in electronic toll collection(ETC) system requires high real time and reliability between OBU(on board unit) and RSU(road side unit).The frequency point of ETC system is 5.8 G and the wireless link is using FM0 encoding,because of it's easy to bit-synchronization extraction, the spectral bandwidth is narrow, the realizing circuit is uncomplicated, etc.According to the FM0 coding theory,this paper discusses achieving the FMO decoding by using C Language Programing and the STM32L0 Series low power consumption MCU of STMicroelectronics in the IAR Embedded System development environment.In the end,the feasibility of the FM0 soft decoding method is verified by using the oscilloscope,it only takes 30uS to decode one FM0 frame.
Key words:FM0;DSRC;ETC system;data decoding
经过不断探索和实践,中国ETC的建设有了飞快的增长。截至2016年3月,高速ETC全国联网运行了半年,总用户数达3 200万,覆盖超过29个省份,跨省通行交易量1.2亿笔。ETC系统是建设智能城市和智能交通的重要部分,它有效地减少了停车收费造成的拥挤及延误,为用户极大地节省了出行时间,同时为降低资源消耗、减少环境污染做出了贡献[1-2]。
在ETC系统中,按照中国国家标准GB/T20851-2007中所述,我国ETC系统的无线数据通信使用FM0编码,但当前FM0的编解码仍然是ETC系统中一个重难点。虽然现已有少数射频芯片自带FM0的编解码功能,只需对其进行相应的配置就可以通过SPI接口向射频芯片发/收数据后由射频芯片进行硬件的编/解码,但是使用该方案成本较高且不通用[3-4]。本文针对未使用FM0编解码功能的5.8 G射频芯片ET6602和STM公司的STM32L0系列低功耗单片机,设计和实现了ETC电子标签的FM0软件解码。ET6602是一个高度集成的5.8 GHz射频收发芯片,其待机时的电流只有3 uA,成本较低,是使用在OBU上的理想射频芯片。STM32L0系列是ST公司在2014年推出的基于ARM Cortex M0+内核的超低功耗MCU。其待机电流仅为400 nA,唤醒时间仅3.5 uS;在运行模式下,功耗也只有 139 μA/MHz,优化运行模式下,功耗下降到87 μA/MHz,而且有足够的片上外设,适合在OBU上作为主处理器[5]。
1 ETC系统中FM0 的编码原理
FM0编码(即Bi-Phase Space)即双相间隔码编码,每个新的比特到来时会发生电平跳变,“1”在一个比特的中间没有跳变,“0”在一个比特的中间也发生跳变[6]。同时在国标GB/T 20851.1-2007电子收费,专用短程通信第2部分中规定了在ETC中的链路层FM0的数据帧格式[7]。ETC系统中FM0数据帧的长度是不定的,为了确保标志字的唯一性,帧起始标志和帧结束标志格式均为二进制序列0111 1110(0X7E),当收到多个连续的起始标志时,以最后一个作为帧的起始。开始标志到结束标志之间称为一个数据帧。在数据帧的头7E标志前还有用于同步的前导码16个“1”和16个“0”,数据帧的尾7E标志后还有后导码8个“0”。为了保证透明传输,发送端在发送数据时连续发送5个“1”后插入一个“0”;接收端在收到连续的5个“1”再判断后一位,如果第六位是“0”则自动删去后面的“0”,如果第六位是“1”则再判断后一位,如果第七位是“0”则是帧起始或者帧结束标志,如果第七位是“1”则接收端判断该数据帧无效后舍弃[8-9]。RSU下行数据速率达到256 kbps,所以对“0”而言,数据边沿之间的宽度只有1.95 us。对“1”而言,数据边沿宽度只有 3.90 us[10]。
简单而言在ETC系统中的FM0编码即不变则为“1”,变则为“0”,五个“1”后就插“0”。 FM0 编码的示意图如图1所示。图1中CLK:数据时钟;DATA:数据;FM0:FM0码的波形输出。
图1 FM0编码示意图
2 FM0软解码的实现
根据 ETC中 FM0编码的数据“0”和“1”的宽度不一样,软解码可以通过计算数据的电平宽度实现。FM0软解码通常有两种方式,其一是通过定时器捕获数据沿,然后通过软件判断数据边沿之间的宽度。其二是定时采样数据口线的电平,通过计数方式得到电平宽度。
本设计采用第一种方式,在数据接收过程中,将STM32L0的通用定时器TIM2配置为捕获模式,每1.95 us或者3.90 us捕获到一个跳变的边沿,然后把两次数据沿的值之差保存到对应寄存器,定时器最快会每1.95 us更新一次数据。这样以来MCU在1.95 us之内必须完成所有的解码过程,包括判断“1”、“0”,字节拼接,判断是不是“0X7E”和删除多余的“0”。否则,定时器捕获寄存器会被新来的数据覆盖掉,导致解码产生错误。该方式的难点在于要在1.95 us内完成以上所有的动作MCU必须要有足够高的主频,但是在OBU上一旦使用了高速的MCU,其功耗往往难以满足要求[11-12]。
在本设计中,巧妙地利用STM32L0低功耗单片机的通用定时器TIM2的从复位模式和使用DMA传输的方式可以达到1.95 us内解码的要求。根据STM32L0的手册所述,TIM2的从复位模式是指计数器开始依据内部时钟计数,然后正常运转直到TI1出现一个上升沿;此时,计数器被清零然后从0重新开始计数。如图2所示,TIM2配置为上下边沿捕获模式,在1.95 us或者3.90 us捕获到一次上升或下降沿时,定时器的当前值被锁存到捕获寄存器TIMx_CCR1中,这时也会产生一个DMA请求,触发与TIM2绑定的DMA通道,自动将TIMx_CCR1中的值搬运到MCU;与此同时TIM2的复位也被触发,计数器被清零然后从0重新开始计数,即TIMx_CCR1重新从0开始往上计数,如此往复[13]。
通过这种方式可以直接将定时器捕获计数器TIMx_CCR1中的数据自动归零,同时将要解码的值直接搬移到MCU。MCU便可以直接通过DMA传过来的值判断“1”、“0”,不需要频繁的进出中断去取数据,也不用担心捕获寄存器数据的丢失,整个数据接收过程不需要MCU的参与,MCU需要处理的流程大大减少,只需专注于解码过程,使得MCU主频不再是FM0解码的瓶颈。
DMA将FM0数据帧自动搬移到MCU时,需要申请缓存,存放DMA搬移过来的数据,MCU再对这些数据进行解码。ETC系统中最长的数据帧可以达到128个字节。如果收到的数据是全1,1个字节需要采集8次边沿,需要内存1 024个字节;如果收到的数据是全0,1个字节需要采集16次边沿,需要内存2 048个字节。所以至少需要申请2 K的RAM,还不包括ET6602在接受信号之前可能会产生的噪声。由于STM32L0片上RAM有限,利用指针将接收数据缓存头尾连接,形成一个环形存储器,DMA不断搬移得到新的数据会填充进来,老的数据会自动地溢出,这样可以仅仅使用256个字节的数据缓存就可以完全接收所有的编码数据,防止了DMA循环的时候数据的丢失[14-15]。
图2 STM32L0对FM0接收信号的处理
整个的解码流程图如图3所示,MCU首先将TIM2设置为上下边沿捕获和从复位模式,初始化与TIM2绑定的DMA通道DMA1_Channel5,设置其源地址为TIM2,目的地址为数据缓存的地址。而后,进入待机状态,等待数据的到来。当有数据来临时,MCU被ET6602产生的wakeup唤醒信号唤醒,使能TIM2与DMA1_Channel5,此时DMA开始自动将数据从TIM2定时器搬移到MCU缓存数组中。而在MCU软件需要完成的便是判断DMA搬运到缓存中的值是“1”还是“0”,判定值由TIM2的采样频率决定。由于RSU下发的“0”的宽度为 1.95 us,“1”的宽度为 3.90 us,如果发送的是“0”理论上缓存中的值的计算式为PulseWidth0=1.95 us*TIM2的采样频率,如果发送的是“1”则理论上缓存中的值的计算式为PulseWidth1=3.90 us*TIM2的采样频率,所以PulseWidth1会是PulseWidth0的2倍,可以直接使用其平均值判定 “0”、“1”,小于1.5*PulseWidth0 判定为“0”,大于 1.5*PulseWidth0 判定为“1”。在解码过成功同时启用另外的一个定时器进行超时操作,在解码中查询,因为ET6602芯片的个体差异有可能会产生乱码,加入定时器以保证不会因接收数据中出错从而进入死循环。在实际应用中如果判断已经接收到前导码的16个“1”,可以不用判断16个“0”直接等待帧起始标志7E以节省解码时间,判断起始标志7E后开始对数据判定。在接收数据时判断到帧结束标志7E后,数据接收结束,进行CRC校验,FM0帧结构中最后两位为CRC校验位,如果CRC校验成功即解码成功把帧保留下来,如果CRC校验失败则将该帧丢弃。最后关闭TIM2和DMA1_Channel5,进入待机状态等待下一次数据的来临。
3 FM0解码实时性验证
解码程序运行在IAR Embedded Workbench编译环境下,使用意法半导体公司提供的STM32Cube软件,该软件可以自动生成使用HAL固件库的工程,接着在软件中配置TIM2和DMA通道,直接生成配置后的代码。在已生成的代码中加入通过模拟SPI初始化ET6602的寄存器,设置ET6602的初始状态和解码的流程,编译后将代码下载到OBU中运行,使用示波器连接上ET6602芯片的管脚即可得到如图4所示的结果,探头1是解码完成后MCU的IO输出管脚发出的跳变,探头2是RSU发出的FM0数据信号,OBU解出7E即算解码成功,不需解码后导码。从图4结果来看,OBU实时解码能力较高,仅需30 us。
图3 FM0解码流程图
4 结束语
在OBU的设计中,关键的问题就在于接收到RSU的数据后对其进行正确解码。本文探讨了在ETC系统中FM0软件解码的实现方式。灵活的应用了STM32L0丰富的片上外设,实现了OBU对RSU下行帧的几乎实时的解码,并通过实验验证,实时性达到要求,非常适合于低成本的OBU软件设计中。
图4 解码实时性验证
[1]李雯雯.ETC发展在高速公路中的现状分析[J].科技传播, 2016,8(9):151,200.
[2]庞哲,李磊.高速公路ETC电子收费系统的技术应用[J].科技与创新, 2016(9):149.
[3]姚渭箐,周伟.ETC中FM0解码器的设计[J].电子设计工程, 2011,19(9):121-124.
[4]昝勇,黎明,杨小芹,等.FM0编码及其在FPGA中的设计与实现[J].电子测量技术, 2009,32(2):95-97.
[5]芦潇静.STM32L0微控制器为注重低功耗的应用设计提供极佳解决方案[J].单片机与嵌入式系统应用, 2014(6):85-85.
[6]伍聪子,何怡刚,侯周国,等.LabVIEW平台上的FM0码解码[J].计算机工程,2010,36(12):272-273.
[7]温志勇.一种基于模式识别的新型FM0解码方法[J].移动通信, 2016(2):57-60.
[8]黄丽亚,王鹏飞.一种ISO 18000-6C协议中FM0回波的解码方法及ARM实现[J].电子设计工程,2011,19(14):187-189.
[9]张远海,翁佩纯.UHF RFID读写器基带信号FM0解码研究[J].电子设计工程, 2011,19(6):104-106.
[10]王忠焰.不停车收费系统(ETC)中车载终端设计[D].成都:电子科技大学,2012.
[11]山宝银,陈俊杰.ETC电子标签的FM0编解码设计与实现[J].微计算机信息, 2010,26(35):151-152.
[12]梁飞,张红雨,陈友平.UHF读写器设计中的FM0解码技术[J].电子设计工程, 2010,18(11):172-174.
[13]代玲玉.基于RFID的电子不停车收费系统中OBU模块设计[D].武汉:武汉理工大学,2010.
[14]王成.基于STM32的超高频RFID读写器软件系统的设计实现[D].杭州:杭州电子科技大学,2013.
[15]王成,李文钧,王彬.基于STM32的UHF RFID读写器基带编解码的实现[J].硅谷,2012(19):11-12.
Design of FM0 decoding in ETC system on software
LI Yan1,ZHANG Jin-song2
(1.Wuhan Research Institute of Post&Telecommunications,Wuhan430074,China;2.Wuhan YCIG iLink Technology Co.,Ltd,Wuhan430074,China)
TN919
A
1674-6236(2017)19-0157-04
2016-08-16稿件编号201608118
李 焱(1992—),男,湖北武汉人,硕士研究生。研究方向:ETC系统。