CAN總線通信機(jī)制

介紹

在汽車產(chǎn)業(yè)中庇勃,各種各樣的ECU被開發(fā)出來,來提高汽車的安全性槽驶、舒適性责嚷、方便性,同時(shí)滿足對(duì)低公害掂铐、低成本的要求罕拂。但各個(gè)電控系統(tǒng)對(duì)通信的數(shù)據(jù)類型揍异、時(shí)效性、可靠性要求不盡相同爆班。如果按照常規(guī)的點(diǎn)對(duì)點(diǎn)布線方式衷掷,那么有多條總線構(gòu)成的情況很多,線束數(shù)量也隨之增加柿菩。

點(diǎn)對(duì)點(diǎn)通信

為了減少線束數(shù)量戚嗅,通過多個(gè)LAN,進(jìn)行大量數(shù)據(jù)的高速通信的需要枢舶,1986年德國電氣商博世公司開發(fā)出面向汽車的CAN通信協(xié)議懦胞。并通過ISO11898 及ISO11519 進(jìn)行了標(biāo)準(zhǔn)化。

總線通信

現(xiàn)在凉泄,CAN 的高性能和可靠性已被認(rèn)同躏尉,并被廣泛地應(yīng)用于工業(yè)自動(dòng)化、船舶后众、醫(yī)療設(shè)備胀糜、工業(yè)設(shè)備等方面。被譽(yù)為自動(dòng)化領(lǐng)域的計(jì)算機(jī)局域網(wǎng)吼具。它的出現(xiàn)為分布式控制系統(tǒng)實(shí)現(xiàn)各節(jié)點(diǎn)之間實(shí)時(shí)僚纷、可靠的數(shù)據(jù)通信提供了強(qiáng)有力的技術(shù)支持。

CAN總線是一種多主控的總線系統(tǒng)拗盒,在網(wǎng)絡(luò)空閑時(shí)怖竭,接入網(wǎng)絡(luò)的單元節(jié)點(diǎn)都可以發(fā)送數(shù)據(jù)。當(dāng)兩個(gè)以上單元同時(shí)開始發(fā)送消息時(shí)陡蝇,根據(jù)標(biāo)識(shí)符(ID)決定優(yōu)先級(jí)痊臭。

CAN網(wǎng)絡(luò)的消息是廣播式的,同一時(shí)刻網(wǎng)絡(luò)上的所有單元節(jié)點(diǎn)讀取到的數(shù)據(jù)是相同的登夫,是一種基于消息廣播的串行通信總線广匙。

通信機(jī)制與特性

CAN總線標(biāo)準(zhǔn)中規(guī)定的硬件控制層面包括物理層和數(shù)據(jù)鏈路層,至于軟件應(yīng)用層需要用戶自定義恼策。

下面對(duì)核心的物理層和數(shù)據(jù)鏈路層進(jìn)行介紹鸦致。


CAN物理層

不同的CAN總線標(biāo)準(zhǔn)只在物理層有所不同。
CAN總線上連接了不同的設(shè)備(單元節(jié)點(diǎn))涣楷,CAN網(wǎng)絡(luò)的拓?fù)湟话銥榫€型分唾。線束最常用的是非屏蔽雙絞線,線上傳輸為對(duì)稱的差分電平信號(hào)狮斗。

CAN總線節(jié)點(diǎn)示意圖

如上圖绽乔,一個(gè)節(jié)點(diǎn)主要包括Host、控制器和收發(fā)器三部分碳褒。CAN收發(fā)器將控制器設(shè)備連接到總線上折砸。在發(fā)送數(shù)據(jù)時(shí)看疗,CAN控制器將要發(fā)送的二進(jìn)制編碼發(fā)送給CAN收發(fā)器,然后由收發(fā)器把這個(gè)普通的邏輯電平信號(hào)轉(zhuǎn)化為差分信號(hào)睦授,通過差分線CAN_High和CAN_Low輸出到CAN總線網(wǎng)絡(luò)上两芳。接受數(shù)據(jù)時(shí),正好相反去枷,CAN控制器根據(jù)兩根線上的電位差來判斷總線電平盗扇。因此CAN總線物理傳輸媒介只需要兩根線。

高速CAN總線最高信號(hào)傳輸速率為1Mbps沉填,支持最長距離40m疗隶。ISO11898-2要求在高速CAN總線兩段安裝端接電阻RL(端接電阻一般為120?,因?yàn)殡娎|的特性阻抗為120 ?翼闹,為了模擬無限遠(yuǎn)的傳輸線斑鼻。)以消除反射。低速CAN最高速度只有125Kbps猎荠,所以ISO11898-3沒有端接要求坚弱。

