CAN總線的使用_第1頁(yè)
CAN總線的使用_第2頁(yè)
CAN總線的使用_第3頁(yè)
CAN總線的使用_第4頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.CAN 總線的使用1、硬件連接方式硬件電路如下圖所示:圖中, D1( IL712 )是磁隔離器件,其作用為了使各下井儀之間實(shí)現(xiàn)電氣隔離。各下井儀需要為 D1 提供兩組 5V 電源,圖中標(biāo)為 VCC1 和 VCC2。其中, VCC1 為儀器內(nèi)部數(shù)字電源,提供給單片機(jī) C8051F041 和其它數(shù)字電路; VCC2 是隔離電源,用于給 IL712 和 TJA1050 供電,電源電流應(yīng)大于 75mA。C1、C2 為兩組電源的濾波電容。 D1 的 2 腳與 C8051F041(圖中未畫(huà))的 7 腳(CANTX )直接連接, D1 的 3 腳與 C8051F041 的 6 腳(CANRX )直接連接。

2、D2( TJA1050)為 CAN 總線收發(fā)器,該器件應(yīng)用 VCC2 供電。 C3 為該器件的濾波電容。 D2 的輸出 CANH ( 6 腳)、CANL ( 7 腳)直接連接到下井儀的總線上。R1、 R2、 C4 為 CAN 總線終端匹配電阻的接法,這三個(gè)器件只需要在處在下井儀串上下兩端的儀器中需要。即:在某儀器中,如果CAN 總線是貫通線,則不能連接這三個(gè)器件,反之,如果在該儀器中,如果 CAN 總線不是貫通線,則需要連接這三個(gè)器件。輸出的 CANH 和 CANL 應(yīng)雙絞。.2、軟件使用方法編程者應(yīng)該熟悉以下兩本資料: C8051F040/1/2/3/4/5/6/7 混合信號(hào) ISP FLA

3、SH 微控制器數(shù)據(jù)手冊(cè) BoschsC_CAN Users Manual在下井儀中建議采用 C8051F041 或 C8051F040 單片機(jī),該單片機(jī)內(nèi)部集成了 Bosch CAN 控制器。以下簡(jiǎn)要介紹 C8051F04x 單片機(jī)和 Bosch CAN 控制器及其軟件編程方法。2.1 C8041F04x 單片機(jī) SFR 的分頁(yè)機(jī)制C8051F04x 系列 MCU 對(duì) CIP 51 內(nèi)核和外設(shè)有幾項(xiàng)關(guān)鍵性的改進(jìn), 提高了整體性能。其中與編程密切相關(guān)的一點(diǎn)是使用了 SFR(特殊功能寄存器) 分頁(yè)機(jī)制,允許器件將很多 SFR 映射到 0X80 0XFF 這個(gè)存儲(chǔ)器空間。C8051F04x 器件使用

