博客
希望我們能(néng)與您分享和探讨成(chéng)長(cháng)中的點點滴滴
CANoe對(duì)SPI、UART和I2C等串行總線的同步仿真與測試
分享到
“轉載自維克多汽車技術(上海)有限公司,作者Vector China”
在ECU和傳感器系統中,除去各種(zhǒng)汽車總線以及智能(néng)傳感器之間的PSI5和SENT協議之外,在短距離和低成(chéng)本通信場景中還(hái)會(huì)廣泛使用SPI、UART、RS232、RS485、RS422和I2C等通用串行總線。在HIL系統中,如果被(bèi)測對(duì)象涉及上述串行總線,則需要測試設備能(néng)夠同時(shí)支持對(duì)應接口,實現測試、仿真及分析。在CANoe爲平台的HIL系統中,I/O闆卡VT2710同時(shí)支持PSI5/SENT以及上述串行總線協議,爲構建經(jīng)濟型測試系統提供便利。
SPI簡述與測試解決方案
SPI(Serial Peripheral Interface Bus,串行外設接口)常用于芯片之間通訊,沒(méi)有具體标準技術規範,各廠家的實際方案可能(néng)存在一定差異性,如線束拓撲常見形式有四線SPI、三線SPI和isoSPI等,時(shí)序操作模式以及具體指令集定義等均需結合實際芯片手冊進(jìn)行開(kāi)發(fā)和配置。最常見的SPI通訊需要4根線,可進(jìn)行全雙工通訊。
圖1:SPI通信接口拓撲
當采用單主機多從機的通訊拓撲時(shí),SCLK、MOSI、MISO均爲1根線由主機并聯至各從機,而CS片選信号線的數量,需要與從機數量對(duì)應。時(shí)序模式如圖2。
圖2:時(shí)序操作模式示意圖
SPI除了引腳定義、時(shí)序操作、指令集多樣(yàng)以外,對(duì)于通訊速率、電平範圍也無明确定義,需根據通訊芯片進(jìn)行匹配。ECU中通常將(jiāng)SPI用于MCU與外設芯片之間的通訊,如EEPROM、看門狗等;在BMS領域的主從闆菊花鏈通訊中,也通過(guò)SPI與外置通訊芯片進(jìn)行交互(如Maxim、Analog Devices、NXP等)。
CANoe/VT2710對(duì)SPI的支持情況:
> 每塊VT2710可以提供2個獨立通道(dào)的四線SPI通訊,最多支持5路片選;
> SPI通訊電壓範圍支持0~6V,可進(jìn)行星型或菊花鏈連接;
> 仿真SPI主機時(shí)最高支持10Mbps速率,仿真SPI從機時(shí)最高支持6Mbps速率。
SPI通訊指令集開(kāi)發(fā)實現方式有3種(zhǒng):
> 用戶自定義信号幀:CANoe内置清晰且便于使用的圖形配置界面(miàn),用戶可自由添加信号定義,實現SPI通訊“數據庫”的制作。
圖3:SPI參數及信号配置界面(miàn)
> 原始通信幀:直接通過(guò)CAPL編程方式實現通訊指令集開(kāi)發(fā),CANoe提供MISO和MOSI讀寫隊列函數,將(jiāng)需要發(fā)送的數據寫進(jìn)VT2710緩存隊列,用于靈活和快速的通訊交互。
> FPGA封裝高速幀:當通訊過(guò)程中需要微秒或納秒級的數據響應,并且需要動态結合前幀指令進(jìn)行判斷并響應時(shí),可以使用FPGA編程進(jìn)行SPI指令集開(kāi)發(fā)。VT2710默認集成(chéng)可自編程的FPGA芯片,用戶可選VHDL語言或Intel® DSP Builder Advanced Blockset Builder進(jìn)行FPGA開(kāi)發(fā)。
圖4:SPI實際通訊展示
UART簡述與測試解決方案
UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)是一種(zhǒng)通用串行數據總線,用于異步通信。該總線雙向(xiàng)通信,可以實現全雙工傳輸和接收。UART通訊需要2根線:TX發(fā)送數據,RX接收數據。UART在汽車行業内用于座艙和觸摸信号等附屬設備的交互,還(hái)可擴展爲LIN通訊接口使用。
圖5:UART通訊接口拓撲
UART幀以一個起(qǐ)始位(邏輯0)開(kāi)始, 然後(hòu)是7~9個數據位,由一個可選的奇偶校驗位以及一個或兩(liǎng)個停止位(邏輯1)完成(chéng),該位同時(shí)用于接收節點的同步。
圖6:UART數據幀格式
CANoe/VT2710對(duì)UART的支持情況:
> 每塊VT2710可以提供2個獨立通道(dào)的UART通訊;
> 可以自定義電平,也可使用RS232、RS485、RS422等電平邏輯進(jìn)行通訊;
> 自定義内部電平支持最高6V,通訊速率最高支持1Mbps;
> 用戶可通過(guò)系統變量、CAPL函數或FPGA編程方式實現UART通訊。
圖7:UART通訊配置界面(miàn)
RS232、RS485和RS422簡述與測試解決方案
RS-232是美國(guó)電子工業聯盟(EIA)制定的串行數據通信的接口标準。由于RS232标準未對(duì)編碼方式、幀的構成(chéng)方式、傳輸順序、錯誤檢測機制做出規定,一般會(huì)使用UART的字符格式和傳輸比特率設置,當然也可由用戶自定義協議。不同于TTL電平,RS232規定邏輯“1”的電平爲-15V~-3 V,邏輯“0”的電平爲+3V~+15V。
RS485(現稱EIA-485)是TIA及EIA聯合發(fā)布的物理層标準,在幹擾環境下進(jìn)行長(cháng)距離的高效通信,支持在一個網絡上有多個接收器的總線拓撲,适用于環境耐久等試驗環境。RS485是雙線、半雙工、差分電壓信号通訊,通訊速率上限随線束長(cháng)度而定,一般10米時(shí)最高35Mbit/s,1200米時(shí)最高100kbit/s。
RS422(現稱EIA-422)同樣(yàng)是TIA及EIA聯合發(fā)布的物理層标準,旨在提供更高速度、更好(hǎo)的抗噪性和更長(cháng)電纜長(cháng)度的标準。傳輸數據速率可以高達10Mbit/s,在較低的速率下可在長(cháng)達1500米的電纜上發(fā)送數據。RS422采用4線、全雙工、差分電壓信号通訊。RS422隻能(néng)有1個發(fā)送端,多個接收端,因此其全雙工是主從節點之間的點對(duì)多點雙向(xiàng)通訊。由于RS485/422未定義具體的上層協議,實際使用中常會(huì)使用UART、Modbus、Profibus協議。RS232、RS485、RS422在汽車行業中用于GNSS數據傳輸、車機與附屬部件交互數據,以及測試時(shí)控制電源、環境艙等設備的場景。
CANoe/VT2710對(duì)RS232、RS485和RS422的支持情況:
> 每塊VT2710可提供2路RS232,2路RS485/RS422(複用二選一);
> 編碼方式均默認提供UART編碼;
> 用戶可通過(guò)系統變量、CAPL函數或FPGA編程方式實現對(duì)應通訊。
圖8:RS485配置及闆卡控制界面(miàn)
I²C簡述與測試解決方案
I²C Bus(Inter-Integrated Circuit Bus,内部集成(chéng)電路總線)是一種(zhǒng)同步、多主從、分組交換、單端的串行通訊總線,主要用于短距離、闆内通訊中將(jiāng)低速的外部芯片連接至CPU/MCU。I²C使用2條雙向(xiàng)開(kāi)漏(Open-Drain)通訊線:SDA(Serial Data Line)用于傳輸數據,SCL(Serial Clock Line)用于控制通訊過(guò)程,需上拉電阻,常用電平爲+5V或+3.3V。常見通訊速率有标準模式100kbit/s和快速模式400kbit/s。新一代I²C總線可以支持快速模式400 kbit/s、更快速模式1 Mbit/s、高速模式3.4 Mbit/s和 超快速模式5 Mbit/s。I²C 通信始終按照以下流程進(jìn)行:
> Master主機在總線上産生一個啓動條件;
> Master主機發(fā)送Slave從機地址和讀/寫位請求,對(duì)應的Slave從機産生ACK應答(低電平),Master主機根據讀/寫位切換爲發(fā)送方或接收方模式;
> 數據在Master主機和被(bèi)尋址的Slave從機之間按字節進(jìn)行數據傳輸,相應的接收方通過(guò) ACK 進(jìn)行應答(低電平);
> Master主機在總線上産生一個停止條件。
此外,主機可以發(fā)起(qǐ)另一個啓動條件而非停止條件,從而立即啓動新的數據傳輸。此過(guò)程稱爲重複啓動。I²C在汽車領域常用于MCU與EEPROM、GPIO芯片等集成(chéng)電路通訊,也會(huì)用于觸摸指令傳輸、攝像頭光圈/曝光度控制等交互。
圖9:I²C通訊過(guò)程數據結構示意圖
CANoe/VT2710對(duì)I²C的支持情況:
> 每塊VT2710支持最多2路I²C總線,可以仿真Master主機或Slave從機;
> 支持100kb/s、400kb/s、1Mb/s三種(zhǒng)典型速率,最低可配置爲50kb/s,最高可配置爲1.6Mb/s;
> 高電平電壓(0~6V)、上拉電阻(4.7kΩ)是否接入均可配置。
在Sensor Protocol Configuration窗口,可以添加所需I²C總線通道(dào),對(duì)于Slave從機可以配置其尋址長(cháng)度、Slave從機地址、是否對(duì)供應商ID等信息進(jìn)行響應等,對(duì)于I²C報文可以配置其讀/寫長(cháng)度,以及具體信号的Layout及序列化規則,方便直接通過(guò)系統變量進(jìn)行數據讀/寫。與其他串行總線一樣(yàng),除直接通過(guò)系統變量進(jìn)行操作外,也可通過(guò)CAPL操作原始幀、FPGA編程開(kāi)發(fā)指令集等方式進(jìn)行應用。
圖10:I²C 總線報文配置界面(miàn)
CANoe爲I²C的應用提供1主2從的示例工程,利用VT2710的兩(liǎng)個通道(dào)分别仿真主、從,用戶可以基于該示例工程進(jìn)行修改,創建符合自身使用場景的項目工程。
圖11:I²C 應用示例工程界面(miàn)