在傳輸距離方面,由于距離越遠(yuǎn)关摇,信號(hào)時(shí)延也越大荒叶,為了確保信息的正確采樣,總線上的信號(hào)速率也的下降输虱。下圖是推薦的信號(hào)速率與距離的關(guān)系些楣。

CAN總線通過兩個(gè)信號(hào)線進(jìn)行差分信號(hào)傳輸。邏輯0和邏輯1通過兩根線上的電壓差來表示宪睹。而高速CAN和低速CAN總線在物理層信號(hào)電平上定義有所不同愁茁。

在高速CAN中,定義兩根線電壓下相同(2.5V)時(shí)為邏輯0(顯性)亭病,當(dāng)兩電壓相差為2V(CAN_High = 3.5V, CAN_Low = 1.5V)時(shí)為邏輯1(隱性)鹅很。

低速CAN中,定義電壓差為5V(CAN_High = 0V, CAN_Low = 5V)時(shí)為邏輯1罪帖,電壓差為1.5V(CAN_High = 3.6V, CAN_Low = 1.4V)時(shí)為邏輯0促煮。

高速CAN信號(hào)電平
低速CAN信號(hào)電平

總線電平分為顯性電平和隱性電平,二者必居其一整袁。CAN總線的信號(hào)電平具有線與特性菠齿,既顯性電平(0)總是會(huì)掩蓋隱性電平(1)。如果不同節(jié)點(diǎn)同時(shí)發(fā)送顯性和隱性電平葬项,總線上表現(xiàn)出顯性電平(0)泞当,只有在總線上所有節(jié)點(diǎn)發(fā)送的都是隱性電平(1)時(shí)迹蛤,總線才表現(xiàn)為隱性民珍。

線與特性


CAN數(shù)據(jù)鏈路層

只是用兩條信號(hào)線的CAN襟士,每次只能表達(dá)一個(gè)信號(hào),簡潔的物理層決定了CAN必然要配上一套較為復(fù)雜的協(xié)議嚷量。

通信機(jī)制
  • 多主機(jī)
    對(duì)安全敏感的應(yīng)用(如汽車)對(duì)通信系統(tǒng)的可靠性要求很高陋桂。將整個(gè)總線的正常與否托付于單個(gè)節(jié)點(diǎn)是極其危險(xiǎn)的。比較合理的方法是對(duì)總線的接入去中心化蝶溶,是每個(gè)節(jié)點(diǎn)都有接入總線的能力嗜历。所以CAN總線采用多主控的線性拓?fù)浣Y(jié)構(gòu)。
    在總線上抖所,每個(gè)節(jié)點(diǎn)發(fā)送消息不必遵循任何預(yù)先設(shè)定的時(shí)序梨州,通信是事件驅(qū)動(dòng)的。只有當(dāng)有新的信息傳遞時(shí)田轧,CAN總線才處于忙碌狀態(tài)暴匠。這使得節(jié)點(diǎn)接入總線速度非常快傻粘,對(duì)于異步事件反應(yīng)迅速每窖,基本上對(duì)于ms級(jí)別的實(shí)時(shí)應(yīng)用沒有任何問題。

  • 尋址機(jī)制
    不同其他類型的總線弦悉,CAN總線不設(shè)定節(jié)點(diǎn)的地址窒典,而是通過消息的標(biāo)識(shí)符(ID)來區(qū)別消息。雖然這在消息中增加了標(biāo)識(shí)符稽莉,提高了復(fù)雜度瀑志。但這使得節(jié)點(diǎn)可以無需了解其他節(jié)點(diǎn)的狀況,而相互獨(dú)立工作污秆。在總線上增加節(jié)點(diǎn)只需關(guān)注消息類型后室,不需要關(guān)心其他節(jié)點(diǎn)的狀況,更加靈活混狠。

  • CSMA/CD+AMP
    CAN總線通信原理可以簡單描述為多路載波偵聽(CSMA)+仲裁機(jī)制(CD)和基于消息優(yōu)先級(jí)的沖突檢測(AMP)岸霹。
    CSMA(CarrieSense Multiple Access)指的是所有節(jié)點(diǎn)必須都等到總線處于空閑狀態(tài)時(shí)才能往總線上發(fā)送消息。由于所有節(jié)點(diǎn)接在同一根總線上将饺,且以廣播的形式發(fā)送消息贡避。所以每個(gè)節(jié)點(diǎn)在發(fā)送數(shù)據(jù)前都要檢測總線上是否已有數(shù)據(jù)傳輸。如果總線上有數(shù)據(jù)予弧,則暫時(shí)不發(fā)送數(shù)據(jù)刮吧,等待網(wǎng)絡(luò)空閑時(shí)再發(fā)。
    CD+AMP(Collision Detection + Arbitration on Message Priority)指的是節(jié)點(diǎn)在發(fā)送數(shù)據(jù)時(shí)掖蛤,要不停地檢測發(fā)送的數(shù)據(jù)是否與其他節(jié)點(diǎn)數(shù)據(jù)發(fā)送沖突杀捻。當(dāng)出現(xiàn)沖突時(shí),通過ID仲裁蚓庭,總線優(yōu)先保證發(fā)送ID更小的消息致讥。報(bào)文優(yōu)先級(jí)低的節(jié)點(diǎn)退出仲裁后仅仆,在下次總線空閑時(shí)自動(dòng)重新發(fā)送報(bào)文。

  • 報(bào)文接收過濾
    由于CAN總線以廣播形式傳播消息垢袱,所以CAN總線上的所有節(jié)點(diǎn)都可以接受到CAN上的消息墓拜。但各控制器會(huì)根據(jù)其ID過濾報(bào)文的功能,直接收需要的報(bào)文请契。