4、了 5 個(gè) SFR 頁(yè): 0、1、2、3 和 F。使用特殊功能寄存器頁(yè)選擇寄存器 SFRPAGE 來(lái)選擇 SFR 頁(yè)。因此,讀、寫(xiě)一個(gè) SFR 的步驟為:1. 用 SFRPAGE寄存器選擇相應(yīng)的 SFR 頁(yè)號(hào)。2. 用直接尋址方式讀、寫(xiě)特殊功能寄存器。 (與以前的用法相同)。使用 CAN 控制器時(shí),需要將SFRPAGE 設(shè)置為 1(用指令 mov sfrpage,#1)。編程中用到的其它特殊功能寄存器可參看數(shù)據(jù)手冊(cè)說(shuō)明。2.2 C8041F04x 單片機(jī)中 CAN 相關(guān)特殊功能寄存器參看數(shù)據(jù)手冊(cè)第 201 203 頁(yè)。2.2.1 CAN 控制器寄存器的訪問(wèn)方式可以直接通過(guò)訪問(wèn)一般SFR 方式訪

5、問(wèn)的寄存器共有6 個(gè):CAN0CNCAN 控制寄存器CAN0STACAN 狀態(tài)寄存器CAN0TSTCAN 測(cè)試寄存器CAN0ADR寄存器索引地址CAN0DATH數(shù)據(jù)字高字節(jié)CAN0DATL數(shù)據(jù)字低字節(jié)其它 CAN 控制器寄存器只能通過(guò)CAN0ADR 、 CAN0DATH 、CAN0DATL訪問(wèn)。訪問(wèn)方式:先向 CAN0ADR 中寫(xiě)入待訪問(wèn) CAN 控制器寄存器的索引號(hào),然后通過(guò) CAN0DATH 寫(xiě)入或讀出高字節(jié),通過(guò) CAN0DATL 寫(xiě)入或讀出低字節(jié)。例如: 0X5 號(hào)寄存器其中寫(xiě)入0X1234h,可采用以下三條指令:mov can0adr,#0x5mov can0dath,#12hmov

6、 can0datl,#34h對(duì)于某些索引地址,在向can0datl 進(jìn)行寫(xiě)入或讀出操作后,can0adr 有自動(dòng)加 1 功能,因此必須向操作 can0dath,再操作 can0datl。CAN0CN 、CAN0STA 、CAN0TST 也有索引地址, 也可以通過(guò)地址索引方式訪問(wèn)。2.2.3 CAN 控制器寄存器組成.CAN 控制器寄存器可分為以下幾類(lèi):2.2.3.1 CAN 控制器協(xié)議相關(guān)寄存器1 CAN 控制寄存器(索引地址0x00 )resresresresresres resresTestCCEDARCANIFEIESIEIEInitrrrrrrrrrwrwrwrrwrwrwrwTest

7、1測(cè)試模式Test 0正常工作模式一般將 Test位置 0CCE 1 時(shí)可以控制更改位定時(shí)寄存器一般將 CCE 位置 0DAR禁止自動(dòng)重發(fā)功能使用中將該位置 1CANIFCAN 中斷標(biāo)志EIE錯(cuò)誤中斷使能SIE狀態(tài)中斷使能IECAN 中斷使能Init初始化時(shí)將該位置1,正常工作時(shí)將該位置 02 CAN 狀態(tài)寄存器(索引地址0x01 )resresresresresres resResBOffEWarnEPassRxOKTxOKLECrrrrrrrRrrrrwrwrw該寄存器反映 CAN 控制器的狀態(tài)。BOff處于離線狀態(tài)( 1)EWarn警告狀態(tài)( 1 說(shuō)明錯(cuò)誤計(jì)數(shù)器中至少有一個(gè)達(dá)到錯(cuò)誤警告的

8、極限值)EPass處于被動(dòng)錯(cuò)誤狀態(tài)RxOK自上次這位被清0 后,又成功地收到一條消息TxOK自上次這位被清0 后,又成功地發(fā)送一條消息LECCAN 總線上最后一次錯(cuò)誤的類(lèi)型3 CAN 錯(cuò)誤計(jì)數(shù)器(索引地址0x02 )RPREC6 0TEC7 0rRrRP接收被動(dòng)錯(cuò)誤達(dá)到 CAN 協(xié)議規(guī)定的被動(dòng)錯(cuò)誤水平(1)REC6 0接收錯(cuò)誤計(jì)數(shù)器,記錄接收錯(cuò)誤的次數(shù)TEC7 0發(fā)送錯(cuò)誤計(jì)數(shù)器,記錄發(fā)送錯(cuò)誤的次數(shù)4 CAN 位定時(shí)寄存器(索引地址0x03 )resTseg2Tseg1SJWBRPrrwrwrwrw.該寄存器的設(shè)置與 CAN 總線通訊的波特率有關(guān),各下井儀需統(tǒng)一設(shè)定,各位含義可參看 CAN 控制

9、器用戶(hù)手冊(cè)。5 CAN 測(cè)試寄存器(索引地址0x04 )resresresresresresresResRxTx1Tx0LbackSilentBasicresresrrrrrrrRrrwrwrwrwrwrr該寄存器只有在 CAN 控制寄存器中的 Test位 1 時(shí)才有效,用于測(cè)試 CAN 總線的通訊功能,在正常工作時(shí)不使用。6 CAN 位定時(shí)擴(kuò)展寄存器(索引地址0x06 )resresresresresresresresresresresresBRPErrrrrrrrrrrrrw該寄存器的設(shè)置與 CAN 總線通訊的波特率有關(guān),各下井儀需統(tǒng)一設(shè)定,各位含義可參看 CAN 控制器用戶(hù)手冊(cè)。2.2.

10、3.2 消息對(duì)象接口寄存器CAN 控制器中有一塊消息RAM ,可以存儲(chǔ) 32 條消息對(duì)象,每條消息對(duì)象中包含 8 字節(jié)有用數(shù)據(jù)及其它協(xié)議相關(guān)控制信息。CPU 訪問(wèn)消息 RAM 中任何一條消息對(duì)象都必須通過(guò)消息對(duì)象接口寄存器完成。CAN 控制器中共有兩套消息對(duì)象接口寄存器 IF1 和 IF2。 IF1 和 IF2 除了在測(cè)試模式下的用法有所不同外, 在正常工作時(shí)用法相同。 可以將一套用于將數(shù)據(jù)寫(xiě)入消息 RAM ,另一套用于從消息 RAM 中讀取數(shù)據(jù)。在此,只介紹 IF1 寄存器組的用法。1 IF1 命令請(qǐng)求寄存器(索引地址 0x08 )Message Number 為消息對(duì)象的編號(hào),有效值為 0

11、x01 0x20,分別對(duì)應(yīng) 32 個(gè)消息對(duì)象,用于設(shè)定要訪問(wèn)的消息對(duì)象的編號(hào)。CPU 向命令請(qǐng)求寄存器中寫(xiě)入消息編號(hào)后,消息就在 IF1 寄存器組與消息 RAM 之間開(kāi)始傳送。隨著寫(xiě)操作, Busy 位自動(dòng)置 1,傳送過(guò)程完成后, Busy 自動(dòng)清 0。因此,必須在完成IF1 寄存器組中其它寄存器的設(shè)置后,再向IF1 命令請(qǐng)求寄存器寫(xiě)入消息編號(hào)。2IF1 命令掩碼寄存器(索引地址0x09 )IF1 命令掩碼寄存器中的控制位指定傳輸方向,并選擇消息對(duì)象的哪些位作為數(shù)據(jù)傳輸?shù)哪康幕蛟础?WR/RD讀/寫(xiě)1 寫(xiě):數(shù)據(jù)從 IF1 送到消息 RAM 中0讀:數(shù)據(jù)從消息送到IF1Mask存取 Mask 位

