FlexRay总线控制器和TC1796的MLI接口设计
扫描二维码
随时随地手机看文章
引言
FlexRay总线是一种点对点形式的具有星形拓扑结构的数据传输总线。提供了传统总线通信协议所不具有的一些特性。FlexRay简化了车载电子设备之间的通信系统架构,使得车载电子单元变得更加稳定和可靠。FlexRay总线具有故障容限,可提供500 kbps~10 Mbps的确定数据传输速率和24位CRC(循环冗余)校验码。
FlexRay总线支持2×10 Mbps的数据速率,与CAN总线协议相比,可用的带宽提高了10~40倍。总线速率的提高使电子设备可以快速从总线获取信息,也可以快速将自身信息传送到总线上的其他设备。微处理器和FlexRay总线控制器的数据通信一般采用串行方式、并行方式以及其他方式。并行接口方式是早期采用的高速数据传输方式,但以更高速率传输时则存在多种问题。由于数据和地址总线较多,使得接口复杂,PCB布线难度增大,在高速时钟下每根数据线和地址线都要求尽量等长,否则可能产生数据和地址传输时相应位的紊乱,无法正确传输数据。串行方式硬件连接方便,内部最少只需数据收和数据发2根线,但传输速率较慢。
本文介绍一种微连接口MLI(MicroLink Interface)实现总线传输,使用FlexRay总线控制器CIC310及处理器TC1796。CIC310采集总线上各个节点的通信数据,并对总线负载和总线容量进行检测和控制。TC1796将各个节点数据进行处理,他们之间采用微连接口MLI,实现高速数据传输,最快数据传输速率达到37.5 Mbps,完全满足2×10 Mbps的总线数据速率。
1 FlexRay控制器CIC310
CIC310是英飞凌公司最近推出的FlexRay总线控制器,其内部结构如图1所示。从图中可以看出,CIC310总线控制器主要由ERay模块、DMA模块、时钟管理模块、中断模块、内存和数据处理以及数据接口模块等组成。
图1 CIC310内部功能框图
CIC310有3种接口方式将数据传输到处理器,这3种方式分别为SSC(Synchronous Serial Channel,串行接口)方式、XMU(De?multiplexer 8/16 bit Parallel Interface,非复用的8/16位并行接口)方式和MLI方式。其中SSC为一般的串口连接方式,具有连接简单和连接线少的特点,但数据传输速率较低;XMU接口为并口连接方式,数据传输速度比串口方式快很多,但连接线较多;MLI接口为专用接口方式,一般可以和专用车载控制器连接。英飞凌的 TC1796具有和CIC310连接的MLI接口。
CIC310和总线接口有2个独立的收发通道,每个通道的数据传输速度可达10 Mbps,片内ERay模块主要负责总线数据的收发、总线和DMA模块的数据交互、向外设产生各种中断以及实现数据读写时钟的管理等。E?Ray模块一般经过数据滤波器,将一些广播帧和总线上其他用户的数据帧滤除后,将本用户的数据帧传输到CIC310片内的DMA模块。DMA模块进行数据处理和数据校验,可以采用事先设定的数据系数进行处理。
2 微处理器TC1796
TC1796是基于英飞凌公司TriCore处理器架构的32位微控制器,在一块芯片中集成了微控制器、微处理器和数字信号处理器。具有2 MB的嵌入式Flash和多种创新的片上外设,如毫秒总线、快速模数转换器、微连接口以及新颖的高性能三总线结构,提升了系统总体性能,同时降低了系统成本。其主要特点有:
◆ 具有4级流水及并行架构的高性能32位CPU,完全集成DSP处理能力,具有单精度浮点运算单元,工作频率达150 MHz;
◆ 具有32位外设控制处理器,2 MB嵌入式程序Flash、128 KB数据Flash、16 KB仿真EEPROM、192 KB片上SRAM;
◆ 具有16通道DMA控制器,支持同步burst Flash访问的32位外部总线接口单元,支持2×255个硬件中断源;
◆ 具有2个毫秒总线接口、2个通用定时器阵列模块、2个异步/同步串行通道、2个高速同步串行通道、2个高速微连接口、4个CAN节点、4通道快速模数转换器、2个具有8/10/12位精度的16通道模数转换器。
图2 TC1796内部结构图
TC1796的内部结构如图2所示。内部主要由PMU(Program Memory Unit,程序存储单元)、DMU(Data Memory Unit,数据存储单元)、FPU(Floating Point Unit,浮点单元)、PMI(Program Memory Interface,程序存储接口)、DMI(Data Memory Interface,数据存储接口)、PCP(Peripheral Control Processor,片内外设控制处理器)、STM(System Timer,系统定时阵列)和PLL(Phase Locked Loop,锁相环)等组成。外部接口包括ADC、FADC(快速ADC)、串口、JTAG(仿真口)、GPIO(通用I/O口)、ASC(异步串口)、 CAN、MSC(Micro Second Channel,毫秒口)、MLI口等。
3 MLI接口
MLI接口是一种快速同步串行接口,可以在CPU不参与的情况下进行数据传输。图3是MLI接口的典型连接框图。
图3 MLI连接框图
图3中,具有MLI接口的处理器称为本地控制器,另一个则为远程控制器。双方都具有发送器和接收器。发送器和接收器之间进行物理连接。本地控制器初始化数据和交互参数,并负责控制所有的数据收发任务。每一次数据收发都必须由本地控制器发起,远程控制器只是被动地响应本地控制器的命令,读取或者发送数据。如果有3个以上的MLI接口进行连接,则只能有1个本地控制器,其他均设置成远程控制器。本地控制器具有1个发送窗口,所有的发送数据均通过发送窗口写入发送器并发送出去。本地控制器接收到数据后通过中断方式通知CPU或者DMA进行读取数据。远程控制器具有1个远程窗口,没有发送窗口;但远程控制器不能控制远程窗口,远程窗口和发送窗口一样,都是由本地控制器操作。实际上,远程控制器相当于一个完全被动的设备。远程控制器收到数据将自动或者手动放到远程窗口中,由远程控制器的CPU或者DMA从相应地址读取。当远程控制器的CPU或者DMA需要发送数据时,本地控制器控制远程窗口读取相应地址的数据,并从发送器发送到本地控制器的接收器。
4 TC1796和CIC310的MLI接口连接
TC1796最多可以和4个CIC310的MLI接口连接,这样1个处理器就可以连接4个总线控制器,从而控制8个总线节点并进行数据通信(每个CIC310控制2个总线节点),节省处理器成本。图4为TC1796和2个CIC310的MLI接口连接。TC1796必须作为本地控制器,2个 CIC310均为远程控制器。
图4 TC1796与2片CIC310连接
TC1796向CIC310发送数据的连接说明如下:MLI的接收器具有4个引脚,分别为RREADYA(接收数据准备好标志)、 RVALIDA(接收数据有效标志)、RDATAA(接收数据)、RCLKA(接收时钟);对应的发送器也具有TREADYA(发送数据准备好标志)、 TVALIDA(发送数据有效标志)、TDATAA(发送数据)、TCLK(发送时钟)。其中TDATA和TCLK引脚由TC1796输出,连接到每个 CIC310的RDATAA和RCLKA引脚,这样每个CIC310都采用同一个时钟和数据信号。TC1796的4个MLI接口具有4个发送数据准备好标志和发送数据有效标志,分别为TREADYA~TREADYD、TVALIDA~TVALIDD。将每个MLI的一对这样的引脚连接到1个CIC310 上,就完成对不同CIC310的选择,从而区分出对哪个CIC310发送数据。从硬件连接可以看出,TC1796虽然可以和多个CIC310连接,但同时只能对1个CIC310发送数据。
TC1796接收CIC310的数据连接说明如下:TC1796的MLI接收器每个接口都具有独立的4个引脚,RREADYA~RREADYD、RVALIDA~RVALIDD、RDATAA~RDATAD、RCLKA~RCLKAD,这样每个接口正好和 CIC310的发送器的4个引脚连接,可以同时接收4个CIC310的数据。在TC1796内部,将每个CIC310连接到不同的DMA中断上,使用 DMA进行数据读取。
TC1796与多个CIC310进行连接,采用下行单向通信(TC1796向CIC310发送数据)、上行并行通信(CIC310向 TC1796发送数据)的目的是减少总线负载。当总线节点有数据向处理器发送时,处理器总是及时读取数据,避免总线重发数据,同时避免CIC310无法存储突发的大量数据帧。当处理器需要向总线发送数据时,即使处理器需要同时向多个总线节点发送数据,依然采用单个节点轮流发送数据的方式,避免处理器同时将大量数据发送到总线,增加总线负载。一旦总线负载增加,数据传输误码率将大大增加,使得总线恶化。