版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章汽車嵌入式系統(tǒng)常用通信技術2023/11/28汽車嵌入式系統(tǒng)設計1第6章汽車嵌入式系統(tǒng)常用通信技術數字通信(digitaltelecommunications)是用數字信號作為載體來傳輸消息。數字通訊的優(yōu)點:抗干擾能力強、差錯可控、易加密、易于與現代技術相結合(如存儲、傳輸、交換、處理等),在現代控制系統(tǒng)中得到廣泛運用。本章以S12XE系列MCU為例,系統(tǒng)闡述MCU的常用各類通信技術的原理及其實現方法,包括:SCI(SerialCommunicationInterface)異步串行通信SPI(SerialPeripheralInterface)同步串行通信IIC(InterIntegrated-Circuit)同步串行通信CAN(ControllerAreaNetwork)控制器局域網絡LIN(LocalInterconnectNetwork)局域互聯網絡2023/11/28汽車嵌入式系統(tǒng)設計2計算機中信息傳遞方式有串行通信和并行通信兩種;2023/11/28汽車嵌入式系統(tǒng)設計36.1SCI串行通信SCI(SerialCommunicationInterface)是最常用、最經典的通用串行異步通信(UART,UniversalAsynchronousReceiver/Transmitter)接口方式。異步是指收、發(fā)雙方使用各自的時鐘控制發(fā)送和接收過程,可以省去收、發(fā)雙方需要一條同步時鐘信號線,使異步串行通信的連接更簡單且容易實現。異步通信中數據或字符是一幀一幀傳送。幀即為一個字符的完整通信格式,又稱幀格式。一個完整的幀格式由4部分組成:起始位、數據位、奇偶校驗位、停止位。這種格式的空閑狀態(tài)為“1”,發(fā)送器通過發(fā)送1位起始位,“0”表示一個字節(jié)傳輸的開始,隨后是數據位(一般是8位或9位,可以包含校驗位等),最后,發(fā)送器發(fā)送1位停止位,表示一個字節(jié)傳送結束。若繼續(xù)發(fā)送下一字節(jié),則重新發(fā)送開始位,開始一個新的字節(jié)傳送;若不發(fā)送新的字節(jié),則維持“1”的狀態(tài),使發(fā)送數據線處于空閑。每發(fā)送一個字節(jié)都要發(fā)送“開始位”與“停止位”。2023/11/28汽車嵌入式系統(tǒng)設計42.串行通信的波特率串行通信時,每秒內傳送的位數叫做波特率,波特率的單位是位/秒(bit/s,bitpersecond)。常用的波特率有:1200、2400、4800、9600、19200、38400、57600、115200等,很容易計算出每幀信息傳送所需的時間。隨著波特率的提高,相鄰兩位間的時間間隔變短,以至于很容易受到電磁源的干擾,通信可靠下降。通信距離問題也會造成信號衰減和信號被干擾。2023/11/28汽車嵌入式系統(tǒng)設計53.奇偶校驗在異步串行通信中,為確保傳輸的正確性。最常見的方法是每幀中增加一位(奇偶校驗位),供錯誤檢測使用。它是為每個字符增加一個額外位使字符中“1”的個數為奇數或偶數。奇數或偶數依據使用的是“奇校驗檢查”還是“偶校驗檢查”而定。當使用“奇校驗檢查”時如果字符數據位中“1”的數目是偶數,校驗位應為“1”;如果“1”的數目是奇數,校驗位應為“0”。當使用“偶校驗檢查”時,如果字符數據位中“1”的數目是偶數,則校驗位應為“0”;如果是奇數,則為“1”。例,ASCII字符“R”,其位構成是1010010B,有3個位為“1”,若使用奇校驗檢查,則校驗位為0;如果使用偶校驗檢查,則校驗位為1。奇偶校驗檢查方法簡單使用方便,發(fā)生1位錯誤的概率遠大于2位錯誤的概率,所以“奇偶校驗”這種方法還是最為常用的校驗方法。2023/11/28汽車嵌入式系統(tǒng)設計64.串行通信的傳輸方式單工(Simplex):數據傳送是單向的,一端為發(fā)送端,另一端為接收端。這種傳輸方式中,除了地線之外,僅需一根數據線。全雙工(Full-duplex):數據傳送是雙向的,且可以同時接收與發(fā)送數據。這種傳輸方式中,除了地線之外,需要兩根數據線,站在任何一端的角度看,一根為發(fā)送線,另一根為接收線。一般情況下,MCU的異步申行通信接口均是全雙工的。半雙工(Half-duplex):數據傳送也是雙向的,但是在這種傳輸方式中,除地線之外,一般只有一根數據線。任何時刻,只能由一方發(fā)送數據,另一方接收數據,不能同時收發(fā)。2023/11/28汽車嵌入式系統(tǒng)設計75.RS-232總線標準MCU引腳輸入/輸出一般使用晶體管-晶體管邏輯電平TTL(TTL,Transistor-TransistorLogic)電平。而TTL電平的“1”和“0”的特征電壓分別為2.4V和0.4V,即電壓高于2.4V則識別為“1”,電壓低于0.4V則識別為“0”,一般僅適用于板內數據傳輸。若用TTL電平將數據傳輸超過5米,就無法保證信息傳送的可靠性了。為使信號傳輸得更遠,美國電子工業(yè)協會制訂了串行物理接口標準RS-232C,以下簡稱RS-232。RS-232采用負邏輯,-15~-3V為邏輯“1”,+3~+15V為邏輯“0”。其最大的傳輸距離可達30米,通信速率一般低于20kbit/s。標準串行通信接口普遍使用9芯串行接口(DB9)。2023/11/28汽車嵌入式系統(tǒng)設計8在MCU中,若使用RS-232總線與其它設備串行通信,則需外接電路實現電平轉換。在發(fā)送端,需要用驅動電路將TTL電平轉換成RS-232電平,在接收端需要用接收電路將RS-232電平轉換為TTL電平。目前廣泛使用MAX232芯片,該芯片使用+5V電源供電實現電平轉換。2023/11/28汽車嵌入式系統(tǒng)設計9進行MCU的SCI串行通信編程時,只針對MCU的TXD和RXD引腳,與MAX232無關,MAX232僅起電平轉換的作用,有時又稱其為串口通信驅動器、收發(fā)器等。6.1.3SCI應用實例2023/11/28汽車嵌入式系統(tǒng)設計10【例6-1】采用中斷方式實現串口通信數據的接收。/*===初始化SCI===*/voidINIT_SCI(void){ SCI0BD=BUS_CLOCK/16/BAUD; //設置SCI0波特率為BAUD=9600 SCI0CR1=0x00;//設置SCI0為正常模式,8位數據位,無奇偶校驗
SCI0CR2=0x2c;//允許接收和發(fā)送數據,允許接收中斷功能}/*===串口發(fā)送函數===*/voidSCI_send(unsignedchardata){while(!SCI0SR1_TDRE); //等待發(fā)送數據寄存器(緩沖器)為空
SCI0DRL=data;}/*===串口接收函數===*/unsignedcharSCI_receive(void){while(!SCI0SR1_RDRF);//等待發(fā)送數據寄存器滿
return(SCI0DRL);}/*串口中斷接收函數*/#pragmaCODE_SEG__NEAR_SEGNON_BANKEDinterruptvoidreceivedata(void){data_receive=SCI_receive();if(data_receive=='O'){SCI_send('Y');LEDCPU=LED_ON;}if(data_receive=='C'){SCI_send('V');LEDCPU=LED_OFF;}}#pragmaCODE_SEGDEFAULT6.2SPI串行接口
2023/11/28汽車嵌入式系統(tǒng)設計11圖6-5SPI外圍串行擴展結構圖SPI有4種通信方式:(1)方式0CPOL=0,CPHA=0。此時,空閑態(tài)時,SCLK處于低電平,數據采樣是在第1個邊沿,也就是SCLK由低電平到高電平的跳變,所以數據采樣是在上升沿,數據發(fā)送是在下降沿。(2)方式1CPOL=0,CPHA=1。此時,空閑態(tài)時,SCLK處于低電平,數據發(fā)送是在第1個邊沿,也就是SCLK由低電平到高電平的跳變,所以數據采樣是在下降沿,數據發(fā)送是在上升沿。(3)方式2CPOL=1,CPHA=0。此時,空閑態(tài)時,SCLK處于高電平,數據采集是在第1個邊沿,也就是SCLK由高電平到低電平的跳變,所以數據采集是在下降沿,數據發(fā)送是在上升沿。(4)方式3CPOL=1,CPHA=1。此時,空閑態(tài)時,SCLK處于高電平,數據發(fā)送是在第1個邊沿,也就是SCLK由高電平到低電平的跳變,所以數據采集是在上升沿,數據發(fā)送是在下降沿。2023/11/28汽車嵌入式系統(tǒng)設計12SPI接口在內部硬件實際上是簡單的移位寄存器,傳輸的數據為8位,在主器件產生的從器件使能信號和移位脈沖下,按位傳輸,高位在前,低位在后。如圖6-6,SSPSR是SPI設備內部的移位寄存器,根據SPI時鐘信號狀態(tài),往SSPBUF里移入數據、從SSPBUF移出數據。2023/11/28汽車嵌入式系統(tǒng)設計13圖6-6SPI內部工作機制【例6-2】FM25040A實現對EEPROM的擴展FM25040A是存儲容量4Kb(512個字節(jié))的EEPROM存儲器芯片,使用SPI接口進行數據的讀與寫。SPI的最高頻率可達20MHz,采用SOP8貼片封裝。關于FM25040A的封裝與引腳定義參見圖6-7,FM25040A的讀寫時序參見圖6-8、圖6-9。2023/11/28汽車嵌入式系統(tǒng)設計14圖6-8FM25040A存儲器寫時序圖6-9FM25040A存儲器讀時序理解時序的概念符號參數最小值最大值單位fCKSCK時鐘頻率020MHztCH時鐘高時間22
nstCL時鐘低時間22
nstCSU片選開始10
nstCSH片選保持10
nstOD輸出失效
20nstODV輸出數據有效
20nstOH輸出保持0
nstD失選時間60
nstR數據上升時間
50nstF數據下降時間
50nstSU數據建立時間5
nstH數據保持時間5
nstHS/保持建立時間10
nstHH/保持保持時間10
nstHZ/保持由低到高
20nstLZ/保持高到數據有效時間
20ns2023/11/28汽車嵌入式系統(tǒng)設計15表6-2FM25040ASPI時序要求圖6-10FM25040ASPI時序要求2023/11/28汽車嵌入式系統(tǒng)設計16/*===初始化SPI模塊===*/voidINIT_SPI(void){HOLD_dir=1;CS_dir=1;SPI0CR1=0b01010000; //使能SPI,禁止中斷,時鐘高有效,相位為0;SPI0CR2=0x00; //SS管腳為普通I/O,雙向模式;SPI0BR=0x70; //設置SPI時鐘頻率為2MHz;CS=1;}/*===SPI發(fā)送函數===*/voidSPI_send(unsignedchardata){while(!SPI0SR_SPTEF);SPI0DRL=data;}/*===SPI接收函數===*/unsignedcharSPI_receive(void){unsignedchartemp,data;while(!SPI0SR_SPIF);temp=SPI0SR;data=SPI0DRL;return(data);}/*===初始化FM25040A===*/voidINIT_FM25040A(void){HOLD=1;CS=0;}6.3IIC(I2C)串行總線IIC(InterIntegrated-Circuit)總線是PHILIPS公司推出的一種同步串行總線,是具備多主機系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線,它支持多主控,任何能夠進行發(fā)送和接收的設備都可以成為主控端。6.3.1IIC(I2C)的工作原理IIC總線只有兩根信號線,如圖6-11所示。一根是雙向數據信號線SDA;另一根是雙向時鐘線SCL。2023/11/28汽車嵌入式系統(tǒng)設計17圖6-11IIC(I2C)通信系統(tǒng)架構IIC總線的器件接口均是開漏結構,通過上拉電阻(大小由速度和容性負載決定,一般在3.3k-10k之間)接正電源。當總線空閑時,兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號變低,即各器件的SDA及SCL都是線“與”關系。IIC總線工作速率常見的有標準模式100kbit/s和快速模式400kbit/s兩種,增強快速模式1Mbit/s和高速模式3.4Mbit/s,極速模式單向數據傳輸速率可達5Mbit/s。可以實現半雙工通信。2023/11/28汽車嵌入式系統(tǒng)設計18推挽輸出:可以輸出高,低電平,連接數字器件;不能實現“線與”,可能會發(fā)生短路,進而可能造成端口的損害。開漏輸出:開漏輸出無法真正輸出高電平,即高電平時沒有驅動能力。輸出端相當于三極管的集電極。要得到高電平狀態(tài)需要上拉電阻才行。適合于做電流型的驅動,其吸收電流的能力相對強(一般20ma以內)。尋址方式IIC總線采用純軟件尋址方式,無需片選線,大大簡化了總線數量。每個連接到總線的設備都有唯一的地址,地址為7位,前四位識別器件類別,一般是固定的;后三位由器件本身管腳A2、A1、A0可以編程,故同類器件一般最多掛8個。IIC總線明確規(guī)定,采用7位尋址字節(jié),D7~D1位組成從機的地址。D0位是數據傳送方向位,為“0”時表示寫數據,為“1”時表示讀數據。主機發(fā)送地址時,總線上的每個從機都將這7位地址碼和自己的地址碼比較,如果相同則認為自己被主機尋址,根據讀/寫位確認為發(fā)送器或者接收器。寫操作,從地址為00000000b表示通用廣播地址。保留地址見表6-3。2023/11/28汽車嵌入式系統(tǒng)設計19從地址R/W(——)位說明00000000通用廣播地址00000001起始位0000001XCBUS地址0000010X不同總線格式保留0000011X將來功能保留00001XXXHS模式主代碼11111XX1設備ID11110XXX10位從地址表6-3IIC總線保留地址數據傳送IIC總線進行數據傳送時,時鐘信號為高電平期間,數據線上的數據必須保持穩(wěn)定,只有時鐘信號為低電平時,數據線上的電平才允許變化。SCL線為高電平時,SDA線由高變低表示起始信號;SCL線為高電平時,SDA線由低變高表示終止信號。起始信號和終止信號均是主機發(fā)出;起始信號產生后,總線處于被占用狀態(tài);終止信號產生后,總線處于空閑狀態(tài)。2023/11/28汽車嵌入式系統(tǒng)設計20IIC數據傳送格式:字節(jié)傳送與應答要求每一個字節(jié)必須保證是8位長度。數據傳送時,先傳送最高位(MSB),每一個被傳送的字節(jié)后面都必須跟隨一位應答位(即一幀共有9位)。數據幀格式:IIC總線上的數據包括地址信號和數據信號。在起始信號后必須傳送一個從機的地址(7位),第8位是數據的傳送方向即讀(R/W?=1)還是寫(R/W?=0),每次數據傳送均是主機產生終止信號而結束。由于某種原因從機不對主機尋址信號應答時,它必須將數據線置于高電平,而由主機產生一個終止信號以結束總線的數據傳送;如果從機對主機進行了應答,但在數據傳送一段時間后無法繼續(xù)接收更多的數據時,從機可以通過對無法接收的第一個數據字節(jié)的“非應答”通知主機,主機則應發(fā)出終止信號以結束數據的繼續(xù)傳送;當主機接收數據時,它收到最后一個數據字節(jié)后,必須向從機發(fā)出一個結束傳送的信號。2023/11/28汽車嵌入式系統(tǒng)設計21總線的一次數據傳輸,包括以下幾種組合:1)主機向從機發(fā)送數據,數據的傳送方向在整個傳送過程中不變。2)主機在第一個字節(jié)后,立即從從機讀數據。3)在傳送過程中,需要改變讀寫方向時,需要重新發(fā)送起始信號和從機地址。2023/11/28汽車嵌入式系統(tǒng)設計22【例6-3】采用PCF8574芯片(引腳見圖6-19),實現通過IIC總線的遠程8位I/O擴展(電路原理圖見圖4-72)。2023/11/28汽車嵌入式系統(tǒng)設計23/*===初始化IIC===*/voidINIT_IIC(void){IIC0_IBFD=0x94; //總線時鐘32MHz,設置SCL主頻為100kHzIIC0_IBCR=0x80; //使能IIC模塊,禁止中斷
IIC0_IBSR_IBAL=1; //清除IBAL標志位}/*===通過IIC由PCF8574讀取數據===*/unsignedcharIIC_receive(void){unsignedchardata;IIC0_IBCR_TXAK=0; //接收到數據后有應答
IIC0_IBCR_TX_RX=1; //設置單片機為發(fā)送模式
IIC0_IBCR_MS_SL=1; //設置單片機為主機模式,產生開始信號
IIC0_IBDR=0b01000001;while(IIC0_IBSR_IBIF==0);IIC0_IBSR_IBIF=1;while(IIC0_IBSR_RXAK);IIC0_IBCR_TX_RX=0; //設置單片機為接收模式
IIC0_IBCR_TXAK=1; //接收到數據后無應答
data=IIC0_IBDR; //清空IIC的寄存器,準備接收
while(IIC0_IBSR_IBIF==0);IIC0_IBSR_IBIF=1;IIC0_IBCR_MS_SL=0;data=IIC0_IBDR; //讀取接收到的數據
return(data);}CAN是控制器局域網絡的簡稱,是一種能夠實現分布式實時控制的串行通信網絡。1)最高傳輸速度1Mbps,最遠通信距離10km,無損位仲裁機制,多主結構;2)低成本:多個ECU通過CAN接口進行通信,布線成本低;3)高集成:CAN總線系統(tǒng)允許在所有ECUs上進行集中錯誤診斷和配置;4)可靠性:該系統(tǒng)對子系統(tǒng)的故障和電磁干擾具有很強的魯棒性,是汽車控制系統(tǒng)的理想選擇;5)高效率:可以通過標識符ID對消息進行優(yōu)先級排序,以便最高優(yōu)先級ID的報文通信不被中斷;6)靈活性:每個ECU包含一個用于CAN總線收發(fā)芯片,可隨意添加CAN總線節(jié)點。2023/11/28汽車嵌入式系統(tǒng)設計24圖6-21CAN總線網絡簡圖CAN總線網絡主要掛在CAN_H和CAN_L,各個節(jié)點通過這兩條線實現信號的串行差分傳輸,為了避免信號的反射和干擾,還需要在CAN_H和CAN_L之間接上120?(模擬無限遠傳輸線的特性阻抗)的終端電阻。6.4S12XE的CAN總線8)靈活可屏蔽的識別濾波器,支持2個32位的濾波器、4個16位的濾波器、8個8位濾波器;9)集成低通濾波器可編程喚醒功能;10)可編程環(huán)路模式,用于自檢操作;11)可編程監(jiān)聽模式,用于檢測CAN總線狀態(tài);12)可編程總線關閉與恢復功能;13)對整個CAN收發(fā)器的錯誤狀態(tài)(如警告、錯誤被動、關閉總線)具有獨立的產生信號和觸發(fā)中斷能力;14)可編程的MSCAN時鐘來源,可選擇總線或晶振時鐘;15)使用內部定時器作為收發(fā)消息的時間戳;16)3種低功耗模式:睡眠、斷電和MSCAN使能;17)配置寄存器全局初始化。2023/11/28汽車嵌入式系統(tǒng)設計251)遵循CAN-2.0A/B協議;2)支持標準和擴展幀格式;3)0~8個字節(jié)數據段長度;4)通信位速率可達1Mbps;5)支持遠程幀;6)5個基于FIFO存儲機制的接收寄存器;7)3個基于本地優(yōu)先級機制的發(fā)送寄存器;收發(fā)器S12XE的CAN輸入和輸出引腳Rx、Tx通過收發(fā)器與CAN總線進行物理性連接,形成通信網絡中的一個節(jié)點。收發(fā)器:S12XE的MSCAN模塊對應收發(fā)信號是TTL邏輯電平,須通過CAN收發(fā)器實現邏輯電平和CAN信號電平之間的轉換。此外,收發(fā)器可提供驅動CAN總線所需的大電流(提高驅動能力),并對出故障的CAN總線或基站進行電流保護。2023/11/28汽車嵌入式系統(tǒng)設計26助記符引腳描述TXD1發(fā)送數據輸入GND2接地Vcc3電源RXD4接收數據輸入Vref5參考電壓輸出CANL6低電平CAN總線CANH7高電平CAN總線S8選擇進入高速模式還是靜音模式CAN信號CAN總線采用不歸零碼位填充技術,也就是說CAN總線上的信號有兩種不同的信號狀態(tài),分別是顯性的(Dominant)邏輯0和隱形的(Recessive)邏輯1,信號每一次傳輸完后不需要返回到邏輯0(顯性)的電平。2023/11/28汽車嵌入式系統(tǒng)設計27圖6-23CAN總線信號邏輯狀態(tài)當沒有數據發(fā)送時,兩條線的電平一樣都為2.5V,稱為靜電平,也就是隱性電平。當有信號發(fā)送時,CAN_High的電平升高1V,即3.5V,CAN_Low的電平降低1V,即1.5V。按照定義: CAN_H-CAN_L<0.5V時為隱性的,邏輯信號表現為“邏輯1”——高電平; CAN_H-CAN_L>0.9V時為顯性的,邏輯信號表現為“邏輯0”——低電平。2.CAN信號傳輸(1)發(fā)送過程CAN控制器將CPU傳來的信號轉換為邏輯電平。CAN發(fā)射器接收邏輯電平之后,再將其轉換為差分電平輸出到CAN總線上。參見圖6-24左圖。(2)接收過程CAN接收器將CAN_H和CAN_L線上傳來的差分電平轉換為邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉化為相應的信號發(fā)送到CPU。2023/11/28汽車嵌入式系統(tǒng)設計28發(fā)送接收MCUCAN總線3.CAN總線傳輸幀結構CAN總線按幀進行數據傳輸,CAN的通信幀分成五種:數據幀、遠程幀、錯誤幀、過載幀和幀間隔。數據幀根據仲裁段長度不同分為標準幀(2.0A)和擴展幀(2.0B)。2023/11/28汽車嵌入式系統(tǒng)設計29圖6-25CAN幀結構(1)幀起始由1個顯性位(低電平)組成,發(fā)送節(jié)點發(fā)送幀起始,其他節(jié)點同步于幀起始。(2)幀結束由7個隱形位(高電平)組成。2023/11/28汽車嵌入式系統(tǒng)設計302023/11/28汽車嵌入式系統(tǒng)設計31(3)仲裁段只要總線空閑,總線上任何節(jié)點都可以發(fā)送報文,如果有兩個或兩個以上的節(jié)點開始傳送報文,那么就會存在總線訪問沖突的可能。但是CAN使用了標識符的逐位仲裁方法可以解決這個問題。參見圖6-27。CAN總線控制器在發(fā)送數據的同時監(jiān)控總線電平,如果電平不同,則停止發(fā)送并做其他處理。如果該位位于仲裁段,則退出總線競爭;如果位于其他段,則產生錯誤事件。幀ID越小,優(yōu)先級越高。由于數據幀的RTR位為顯性電平,遠程幀為隱性電平,所以幀格式和幀ID相同的情況下,數據幀優(yōu)先于遠程幀;由于標準幀的IDE位為顯性電平,擴展幀的IDE位為隱形電平,對于前11位ID相同的標準幀和擴展幀,標準幀優(yōu)先級比擴展幀高。參見圖6-28。圖6-28CAN數據幀仲裁段圖6-27CAN位仲裁機制(4)數據段一個數據幀傳輸的數據量為0~8個字節(jié),這種短幀結構使得CAN-bus非常適合汽車和工控應用場合,具有數據量小、發(fā)送和接收時間短、實時性高、被干擾的概率小、抗干擾能力強等優(yōu)點。如圖6-29所示。2023/11/28汽車嵌入式系統(tǒng)設計32圖6-29CAN幀數據段4.濾波原理CAN節(jié)點是通過設置標識符濾波寄存器的方式來識別當前CAN幀是否為自己所需的;2個32位的濾波器、4個16位的濾波器、8個8位濾波器;以2個32位識別濾波器的標識符濾波模式為例講解:2個32位的寄存器為過濾驗收寄存器(AC)和過濾屏蔽寄存器(AM)。過濾驗收寄存器AC設置了標識符每位的值;過濾屏蔽寄存器AM規(guī)定了標識符的每一位的值是否需要與過濾驗收寄存器進行匹配。0——需要匹配,1——不需要匹配。舉例:AC=0x0000037C,AM=0x00000072023/11/28汽車嵌入式系統(tǒng)設計33可見,AM寄存器最低3位為1,不需進行匹配。所以接收到的CAN擴展幀消息的ID的高26位必須與AC寄存器的高26位匹配,才會被過濾接收。表6-8實例中,ID為0x00000378~0x0000037F的報文均能被接收。擴展幀驗收與屏蔽碼的確定可按以下方式實現:(1)確定該CAN節(jié)點需要接收的報文ID。(2)由于這些報文均需要通過驗證,所以選取其中一個報文ID作為基礎過濾驗收碼,并將其余需要通過驗收的報文ID與之按位逐一進行對比,如果所有需要通過驗收的報文ID在該位的值均相同,則對應的過濾屏蔽碼在該位置0,否則置1,即可獲得基礎過濾屏蔽碼。考慮到過濾寄存器為32位,而報文ID是29位,有時還需要根據CAN控制器內部的過濾寄存器與報文ID的對齊方式,進行相應調整。2023/11/28汽車嵌入式系統(tǒng)設計34圖6-30擴展幀濾波屏蔽碼計算器運行圖為保證0x18FFDF00、0x18EAFF00、0x18CBFF00三個ID的報文被接收,對應的驗證碼為0x18FFDF00、屏蔽碼為0x00352000。對于CAN-II分析儀和S12XE系列MCU的驗證碼和屏蔽碼均需做適當調整,具體參見相關手冊。fCANCLK可通過控制寄存器CANCTL1中CLKSRC位選擇時鐘來源。CLKSRC=0,fCANCLK為晶振時鐘;CLKSRC=1,fCANCLK為總線時鐘??删幊填A分頻器將CANCLK分頻生成量子時鐘(Tq),是CAN總線通信過程控制的最小時間單位,其計算公式為:CAN總線的位時間計算公式為:BitTime為位時間(s),分成三段:Sync_Seg、時段1、時段25.CAN總線波特率2023/11/28汽車嵌入式系統(tǒng)設計35圖6-31CA時鐘機制1)Sync_Seg:該段有一個長度固定的時間份額,信號邊沿預計出現在本段;2)時段1:本段包括CAN標準的Prop_Seg和Phase_Seg1,通過設置參數TSEG1,使之包含4~16個時間份額,可對其進行編程;3)時段2:本段表示CAN標準的Phase_Seg2,通過設置TSEG2使之具有2~8個時間份額長,可對其進行編程??偩€時序寄存器有兩個,共同作用決定總線的通信波特率??偩€時序寄存器0(CANBTR0)和總線時序寄存器1(CANBTR1)有著各自不同的功能定義。2023/11/28汽車嵌入式系統(tǒng)設計362023/11/28汽車嵌入式系統(tǒng)設計376.4.4SAEJ1939通信協議SAEJ1939(以下簡稱J1939)是美國汽車工程協會(SAE)的推薦標準,用于中重型道路車輛上電子部件間通信的標準體系結構。J1939基于CAN總線,可達到250Kbps的通信速率。J1939描述了重型車輛現場總線的一種網絡應用,包括CAN網絡物理層定義J1939-11/15、數據鏈路層定義J1939-21、應用層定義J1939-71、網絡層定義J1939-31、故障診斷J1939-73和網絡管理J1939-81。SAEJ1939協議中,不僅僅指定了傳輸類型、報文結構及其分段、流量檢查等,而且報文內容本身也做了精確的定義。J1939是在商用車輛、艦船、軌道機車、農業(yè)機械和大型發(fā)動機中應用最廣泛的應用層協議。2023/11/28汽車嵌入式系統(tǒng)設計382.CAN標準幀和擴展幀標準幀只有11位的標識符(ID),擴展幀有11+18=29位標識符(ID)。CAN數據幀組成包括:幀起始(SOF)、仲裁域、控制域、數據域、循環(huán)冗余校驗域(CRC)、應答域(ACK)、幀結束(EOF)。2023/11/28汽車嵌入式系統(tǒng)設計39圖6-23CAN標準幀和擴展幀協議數據單元(PDU)(1)協議數據單元(PDU)如圖6-24所示,協議數據單元(PDU)=標識符+數據域PDU被封裝在一個或多個CAN數據幀中,通過物理介質傳送到其他網絡設備。每個CAN數據幀只能有一個PDU。CAN2.0B使用29位的標識符來區(qū)分不同的報文;J1939對這29標識符進行了重新的分類和解釋。2023/11/28汽車嵌入式系統(tǒng)設計40圖6-24協議數據單元(PDU)結構協議數據單元(PDU)J1939對CANID進行了重新劃分,加上最多8個字節(jié)的數據域,構成了J1939的協議數據單元,其中前3位表示優(yōu)先級位(P,Priority),之后是擴展數據頁位(EDP,ExtendedDataPage)、數據頁位(DP,DataPage)、PDU格式位(PF,PDUFormat)、PDU特定域位(PS,PDUSpecific)、源地址位(SA,SourceAddress)、數據域(DataFiled)。參數組編號(PGN,ParameterGroupNumber):由29位CANID的中間18位共同組成。J1939是根據PGN來區(qū)分不同的報文(參見J1939-71),而普通CAN的報文是根據CANID來區(qū)分。J1939的協議數據單元與CAN報文幀相比要少SOF、SRR、IDE等,因為這些部分完全由CAN2.0B控制,J1939并未對這部分做任何修改。2023/11/28汽車嵌入式系統(tǒng)設計41(2)J1939PDU各部分介紹1)優(yōu)先級(P):根據CAN2.0B的仲裁機制,ID越小優(yōu)先級越高。優(yōu)先級位于整個ID的最前面,實際上依然控制著ID大小,即CAN報文的優(yōu)先級。在J1939協議中優(yōu)先級僅僅用于優(yōu)化發(fā)送數據時的報文延遲,接收報文時則完全忽略優(yōu)先級。J1939中的優(yōu)先級可以從最高的0(000b)到最低優(yōu)先級7(111b)。默認情況下控制類報文的優(yōu)先級為3,其他報文的優(yōu)先級為6。當分配新的PGN或總線上流量改變時,允許提高或者降低優(yōu)先級。2)擴展數據頁(EDP):擴展數據頁(EDP)聯合數據頁(DP)可以決定CAN報文幀中CANID的結構,目前為保留位,必須設置為0。3)數據頁(DP):用于聯合擴展數據頁來決定CANID結構,當EDP為0時,DP為0或者1分別表示第0頁或者第1頁PGN。2023/11/28汽車嵌入式系統(tǒng)設計42J1939PDU各部分介紹4)PDU格式域(PF):PF用來確定PDU的格式。PF<240(0xF0)為PDU1格式;PF=240~255為PDU2格式,對應PF的高四位均為1。5)PDU特定域(PS):PS的定義取決于PF。PDU1格式下PS域是目標地址(DA,DestinationAddress);PDU2格式下PS域為組擴展(GE,GroupExtension)值。目標地址(DA):除目標地址的設備外,其他設備會忽略此報文。如果目標地址為0xFF,則表示為全局地址,此時所有設備都應該監(jiān)聽此報文并在收到報文后做出響應。組擴展(GE):組擴展與PDU格式域PF的低四位(注意:當PDU格式域最高四位被置1,說明PS域是組擴展)規(guī)定了每個數據頁4096個參數組。6)源地址(SA):完整的汽車系統(tǒng)由多個ECU模塊,SAEJ1939協議為每個控制設備分配了8位地址標識符。SA指示該幀報文是由哪個控制器(用8位地址標識符)發(fā)送的。7)數據域(DATA):存放該幀報文傳送的數據,長度為8字節(jié)。2023/11/28汽車嵌入式系統(tǒng)設計43J1939PDU各部分介紹圖6-24中18位PGN的計算方法非常簡單,可下面算法實現:if(PF<0xF0)PGN=(DP<<9)+(PF<<8);elsePGN=(DP<<9)+(PF<<8)+PS;當PF<240(0xF0),PGN數目等于2×0xF0=480;當PF>=240,PGN數目應等于2×16×256=8192。所以,兩種情況PGN總數應為480+8192=8672。2023/11/28汽車嵌入式系統(tǒng)設計44(3)多幀傳輸機制當傳輸的數據大于8個字節(jié)時,此時就需要使用多幀傳輸。J1939多幀傳輸的規(guī)則很簡單,就是將數據域的第一個字節(jié)當作編號,這樣原來每幀CAN報文最多可傳輸8個字節(jié)內容,由于現在被編號占用了1個字節(jié),只能傳輸7個字節(jié)。由于編號范圍為1~255,所以多幀傳輸的最大數據長度是255×7=1785個字節(jié)。最后一幀報文實際需要傳輸的內容可能不足7字節(jié),剩余字節(jié)要全部設置為0xFF。比如一共要傳輸9個字節(jié),第一幀CAN報文傳輸了7個字節(jié),第二幀CAN報文只能傳輸2個字節(jié),這樣加上1個編號字節(jié),還剩5個字節(jié),這5個字節(jié)要全部設置為0xFF。發(fā)送數據時,按照編號把數據拆裝成多幀報文;接收數據時,則按照編號重新組裝成完整的數據。2023/11/28汽車嵌入式系統(tǒng)設計45(4)參數組編號(PGN)參數組編號唯一標識一個參數組,在通信過程中起到“索引”的作用,表征報文的內容和用途,確定報文的類型和傳播數據需要的幀數目。可以理解為同類(或者有共同特征的設備)參數的集合的索引。SAEJ1939中的PGN格式規(guī)定如下(以pgn61443為例):2023/11/28汽車嵌入式系統(tǒng)設計46pgn61443:ElectronicEngineController#2–EEC2–TransmissionRepetitionRate:50ms —>報文發(fā)送周期DataLength:8Bytes —>數據域長度(CAN擴展幀中的數據域字節(jié)數)DataPage:0 —>數據頁(PGN中的數據頁DP)PDUFormat:240 —>PDU格式:PDU1(PF<240)和PDU2(PF:240~255)PDUSpecific:3 —>PDU特定域(PF<240,DA;240≤PF≤255,組擴展)DefaultPriority:3 —>優(yōu)先級ParameterGroupNumber:61443(0x0F003)—>PGNpgn61443數據域包含的SPN格式定義的解釋:2023/11/28汽車嵌入式系統(tǒng)設計47起始位置長度SPN參數名稱SPN1.12bitsAcceleratorPedalLowIdleSwitch(加速踏板低怠速開關)5581.32bitsAcceleratorPedalKickdownSwitch(加速踏板踩下開關)5591.52bitsRoadSpeedLimit(道路速度限值)143721byteAcceleratorPedalPosition(加速踏板位置)9131bytePercentLoadatCurrentSpeed(當前車速的百分比載荷)9241byteRemoteAccelerator(遠程加速器)974(5)可疑參數編號(SPN,SuspectParameterNumber)J1939-71不僅對PGN做了詳細的規(guī)定,對SPN也做了詳細的規(guī)定,并對每個參數做了編號。SAEJ1939中的SPN格式規(guī)定如下(以SPN91為例):2023/11/28汽車嵌入式系統(tǒng)設計48SPN91–AcceleratorPedalPosition(加速踏板位置)–
Theratioofactualacceleratorpedalpositiontomaximumpedalposition.
AlthoughitisusedasaninputtodeterminetransmissionandASRalgorithmsaboutdriver’sactions.DataLength:1Bytes —>SPN號對應的數據的長度Resolution:0.4%/bit,0offset —>比例系數和偏移量DataRange:0to100% —>數據范圍(涉及偏移量計算)Type:Measured —>測量值SuspectParameterNumber:91 —>SPN號ParameterGroupNumber:[61443] —>隸屬的PGN號總線數值與物理數值之間轉換為:
總線數值=(物理數值-偏移量)/比例系數其中:比例系數代表單位總線數值(二進制1)代表的物理數值大?。?/p>
偏移量代表總線數值為0時物理數值的大小。進一步理解PGN和SPN,以PGN65213為例進行詳細說明2023/11/28汽車嵌入式系統(tǒng)設計49PGN65213在J1939-71中的詳細描述。假設ECU地址為0x9C,優(yōu)先級為默認值6,且此ECU需要往VCU發(fā)送PGN65213(0xFEBD)。根據定義:P=6,EDP=0,DP=0,PF=0xFE,PS=0xBD,SA=0x9C;則CAN報文ID為
0x18FEBD9C。2023/11/28汽車嵌入式系統(tǒng)設計50假如風扇估計的百分比轉速為50%,由于分辨率為0.4%/bit,偏移量為0,則這個字節(jié)的總線數值應為:40%/0.4%=100=0x64。2023/11/28汽車嵌入式系統(tǒng)設計51如果風扇當前因發(fā)動機機油溫度過高而運轉,則風扇驅動狀態(tài)為3(0011b)。如果風扇當前轉速為1500rpm,由于分辨率為0.125rpm/bit,偏移量為0,則這兩個字節(jié)的總線數值應為:1500/0.125=12000=0x2EE0。數據域:Byte1=0x64;Byte2=0xF3;Byte3=0xE0,Byte4=0x2E;Byte5=Byte6=Byte7=Byte8=0xFF。2023/11/28汽車嵌入式系統(tǒng)設計523.J1939的整車通信協議2023/11/28汽車嵌入式系統(tǒng)設計53根據應用場合的不同,節(jié)點數目可以相應的增加或減少。例如,純電動汽車的節(jié)點包括:整車控制器、電控制動(EBS)控制器、電池管理系統(tǒng)、驅動電機控制器、駕駛室顯示器、電機控制器、ISG控制器、BMS電池管理系統(tǒng)、超級電容控制器等。各ECU源地址定義ECU名稱地址ECU名稱地址發(fā)動機控制器0整車控制器208傳動系統(tǒng)(變速器)控制器3燃料電池控制器209電控制動(EBS)控制器11AMT控制器210發(fā)動機緩速器15超級電容控制器211驅動系統(tǒng)緩速器16DC-DC#1214組合儀表23DC-DC#2215行車記錄儀24氫氣供應系統(tǒng)216車身33電動助力轉向系統(tǒng)217PTO動力輸出裝置36驅動電機控制器#1239車輛智能中心39驅動電機控制器#2240駕駛室顯示器40驅動電機控制器#3241排氣緩速器41ISG控制器242車載診斷系統(tǒng)43電池管理系統(tǒng)#1243轉速表238電池管理系統(tǒng)#2244故障診斷(售后服務工具)249電池管理系統(tǒng)#3245
電池管理系統(tǒng)#42462023/11/28汽車嵌入式系統(tǒng)設計54表6-12ECU節(jié)點名稱及其分配地址(2)各ECU輸出參數定義根據汽車所需要實現的控制功能,定義各個節(jié)點的輸出參數,包含節(jié)點所有需要處理或發(fā)送到總線上的信號,并對信號的地址、刷新率、信號類型、信號數據長度、數據范圍、分辨率等進行定義。表6-13給出了整車控制器的部分參數信息。2023/11/28汽車嵌入式系統(tǒng)設計55信號名稱類型刷新率/ms分辨率數據長度/bit數據范圍偏移量目標地址整車控制器狀態(tài)狀態(tài)值100-2工作/未工作-廣播車輛運行模式狀態(tài)值10-4普通/動力/雪地/高速-廣播目標氣門開度測量值100.4%/bit80~100%0廣播發(fā)動機啟動控制狀態(tài)值10-2啟動/未啟動-廣播發(fā)動機目標轉速測量值100.125r/min/bit160~8031.876r/min0發(fā)動機發(fā)動機目標轉矩百分比測量值101%/bit8-125%~125%-125%發(fā)動機……表6-13整車控制器的部分參數信息(3)各ECU參數組定義表6-14中給出了列出了整車控制器的參數組信息。整車控制器的參數組用于實現汽車動力總成系統(tǒng)中各控制單元間的協調控制與管理,例如通過VCU1參數組,整車控制器節(jié)點向發(fā)動機控制器節(jié)點發(fā)送速度和轉矩控制信息。而其他控制器節(jié)點主要用于對整車控制器節(jié)點的反饋信息,例如電機控制器的MC1參數組中定義了電機上電/斷電請求、電機工作狀態(tài)、電機運行模式、電機運轉轉矩、電機運轉轉速等信息。2023/11/28汽車嵌入式系統(tǒng)設計56參數組刷新率/msPGNPPFPSVCU1:整車控制器#1106169632410VCU2:整車控制電動機106169732411VCU3:整車控制燃料電池506169832412VCU4:整車控制ISG206169932413VCU5:整車控制DC-DC506170032414VCU6:整車控制電池1006170132415VCU7:整車控制超級電容506170232416VCU8:整車控制制動需求106170332417VCU9:整車控制開關繼電器50061777324181VCU10:整車控制器產品序列需要時發(fā)送617963241100表6-14整車控制器的參數組信息XEP100的SAEJ1939應用實例【例6-4】基于J1939的報文收發(fā)。2023/11/28汽車嵌入式系統(tǒng)設計57“can.h”代碼:structcan_msg //發(fā)送報文的結構體{unsignedlongid;BoolRTR;unsignedchardata[8];unsignedcharlen;unsignedcharprty;};2023/11/28汽車嵌入式系統(tǒng)設計58“can.c”代碼:voidINIT_CAN0(void);BoolMSCAN0SendMsg(structcan_msgmsg);BoolMSCAN0GetMsg(structcan_msg*msg);#include<hidef.h>#include"derivative.h"#include"CAN.h"/*===初始化CAN0===*/voidINIT_CAN0(void){if(CAN0CTL0_INITRQ==0) //查詢是否進入初始化狀態(tài)
CAN0CTL0_INITRQ=1; //進入初始化狀態(tài)
while(CAN0CTL1_INITAK==0); //等待進入初始化狀態(tài)
CAN0BTR0_SJW=0; //設置同步
CAN0BTR0_BRP=7; //設置波特率
CAN0BTR1=0x1c; //設置時段1和時段2的Tq個數,總線頻率為250kb/sCAN0IDMR0=0xFF;CAN0IDMR1=0xFF;CAN0IDMR2=0xFF;CAN0IDMR3=0xFF;//這里關閉濾波器
CAN0IDMR4=0xFF;CAN0IDMR5=0xFF;CAN0IDMR6=0xFF;CAN0IDMR7=0xFF;CAN0IDAC0=0xFF;CAN0IDAC1=0xFF;CAN0IDAC2=0xFF;CAN0IDAC3=0xFF;//這里關閉校驗器
CAN0IDAC4=0xFF;CAN0IDAC5=0xFF;CAN0IDAC6=0xFF;CAN0IDAC7=0xFF;CAN0CTL1=0xC0; //使能MSCAN模塊,設置為一般運行模式、使用總線時鐘源
CAN0CTL0=0x00;//返回一般模式運行
while(CAN0CTL1_INITAK); //等待回到一般運行模式
while(CAN0CTL0_SYNCH==0); //等待總線時鐘同步
CAN0RIER_RXFIE=0; //禁止接收中斷}2023/11/28汽車嵌入式系統(tǒng)設計59/*===CAN0發(fā)送===*/BoolMSCAN0SendMsg(structcan_msgmsg){unsignedcharsend_buf,sp;if(msg.len>8)return(FALSE); //檢查數據長度
if(CAN0CTL0_SYNCH==0) //檢查總線時鐘
return(FALSE);send_buf=0;do{ //尋找空閑的緩沖器
CAN0TBSEL=CAN0TFLG;send_buf=CAN0TBSEL;}while(!send_buf);CAN0TXIDR0=(unsignedchar)(msg.id>>21); //寫入標識符
CAN0TXIDR1=(((unsignedchar)(msg.id>>13))&0xe0)|0x18|(((unsignedchar)(msg.id>>15))&0x07);CAN0TXIDR2=(unsignedchar)(msg.id>>7);CAN0TXIDR3=((unsignedchar)(msg.id<<1));if(msg.RTR) //RTR=陰性
CAN0TXIDR3|=0x01;for(sp=0;sp<msg.len;sp++) //寫入數據*((&CAN0TXDSR0)+sp)=msg.data[sp];CAN0TXDLR=msg.len; //寫入數據長度
CAN0TXTBPR=msg.prty; //寫入優(yōu)先級
CAN0TFLG=send_buf; //清TXx標志(緩沖器準備發(fā)送)return(TRUE);}2023/11/28汽車嵌入式系統(tǒng)設計60/*===CAN0接收===*/BoolMSCAN0GetMsg(structcan_msg*msg){unsignedcharsp2;if(!(CAN0RFLG_RXF))return(FALSE); //檢測接收標志
if(!CAN0RXIDR1_IDE) //檢測CAN協議報文模式(一般/擴展)標識符
return(FALSE);msg->id=(((unsignedlong)CAN0RXIDR0)<<21)|((unsignedlong)(CAN0RXIDR1&0xe0)<<13)|\((unsignedlong)(CAN0RXIDR1&0x07)<<15)|(((unsignedlong)CAN0RXIDR2)<<7)|\((unsignedlong)(CAN0RXIDR3&0xfe)>>1);//Freescale與J1939的ID結構不完全一致。需要做調整
if(CAN0RXIDR3&0x01)msg->RTR=TRUE;elsemsg->RTR=FALSE;msg->len=CAN0RXDLR; //讀取數據長度
for(sp2=0;sp2<msg->len;sp2++) //讀取數據
msg->data[sp2]=*((&CAN0RXDSR0)+sp2);CAN0RFLG=0x01; //清RXF標志位(緩沖器準備接收)return(TRUE);}2023/11/28汽車嵌入式系統(tǒng)設計61/*===中斷接收函數===*/#pragmaCODE_SEG__NEAR_SEGNON_BANKEDvoidinterruptCAN_receive(void){if(MSCAN1GetMsg(&msg_get)){if(msg_get.id==ID&&(!msg_get.RTR)) //接收新信息
{LEDCPU=~LEDCPU;datain=1;}}}#pragmaCODE_SEGDEFAULT2023/11/28汽車嵌入式系統(tǒng)設計62“main.c”中相關部分:#defineID0x0CF00400 //發(fā)送標識符#definedata_len_TX8 //發(fā)送數據長度structcan_msgmsg_send,msg_get;unsignedchardatain=0;msg_send.id=ID;//發(fā)送報文
for(k=0;k<data_len_TX;k++){msg_send.data[k]=senddata[k];}msg_send.len=data_len_TX;msg_send.RTR=FALSE;msg_send.prty=0;if(!MSCAN0SendMsg(msg_send)){ //發(fā)送過程出現錯誤
…; //錯誤處理代碼}6.5LIN總線6.5.1LIN總線協議LIN(LocalInterconnectNetwork,本地互聯網絡)總線是一種單線串行通信網絡;LIN設計目標:為現有汽車
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 投資顧問面試考核題及答案詳解
- 特殊群體急救資源可及性提升方案
- 深度解析(2026)《GBT 18932.10-2002蜂蜜中溴螨酯、44-二溴二苯甲酮殘留量的測定方法 氣相色譜質譜法》
- 生產項目管理經理的招聘面試題集
- 勞務輸出項目可行性分析報告范文(總投資13000萬元)
- 教育顧問面試題集及應對策略
- 深度解析(2026)《GBT 9002-2017音頻、視頻和視聽設備及系統(tǒng)詞匯》
- 京東物流策劃部面試題及策略性答案
- 會計事務所審計師面試問題及答案
- 關于華能集團對副總經理的考核制度分析
- JT-T-961-2020交通運輸行業(yè)反恐怖防范基本要求
- MOOC 物理與藝術-南京航空航天大學 中國大學慕課答案
- 銀行案件復盤分析報告
- 分析方法轉移方案課件
- 無創(chuàng)呼吸機面部壓瘡預防措施
- 全國高校黃大年式教師團隊推薦匯總表
- 員工管理規(guī)章制度實施細則
- 社會心理學(西安交通大學)知到章節(jié)答案智慧樹2023年
- 《安井食品價值鏈成本控制研究案例(論文)9000字》
- GB/T 4135-2016銀錠
- GB/T 33084-2016大型合金結構鋼鍛件技術條件
評論
0/150
提交評論