12、1傳輸 Identifier Mask Mdir MXtd 位0 屏蔽位不變化Arb存取仲裁位1傳輸 Identifier Mask Dir Xtd Msgval 位0 仲裁位不變化Control存取控制位1 傳輸控制位到消息 RAM 中0 控制位不變化ClrIntPnd清除中斷請(qǐng)求位讀操作時(shí)1清除消息 RAM 中的 IntPnd 位0不改變 IntPnd 位在寫(xiě)操作時(shí),此位被忽略TxRqst/NewDat存取傳輸請(qǐng)求位讀操作時(shí)1清除消息對(duì)象中的NewDat 位0 不改變 NewDat 位寫(xiě)操作時(shí)1 將傳輸請(qǐng)求位置 10 不改變傳輸請(qǐng)求位Data A存取數(shù)據(jù)字節(jié)0 31 傳輸數(shù)據(jù)字節(jié) 0 30

13、 不改變數(shù)據(jù)字節(jié) 0 3Data B 存取數(shù)據(jù)字節(jié) 4 71 傳輸數(shù)據(jù)字節(jié) 4 70 不改變數(shù)據(jù)字節(jié) 4 73 IF1 掩碼 1(索引地址 0x0a )、 IF1 掩碼 2(索引地址 0x0b )Msk28Msk01 相應(yīng)的位使用接受過(guò)濾0 消息對(duì)象的 ID 號(hào)中對(duì)應(yīng)位不用于接受過(guò)濾MXtd1 在接受過(guò)濾中使用擴(kuò)展 ID 號(hào) 0 不使用擴(kuò)展 ID 號(hào).MDir1 消息方向位 Dir 用于接受過(guò)濾中0 消息方向位 Dir 在接受過(guò)濾中不使用4 IF1 仲裁 1(索引地址 0x0c )、 IF1 仲裁 2(索引地址 0x0d )ID28 ID0消息對(duì)象的 ID 號(hào)標(biāo)準(zhǔn)幀只使用 ID28 ID18M