CAN報(bào)文種類及結(jié)構(gòu)

CAN協(xié)議是通過以下5種類型的幀進(jìn)行的:

幀類型 幀用途
數(shù)據(jù)幀 用于發(fā)送單元向接收單元傳送數(shù)據(jù)的幀
遠(yuǎn)程幀 用于接收單元向具有相同 ID 的發(fā)送單元請求數(shù)據(jù)的幀
錯(cuò)誤幀 用于當(dāng)檢測出錯(cuò)誤時(shí)向其它單元通知錯(cuò)誤的幀
過載幀 用于接收單元通知其尚未做好接收準(zhǔn)備的幀
間隔幀 用于將數(shù)據(jù)幀及遙控幀與前面的幀分離開來的幀

1咳榜、數(shù)據(jù)幀
數(shù)據(jù)幀是CAN通信中最主要,也是最復(fù)雜的爽锥。數(shù)據(jù)幀以一個(gè)顯性位開始涌韩,以7個(gè)連續(xù)的隱性位結(jié)束。CAN總線的數(shù)據(jù)幀有標(biāo)準(zhǔn)格式和擴(kuò)展格式的區(qū)分氯夷。

數(shù)據(jù)幀

各字段定義及長度分別為:
SOF:表示數(shù)據(jù)幀開始贸辈;(1 bit)
Identifier:標(biāo)準(zhǔn)格式11 bit,擴(kuò)展格式29 bit包括Base Identifier(11 bit)和Extended Identifier(18 bit)肠槽,該區(qū)段標(biāo)識(shí)數(shù)據(jù)幀的優(yōu)先級(jí)擎淤,數(shù)值越小,優(yōu)先級(jí)越高秸仙;
RTR:遠(yuǎn)程傳輸請求位嘴拢,0時(shí)表示為數(shù)據(jù)幀,1表示為遠(yuǎn)程幀寂纪,也就是說RTR=1時(shí)席吴,消息幀的Data Field為空;(1 bit)
IDE: 標(biāo)識(shí)符擴(kuò)展位捞蛋,0時(shí)表示為標(biāo)準(zhǔn)格式孝冒,1表示為擴(kuò)展格式;(1 bit)
DLC:數(shù)據(jù)長度代碼拟杉,08表示數(shù)據(jù)長度為08 Byte庄涡;(4 bit)
Data Field:數(shù)據(jù)域;(0~8 Byte)
CRC Sequence:校驗(yàn)域搬设,校驗(yàn)算法G(x) = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1穴店;(15 bit)

DEL:校驗(yàn)域和應(yīng)答域的隱性界定符;(1 bit)
ACK:應(yīng)答拿穴,確認(rèn)數(shù)據(jù)是否正常接收泣洞,所謂正常接收是指不含填充錯(cuò)誤、格式錯(cuò)誤默色、 CRC 錯(cuò)誤球凰。發(fā)送節(jié)點(diǎn)將此位為1,接收節(jié)點(diǎn)正常接收數(shù)據(jù)后將此位置為0;(1 bit)