14、sgVal1 該消息對(duì)象已經(jīng)配置,消息處理器納入處理0 消息處理器不考慮該消息對(duì)象Xtd1 使用 29 位 ID 號(hào)(擴(kuò)展幀)0 使用 11 位 ID 號(hào)(標(biāo)準(zhǔn)幀)下井儀器中一律采用標(biāo)準(zhǔn)幀Dir1 消息對(duì)象方向?yàn)榘l(fā)送,消息對(duì)象作為數(shù)據(jù)幀傳送0 消息對(duì)象方向?yàn)榻邮?,收到匹配ID 號(hào)的數(shù)據(jù)幀時(shí),存儲(chǔ)在該消息對(duì)象中4 IF1 消息控制(索引地址 0x0e )NewDat1消息處理器或 CPU 向消息對(duì)象中寫(xiě)入了新的數(shù)據(jù)MsgLst1CPU 丟失了消息IntPnd1該消息對(duì)象是中斷源UMask1使用屏蔽( Msk28Msk0, MXtd ,Mdir )作為接受過(guò)濾.TxIE1成功地發(fā)送一條消息RxIE

15、1成功地接收一條消息RmtEn1遠(yuǎn)程幀使能下井儀中不使用遠(yuǎn)程幀TxRqst1該消息對(duì)象請(qǐng)求發(fā)送,尚未完成Eob1單個(gè)的消息對(duì)象或一個(gè) FIFO 緩存的最后一個(gè)消息對(duì)象DLC3-0數(shù)據(jù)長(zhǎng)度 085 IF1 數(shù)據(jù) A1 、A2 、 B1、B2 8 字節(jié)有效數(shù)據(jù)2.2.3.3 消息處理器寄存器這些只讀寄存器用于向 CPU 提供有關(guān)消息對(duì)象的信息消息 RAM 中可以存儲(chǔ) 32 條消息對(duì)象,每個(gè)消息對(duì)象都包含了2.2.3.2 中說(shuō)明的可與 IF1 交互的信息位。消息處理器寄存器的所有信息都是32 位,每位分別對(duì)應(yīng)一條消息對(duì)象。1 發(fā)送請(qǐng)求 1、發(fā)送請(qǐng)求 21 說(shuō)明該消息對(duì)象被請(qǐng)求發(fā)送,還沒(méi)有完成發(fā)送2

16、新數(shù)據(jù) 1、新數(shù)據(jù) 21 說(shuō)明該消息對(duì)象中寫(xiě)入了新數(shù)據(jù)CPU 可以通過(guò)讀取該位,檢查哪個(gè)消息對(duì)象的數(shù)據(jù)部分被更新了。3 中斷標(biāo)志 1、中斷標(biāo)志 21 指明該消息對(duì)象是一個(gè)中斷源.4 消息有效 1、消息有效 21 該消息已經(jīng)配置好,消息處理器予以考慮3、軟件編程示例軟件編程需要實(shí)現(xiàn)三個(gè)功能:1 初始化(設(shè)定位定時(shí)寄存器及消息對(duì)象)2 發(fā)送消息3 讀取接收的消息3.1 初始化位定時(shí)寄存器示例movsfrpage,#1; 將 Sfrpage指向 can0page頁(yè)movcan0cn,#41h;init 位 1CCE1 允許寫(xiě)位定時(shí)寄存器movcan0adr,#3; 地址寄存器指向位定時(shí)寄存器movc

17、an0dath,#18h; 先寫(xiě)高字節(jié)movcan0datl,#40h; 位定時(shí)寄存器設(shè)為 0x18403.2 初始化接收消息對(duì)象示例初始化對(duì)象的作用是設(shè)置消息對(duì)象需要實(shí)現(xiàn)的功能, 即設(shè)置 CAN 控制器內(nèi)部的消息 RAM 中某個(gè)消息對(duì)象的各個(gè)位域值。 設(shè)定該對(duì)象用于發(fā)送還是接收; 設(shè)定該對(duì)象接收或發(fā)送的 ID 號(hào),如用于接收還需要設(shè)定是否使用接受過(guò)濾功能;初始化對(duì)象通過(guò) IF1 或 IF2 寄存器組完成設(shè)置,首先確定要設(shè)置的消息對(duì)象的性質(zhì)。在此,假設(shè)初始化消息 RAM(共 20 個(gè)消息對(duì)象)中的第一個(gè)對(duì)象,作用是只接受 ID11 的數(shù)據(jù)。假設(shè)我們用 IF1 寄存器組設(shè)置消息對(duì)象。首先確定消息

18、對(duì)象的各個(gè)位域的值:ID 11 轉(zhuǎn)換為 2 進(jìn)制數(shù)為 1011b以下根據(jù)要求確定IF1 各個(gè)寄存器的值: IF1 Mask1(掩碼)的值為 0000h (因?yàn)槲覀兗s定使用 11 位 ID 的標(biāo)準(zhǔn)幀,所以有用的 ID 位僅為 ID28 ID18, Mask15 0 為未用位,設(shè)為 0) IF1 Mask2 的值為 1FFCh (含義: MXtd 0 表示在接受過(guò)濾中不使用擴(kuò)展 ID 號(hào),MDir0 表示在接受過(guò)濾中不考慮數(shù)據(jù)傳輸方向,后面為 11 位 1 表示只接受與 IDIF1Arb 中設(shè)定 ID 號(hào)的數(shù)據(jù)幀,最后兩位對(duì)應(yīng)與ID17、ID16 因未使用設(shè)為 0) IF1 Arb1 (仲裁)的值

19、為0000h(理由同) IF1 Arb2 的值為 802Ch (含義: MsgVal 1 表示設(shè)置該消息 RAM有效,如該位 0,相當(dāng)與該消息 RAM不在使用中; Dir 0 表示設(shè)定為接受消息;后面為 ID 號(hào)× 4 的二進(jìn)制數(shù),因?yàn)樽畹蛢晌粸镮D17、 ID16). IF1 消息控制值為 1088h (含義:UMask 1 表示設(shè)置消息過(guò)濾功能; Eob 1 表示該消息對(duì)象不屬于一個(gè) FIFO; DLC3-0=8表示發(fā)送 8 字節(jié)數(shù)據(jù),不影響接收過(guò)程,接收完成后,自動(dòng)填充接收到的有效字節(jié)數(shù)) 。 IF1 命令掩碼寄存器值為 00F0h (含義: WR 1 表示從 IF1 向消息

20、RAM寫(xiě); Mask1 表示傳輸 ID Mask Mdir MXtd 到消息對(duì)象中; Arb1 表示傳輸ID Dir Xtd Msgval 到消息對(duì)象中; Control 1 表示傳輸控制位到消息對(duì)象中) IF1 命令請(qǐng)求寄存器值為 0001h(含義傳送 IF1 寄存器組內(nèi)容到第一個(gè)報(bào)文對(duì)象中;這個(gè)寄存器必須在設(shè)置完 IF1 的其它寄存器后再寫(xiě), 因?yàn)橐坏┫蜻@個(gè)寄存器中寫(xiě)入值后, IF1 寄存器組與消息 RAM就開(kāi)始交換數(shù)據(jù)了。以下是程序代碼: mov sfrpage,#1 mov can0adr,#9movcan0dath,#00h ;這句可以省略movcan0datl,0f0h ;執(zhí)行完后