SRR:替代遠(yuǎn)程請求位呕诉,在擴(kuò)展格式中占位用缘厢,必須為1;(1 bit)
EOF:連續(xù)7個(gè)隱性位(1)表示幀結(jié)束义钉;(7 bit)
ITM:幀間空間,Intermission (ITM)规肴,又稱Interframe Space (IFS)捶闸,連續(xù)3個(gè)隱性位,但它不屬于數(shù)據(jù)幀拖刃。幀間空間是用于將數(shù)據(jù)幀和遠(yuǎn)程幀與前面的幀分離開來的幀删壮。數(shù)據(jù)幀和遠(yuǎn)程幀可通過插入幀間空間將本幀與前面的任何幀(數(shù)據(jù)幀、遙控幀兑牡、錯(cuò)誤幀央碟、過載幀)分開。過載幀和錯(cuò)誤幀前不能插入幀間空間均函。

2亿虽、遠(yuǎn)程幀
一般地,數(shù)據(jù)是由發(fā)送單元主動(dòng)向總線上發(fā)送的苞也。而遠(yuǎn)程幀的用于接收單元主動(dòng)向發(fā)送單元請求數(shù)據(jù)洛勉。
遠(yuǎn)程幀沒有數(shù)據(jù)塊Data Field。遠(yuǎn)程幀的 DLC 塊表示請求發(fā)送單元發(fā)送的數(shù)據(jù)長度(Byte)如迟。
遠(yuǎn)程幀的RTR值為1收毫。當(dāng)總線上具有相同標(biāo)識(shí)符的數(shù)據(jù)幀和遠(yuǎn)程幀同時(shí)發(fā)送時(shí),由于數(shù)據(jù)幀的 RTR 位是顯性的殷勘,數(shù)據(jù)幀將在仲裁中贏得總線控制權(quán)此再。

3、錯(cuò)誤幀
當(dāng)接受和發(fā)送消息的節(jié)點(diǎn)檢測出錯(cuò)誤時(shí)玲销,就發(fā)送錯(cuò)誤幀通知錯(cuò)誤输拇。由錯(cuò)誤標(biāo)志和錯(cuò)誤界定符構(gòu)成。錯(cuò)誤幀的幀結(jié)構(gòu)如下圖:

錯(cuò)誤幀結(jié)構(gòu)

其中錯(cuò)誤標(biāo)志為6-12個(gè)顯性/隱性重疊位贤斜。處于主動(dòng)報(bào)錯(cuò)狀態(tài)的單元檢測出錯(cuò)誤時(shí)輸出主動(dòng)錯(cuò)誤標(biāo)志(6個(gè)顯性位)淳附;處于被動(dòng)認(rèn)錯(cuò)狀態(tài)的單元檢測出錯(cuò)誤時(shí)輸出被動(dòng)錯(cuò)誤標(biāo)志(6個(gè)隱性位)。
錯(cuò)誤界定符由8個(gè)“隱性”位構(gòu)成蠢古。

CAN總線的錯(cuò)誤類型包括以下五種:

  • CRC錯(cuò)誤——校驗(yàn)錯(cuò)誤奴曙,接受單元重新計(jì)算CRC,與發(fā)送單元的CRC不一致草讶。
  • ACK錯(cuò)誤——應(yīng)答錯(cuò)誤洽糟,發(fā)送單元在ACK為中檢測到隱性電平。
  • FORM錯(cuò)誤——格式錯(cuò)誤,檢測出傳輸?shù)臄?shù)據(jù)幀格式與合法格式不符坤溃。
  • 位錯(cuò)誤——發(fā)送節(jié)點(diǎn)在發(fā)送電平時(shí)發(fā)現(xiàn)總線電平與發(fā)送電平不一致的錯(cuò)誤拍霜。
  • 填充錯(cuò)誤——在需要未填充的段內(nèi),連續(xù)檢測到6為相同的電平薪介。(位填充的介紹見后文)

對(duì)錯(cuò)誤的處理祠饺,可參考這里
此外為防止自身由于某些原因?qū)е聼o法正常接收的節(jié)點(diǎn)一直發(fā)送錯(cuò)誤幀汁政,干擾其他節(jié)點(diǎn)通信道偷。CAN總線提供了復(fù)位重啟等處理機(jī)制。

4记劈、過載幀
當(dāng)某個(gè)接收節(jié)點(diǎn)沒有做好接收下一幀數(shù)據(jù)的準(zhǔn)備時(shí)勺鸦,將發(fā)送過載幀以通知發(fā)送節(jié)點(diǎn)。在兩種情況下目木,節(jié)點(diǎn)會(huì)發(fā)送過載幀:

  • 接收單元條件的制約换途,要求發(fā)送節(jié)點(diǎn)延緩下一個(gè)數(shù)據(jù)幀或遠(yuǎn)程幀的傳輸;
  • 幀間空間(Intermission)的 3 bit 內(nèi)檢測到顯性位

過載幀由過載標(biāo)志(6個(gè)顯性位)和過載幀界定符(8個(gè)隱性位)組成刽射。由于存在多個(gè)節(jié)點(diǎn)同時(shí)過載且過載幀發(fā)送有時(shí)間差問題军拟,可能出現(xiàn)過載標(biāo)志疊加后超過6個(gè)位的現(xiàn)象。

位填充

CAN總線使用到的是非歸零編碼(NRZ)誓禁,NRZ編碼的優(yōu)點(diǎn)是效率高吻谋,但卻不易區(qū)分哪里是bit開始,哪里是bit結(jié)束现横。因此為確保在同步通信過程中有足夠的電平跳變漓拾,規(guī)范中應(yīng)用到位填充機(jī)制,即在每連續(xù) 5 個(gè)相同電平后插入 1個(gè)反相電平戒祠,接收節(jié)點(diǎn)在收到消息后自動(dòng)將填充位刪除骇两。
在幀內(nèi)除了CRC界定符、ACK域和EOF外姜盈,其余部分均應(yīng)用到位填充機(jī)制低千。在應(yīng)用到位填充的域,檢測到連續(xù) 6 個(gè)顯性位或隱性位均視為報(bào)錯(cuò)馏颂。

數(shù)據(jù)幀在位填充前后的比較


DBC

CAN協(xié)議定義了物理層及數(shù)據(jù)鏈路層規(guī)范示血,通過CAN總線,ECU之間可以進(jìn)行數(shù)據(jù)通信救拉。但建立更加完善的系統(tǒng)难审,還需要在CAN的基礎(chǔ)上選擇合適的應(yīng)用層,如CANopen亿絮、J1939等告喊。其中J1939即為DBC文件麸拄。

DBC(data base CAN)是汽車ECU見進(jìn)行CAN通信的報(bào)文內(nèi)容壶谒。規(guī)定了各種CAN信號(hào)的具體含義克锣。DBC是一個(gè)ASCII格式的文本文件,一般用CANdb++帶來猎物,方面查看和編輯秆吵。DBC解析過程就是將汽車CAN網(wǎng)絡(luò)傳輸?shù)氖M(jìn)制數(shù)據(jù)轉(zhuǎn)換成我們所熟悉的物理量淮椰,如車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速纳寂、燃油量等主穗。有了DBC,ECU之間才能互相聽懂烈疚,實(shí)現(xiàn)控制黔牵。根據(jù)DBC文件中規(guī)定的信息聪轿,也可以對(duì)CAN網(wǎng)絡(luò)進(jìn)行監(jiān)控爷肝,掌握整車狀態(tài)。

但DBC只涉及CAN網(wǎng)絡(luò)中的通信陆错,不涉及連接在CAN總線上的控制器設(shè)備內(nèi)部的功能邏輯灯抛。



——————————————————————
參考:
汽車CAN總線詳解
一口氣從零讀懂CAN總線
CAN總線_百度百科
CAN總線深入分析教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市对嚼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绳慎,老刑警劉巖纵竖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杏愤,居然都是意外死亡靡砌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門珊楼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來通殃,“玉大人,你說我怎么就攤上這事厕宗』啵” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵已慢,是天一觀的道長曲聂。 經(jīng)常有香客問我,道長佑惠,這世上最難降的妖魔是什么句葵? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任厕鹃,我火速辦了婚禮,結(jié)果婚禮上乍丈,老公的妹妹穿的比我還像新娘剂碴。我一直安慰自己,他們只是感情好轻专,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布忆矛。 她就那樣靜靜地躺著,像睡著了一般请垛。 火紅的嫁衣襯著肌膚如雪催训。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天宗收,我揣著相機(jī)與錄音漫拭,去河邊找鬼。 笑死混稽,一個(gè)胖子當(dāng)著我的面吹牛采驻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匈勋,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼礼旅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了洽洁?” 一聲冷哼從身側(cè)響起痘系,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饿自,沒想到半個(gè)月后汰翠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昭雌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年复唤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片城豁。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苟穆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唱星,到底是詐尸還是另有隱情雳旅,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布间聊,位于F島的核電站攒盈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏哎榴。R本人自食惡果不足惜型豁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一僵蛛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迎变,春花似錦充尉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谆吴,卻和暖如春倒源,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背句狼。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國打工笋熬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腻菇。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓胳螟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芜繁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子旺隙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容