21、 can0adr 自動(dòng)加 1movcan0dath,#0movcan0datl,#0movcan0dath,ifxmask2hmovcan0datl,ifxmask2lmovcan0dath,#0movcan0datl,#0movcan0dath,1fhmovcan0datl,fchmovcan0dath,00hmovcan0datl,00hmovcan0dath,#80hmovcan0datl,#2chmovcan0dath,#10hmovcan0datl,#08hmovcan0adr,#8movcan0dath,#00h ;這句可以省略movcan0datl,#01h3.3 讀取消息示例在

22、此,假設(shè)上述設(shè)置中,消息 RAM中的第一個(gè)對(duì)象中收到了新的數(shù)據(jù),可通過(guò)以下程序讀取。在此,我們只通過(guò) IF2 寄存器組讀取數(shù)據(jù),而不考慮其它位的讀取。將讀取的 8 字節(jié)數(shù)據(jù)放在 30h37h 單元中,有效字節(jié)個(gè)數(shù)放在 38h 單元中。movsfrpage,#1movcan0adr,#21hmovcan0dath,#00h; 這句可省略movcan0datl,#1fhmovcan0adr,#20hmovcan0dath,#00h; 這句可省略movcan0datl,# 01h.here:mova,can0dathjbacc.7,here; 等待傳送完成movcan0adr,#26hmova,ca

23、n0datlanla,#0fhmov30h,can0dathmov31h,can0datlmov32h,can0dathmov33h,can0datlmov34h,can0dathmov35h,can0datlmov36h,can0dathmov37h,can0datl3.4 初始化發(fā)送消息對(duì)象示例在此,假設(shè)初始化消息RAM(共 20 個(gè)消息對(duì)象)中的第一個(gè)對(duì)象,作用是發(fā)送 ID 11 的數(shù)據(jù)。假設(shè)我們需要發(fā)送8 字節(jié)數(shù)據(jù),用 IF1 寄存器組設(shè)置消息對(duì)象。首先確定消息對(duì)象的各個(gè)位域的值:ID 11 轉(zhuǎn)換為 2 進(jìn)制數(shù)為 1011b以下根據(jù)要求確定IF1 各個(gè)寄存器的值: IF1 Mask1

24、(掩碼)的值對(duì)于發(fā)送無(wú)作用,可以不設(shè)置 IF1 Mask2 的值對(duì)于發(fā)送無(wú)作用,可以不設(shè)置 IF1 Arb1 (仲裁)的值為 0000h(理由同) IF1 Arb2 的值為 A02Ch (含義: MsgVal 1 表示設(shè)置該消息 RAM有效,如該位 0,相當(dāng)與該消息 RAM不在使用中; Dir 1 表示設(shè)定為發(fā)送消息;后面為 ID 號(hào)× 4 的二進(jìn)制數(shù),因?yàn)樽畹蛢晌粸?ID17、 ID16) IF1 消息控制值為 0088h (含義: Eob 1 表示該消息對(duì)象不屬于一個(gè)FIFO;DLC3-0=8表示發(fā)送 8 字節(jié)數(shù)據(jù),如果發(fā)送小于 8 字節(jié)數(shù)據(jù),則該為相應(yīng)值)。 IF1 命令掩碼寄存器值為 00b0h (含義: WR 1 表示從 IF1 向消息 RAM寫(xiě); Arb 1 表示傳輸 ID Dir Xtd Msgval 到消息對(duì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論