本發(fā)明涉及電動(dòng)汽車(chē)的技術(shù)領(lǐng)域,更具體地說(shuō),是涉及一種利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的電路及控制方法。
背景技術(shù):控制器局域網(wǎng)(ControlAreaNetwork;CAN)是一個(gè)串行、異步、多主機(jī)的通信協(xié)議,它可以連接汽車(chē)或工業(yè)應(yīng)用中的電子控制模塊、傳感器和執(zhí)行機(jī)構(gòu)。CAN總線廣泛應(yīng)用于汽車(chē)上,特別是電動(dòng)汽車(chē)上,主要用來(lái)實(shí)現(xiàn)車(chē)載網(wǎng)絡(luò)各電控單元之間的信息交換,形成車(chē)載網(wǎng)絡(luò)系統(tǒng)。CAN協(xié)議其中一個(gè)要素是位速率,它支持的位速率范圍從1~1000Kb/s。CAN的應(yīng)用范圍很廣,從高速的網(wǎng)絡(luò)到低價(jià)位的多路接線都可以使用CAN。在汽車(chē)電子行業(yè)里,使用CAN連接發(fā)動(dòng)機(jī)控制單元、傳感器、防剎車(chē)系統(tǒng)、等等,其傳輸速度可達(dá)1Mbit/s。同時(shí),可以將CAN安裝在卡車(chē)本體的電子控制系統(tǒng)里,諸如車(chē)燈組、電氣車(chē)窗等等,用以代替接線配線裝置。但是現(xiàn)有的CAN通訊都用采用專(zhuān)用的帶專(zhuān)用CAN收發(fā)器的MCU,系統(tǒng)成本較高;另外由于CAN通訊在系統(tǒng)間通訊有很大優(yōu)勢(shì),普通電器如果采用CAN通訊成本上又受到限制,從而使普通電子產(chǎn)品又無(wú)法在汽車(chē)上運(yùn)用。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的上述缺陷,提供一種利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的電路及控制方法,解決了普通單片機(jī)系統(tǒng)無(wú)法處理CAN信息的問(wèn)題。為實(shí)現(xiàn)上述目的,本發(fā)明提供的技術(shù)方案如下:本發(fā)明提供的一種利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的電路,包括用于接收CAN數(shù)據(jù)信息,并將CAN數(shù)據(jù)信息轉(zhuǎn)換成TTL數(shù)據(jù)信息后通過(guò)輸入I/O口輸入至單片機(jī)的CAN接收轉(zhuǎn)換電路;用于對(duì)輸入I/O口接收的TTL數(shù)據(jù)信息進(jìn)行解碼、處理,以CAN總線的數(shù)據(jù)格式和時(shí)鐘周期輸出TTL數(shù)據(jù)信息到輸出I/O口的單片機(jī);以及用于將輸出I/O口的TTL數(shù)據(jù)信息轉(zhuǎn)換成CAN數(shù)據(jù)信息的CAN發(fā)送轉(zhuǎn)換電路;所述CAN接收轉(zhuǎn)換電路的輸入端接CAN總線,輸出端與單片機(jī)的輸入I/O口連接;單片機(jī)的輸出I/O口與CAN發(fā)送轉(zhuǎn)換電路的輸入端連接,CAN發(fā)送轉(zhuǎn)換電路的輸出端接CAN總線。作為優(yōu)選的技術(shù)方案,所述CAN接收轉(zhuǎn)換電路包括運(yùn)算放大器U1,所述運(yùn)算放大器U1的反相輸入端串聯(lián)電阻R7后接CAN總線的高位數(shù)據(jù)線,正相輸入端串聯(lián)電阻R10后接CAN總線的低位數(shù)據(jù)線,所述運(yùn)算放大器U1的正相輸入端串聯(lián)電阻R9后接地,同時(shí)串聯(lián)電阻R8后接電源VCC,電阻R8、電阻R9匹配CAN信號(hào)的隱性電位點(diǎn),對(duì)差分信號(hào)比較,在運(yùn)算放大器U1的輸出端VOUT產(chǎn)生與CAN數(shù)據(jù)信息對(duì)應(yīng)的TTL數(shù)據(jù)信息。作為優(yōu)選的技術(shù)方案,所述運(yùn)算放大器U1采用TLC3702CP。作為優(yōu)選的技術(shù)方案,所述CAN發(fā)送轉(zhuǎn)換電路包括第一三極管Q5、第二三極管Q6、第一二極管D1、第二二極管D2、電阻R11、電阻R12、電阻R7及電阻R8,第一三極管Q5的基極和第二三極管Q6的基極均與單片機(jī)輸出I/O口連接;所述第一三極管Q5的集電極連接第二二極管D2的陰極,所述第二二極管D2的陽(yáng)極串聯(lián)電阻R8后接CAN總線的低位數(shù)據(jù)線,所述第一三極管Q5的發(fā)射極串聯(lián)電阻R12后接地;所述第二三極管Q6的發(fā)射極連接第一二極管D1的陽(yáng)極,第一二極管D1的陰極串聯(lián)電阻R7后接CAN總線的高位數(shù)據(jù)線,所述第二三極管Q6的集電極串聯(lián)電阻R11后接電源VCC。本發(fā)明還提供了一種利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的電路控制方法,該方法包括下述步驟:(1)將單片機(jī)的一個(gè)I/O口設(shè)置成輸出I/O口,并置低電平釋放CAN總線;(2)將單片機(jī)的另一個(gè)I/O口設(shè)置成輸入I/O口;(3)用一個(gè)運(yùn)算放大器組成差分電壓比較器,差分電壓比較器的比較電壓由電阻匹配CAN信息的隱性電位點(diǎn),對(duì)差分信號(hào)比較,在運(yùn)算放大器U1的輸出端VOUT產(chǎn)生與CAN數(shù)據(jù)信息對(duì)應(yīng)的TTL數(shù)據(jù)信息;(4)單片機(jī)對(duì)TTL數(shù)據(jù)信息按CAN數(shù)據(jù)格式解碼,并根據(jù)CAN協(xié)議的仲裁機(jī)制,判定接收的數(shù)據(jù)是否有誤,并按協(xié)議規(guī)定發(fā)送應(yīng)答信號(hào);(5)單片機(jī)按照CAN總線的數(shù)據(jù)出錯(cuò)規(guī)則對(duì)接收信息判別,如果接收正確,單片機(jī)的輸出I/O口按CAN總線格式發(fā)送應(yīng)答信號(hào)。作為優(yōu)選的技術(shù)方案,步驟(3)中,當(dāng)有差分信號(hào)輸入時(shí),輸出端VOUT有TTL信號(hào)產(chǎn)生,單片機(jī)輸入I/O口根據(jù)系統(tǒng)的數(shù)據(jù)格式對(duì)TTL信號(hào)解碼。作為優(yōu)選的技術(shù)方案,步驟(4)中,單片機(jī)對(duì)TTL電平按CAN數(shù)據(jù)格式解碼的具體方法為:?jiǎn)纹瑱C(jī)接收TTL的高電平則對(duì)應(yīng)CAN數(shù)據(jù)的顯性電平,接收TTL的低電平則對(duì)應(yīng)CAN數(shù)據(jù)的隱性電平,并依次接收整個(gè)數(shù)據(jù)包。作為優(yōu)選的技術(shù)方案,步驟(4)中,還包括根據(jù)CRC運(yùn)算法則對(duì)接收的TTL數(shù)據(jù)信息進(jìn)行CRC運(yùn)算。作為優(yōu)選的技術(shù)方案,發(fā)送應(yīng)答信號(hào)時(shí)按CAN總線的數(shù)據(jù)格式和時(shí)鐘周期對(duì)單片機(jī)的一個(gè)輸出I/O口置高或置低完成數(shù)據(jù)的傳送,并按CAN總線的出錯(cuò)規(guī)則發(fā)送相應(yīng)信息及CRC數(shù)據(jù)。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:1、本發(fā)明利用一個(gè)低成本電路將CAN通訊數(shù)據(jù)格式轉(zhuǎn)換成TTL格式,再運(yùn)用單片機(jī)的普通輸入口對(duì)TTL數(shù)據(jù)處理,實(shí)現(xiàn)了對(duì)CAN通訊數(shù)據(jù)接收,解決了普通單片機(jī)系統(tǒng)無(wú)法處理CAN信息的問(wèn)題。2、本發(fā)明解決了普通單片機(jī)系統(tǒng)無(wú)法接收CAN數(shù)據(jù)的問(wèn)題,節(jié)省了價(jià)格高昂的CAN收發(fā)器。3、本發(fā)明運(yùn)用軟件處理CAN信息,系統(tǒng)處理CAN數(shù)據(jù)更加靈活,以簡(jiǎn)單的方式實(shí)現(xiàn)復(fù)雜的CAN數(shù)據(jù)收發(fā)。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實(shí)施例一提供的利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的電路原理圖;圖2是本發(fā)明實(shí)施例一提供的CAN接收轉(zhuǎn)換電路的電路原理圖;圖3是本發(fā)明實(shí)施例一提供的CAN發(fā)送轉(zhuǎn)換電路的電路原理圖;圖4是本發(fā)明實(shí)施例二提供的利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的控制方法流程圖;圖5是本發(fā)明實(shí)施例三提供的利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的控制方法流程圖。具體實(shí)施方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。實(shí)施例一本發(fā)明的實(shí)施例一提供了利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的電路,圖1是本發(fā)明實(shí)施例一的電路方框圖,請(qǐng)參考圖1,該電路包括CAN接收轉(zhuǎn)換電路、單片機(jī)及CAN發(fā)送轉(zhuǎn)換電路,所述CAN接收轉(zhuǎn)換電路的輸入端接CAN總線,輸出端與單片機(jī)的輸入I/O口連接;單片機(jī)的輸出I/O口與CAN發(fā)送轉(zhuǎn)換電路的輸入端連接,CAN發(fā)送轉(zhuǎn)換電路的輸出端接CAN總線;如圖2所示,所述CAN接收轉(zhuǎn)換電路包括運(yùn)算放大器U1,所述運(yùn)算放大器U1的反相輸入端串聯(lián)電阻R7后接CAN總線的高位數(shù)據(jù)線,正相輸入端串聯(lián)電阻R10后接CAN總線的低位數(shù)據(jù)線,所述運(yùn)算放大器U1的正相輸入端串聯(lián)電阻R9后接地,同時(shí)串聯(lián)電阻R8后接電源VCC,電阻R8、電阻R9匹配CAN信號(hào)的隱性電位點(diǎn),對(duì)差分信號(hào)比較,在運(yùn)算放大器U1的輸出端VOUT產(chǎn)生與CAN數(shù)據(jù)信息對(duì)應(yīng)的TTL數(shù)據(jù)信息。本實(shí)施例中,所述運(yùn)算放大器U1采用TLC3702CP,當(dāng)然其它廠家或型號(hào)的運(yùn)算放大器同樣適用于本發(fā)明的技術(shù)方案。如圖3所示,所述CAN發(fā)送轉(zhuǎn)換電路包括第一三極管Q5、第二三極管Q6、第一二極管D1、第二二極管D2、電阻R11、電阻R12、電阻R7及電阻R8,第一三極管Q5的基極和第二三極管Q6的基極均與單片機(jī)輸出I/O口連接;所述第一三極管Q5的集電極連接第二二極管D2的陰極,所述第二二極管D2的陽(yáng)極串聯(lián)電阻R8后接CAN總線的低位數(shù)據(jù)線,所述第一三極管Q5的發(fā)射極串聯(lián)電阻R12后接地;所述第二三極管Q6的發(fā)射極連接第一二極管D1的陽(yáng)極,第一二極管D1的陰極串聯(lián)電阻R7后接CAN總線的高位數(shù)據(jù)線,所述第二三極管Q6的集電極串聯(lián)電阻R11后接電源VCC。本發(fā)明利用一個(gè)低成本電路將CAN通訊數(shù)據(jù)格式轉(zhuǎn)換成TTL格式,再運(yùn)用單片機(jī)的普通輸入口對(duì)TTL數(shù)據(jù)處理,實(shí)現(xiàn)了對(duì)CAN通訊數(shù)據(jù)接收,解決了普通單片機(jī)系統(tǒng)無(wú)法處理CAN信息的問(wèn)題。實(shí)施例二本發(fā)明的實(shí)施例二提供了一種利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的電路控制方法,圖4是本發(fā)明實(shí)施例二的方法流程圖,請(qǐng)參考圖4,本發(fā)明實(shí)施例的方法包括以下步驟:步驟S101、將單片機(jī)的一個(gè)I/O口設(shè)置成輸出I/O口,并置低電平釋放CAN總線;步驟S102、將單片機(jī)的另一個(gè)I/O口設(shè)置成輸入I/O口;步驟S103、用一個(gè)運(yùn)算放大器組成差分電壓比較器,差分電壓比較器的比較電壓由電阻匹配CAN信息的隱性電位點(diǎn),對(duì)差分信號(hào)比較,在運(yùn)算放大器U1的輸出端VOUT產(chǎn)生與CAN數(shù)據(jù)信息對(duì)應(yīng)的TTL數(shù)據(jù)信息;步驟S104、單片機(jī)對(duì)TTL數(shù)據(jù)信息按CAN數(shù)據(jù)格式解碼,并根據(jù)CAN協(xié)議的仲裁機(jī)制,判定接收的數(shù)據(jù)是否有誤,并按協(xié)議規(guī)定發(fā)送應(yīng)答信號(hào);步驟S105、單片機(jī)按照CAN總線的數(shù)據(jù)出錯(cuò)規(guī)則對(duì)接收信息判別,如果接收正確,單片機(jī)的輸出I/O口按CAN總線格式發(fā)送應(yīng)答信號(hào)。本發(fā)明利用一個(gè)低成本電路將CAN通訊數(shù)據(jù)格式轉(zhuǎn)換成TTL格式,再運(yùn)用單片機(jī)的普通輸入口對(duì)TTL數(shù)據(jù)處理,實(shí)現(xiàn)了對(duì)CAN通訊數(shù)據(jù)接收,解決了普通單片機(jī)系統(tǒng)無(wú)法處理CAN信息的問(wèn)題,同時(shí)解決了普通單片機(jī)系統(tǒng)無(wú)法接收CAN數(shù)據(jù)的問(wèn)題,節(jié)省了價(jià)格高昂的CAN收發(fā)器。實(shí)施例三本發(fā)明的實(shí)施例三提供了一種利用單片機(jī)普通I/O收發(fā)CAN數(shù)據(jù)信息的電路控制方法,本實(shí)施例是在實(shí)施例二的基礎(chǔ)上改進(jìn)而來(lái)的,圖5是本發(fā)明實(shí)施例三的方法流程圖,請(qǐng)參考圖5,本發(fā)明實(shí)施例的方法包括下述步驟:步驟S201、將單片機(jī)的一個(gè)I/O口設(shè)置成輸出I/O口,并置低電平釋放CAN總線;步驟S202、將單片機(jī)的另一個(gè)I/O口設(shè)置成輸入I/O口;步驟S203、用一個(gè)運(yùn)算放大器組成差分電壓比較器,差分電壓比較器的比較電壓由電阻匹配CAN信息的隱性電位點(diǎn),對(duì)差分信號(hào)比較,在運(yùn)算放大器U1的輸出端VOUT產(chǎn)生與CAN數(shù)據(jù)信息對(duì)應(yīng)的TTL數(shù)據(jù)信息;步驟S204、當(dāng)有差分信號(hào)輸入時(shí),輸出端VOUT有TTL信號(hào)產(chǎn)生,單片機(jī)輸入I/O口根據(jù)系統(tǒng)的數(shù)據(jù)格式對(duì)TTL信號(hào)解碼;單片機(jī)接收TTL的高電平則對(duì)應(yīng)CAN數(shù)據(jù)的顯性電平,接收TTL的低電平則對(duì)應(yīng)CAN數(shù)據(jù)的隱性電平,并依次接收整個(gè)數(shù)據(jù)包。步驟S205、單片機(jī)對(duì)TTL數(shù)據(jù)信息按CAN數(shù)據(jù)格式解碼,并根據(jù)CAN協(xié)議的仲裁機(jī)制,判定接收的數(shù)據(jù)是否有誤,并按協(xié)議規(guī)定發(fā)送應(yīng)答信號(hào);步驟S206、根據(jù)CRC運(yùn)算法則對(duì)接收的TTL數(shù)據(jù)信息進(jìn)行CRC運(yùn)算;循環(huán)冗余校驗(yàn)碼(CRC)的基本原理是:在K位信息碼后再拼接R位的校驗(yàn)碼,整個(gè)編碼長(zhǎng)度為N位,因此,這種編碼也叫(N,K)碼。對(duì)于一個(gè)給定的(N,K)碼,可以證明存在一個(gè)最高次冪為N-K=R的多項(xiàng)式G(x)。根據(jù)G(x)可以生成K位信息的校驗(yàn)碼,而G(x)叫做這個(gè)CRC碼的生成多項(xiàng)式。校驗(yàn)碼的具體生成過(guò)程為:假設(shè)發(fā)送信息用信息多項(xiàng)式C(X)表示,將C(x)左移R位,則可表示成C(x)*x的R次方,這樣C(x)的右邊就會(huì)空出R位,這就是校驗(yàn)碼的位置;通過(guò)C(x)*X的R次方除以生成多項(xiàng)式G(x)得到的余數(shù)就是校驗(yàn)碼。步驟S207、單片機(jī)按照CAN總線的數(shù)據(jù)出錯(cuò)規(guī)則對(duì)接收信息判別,如果接收正確,單片機(jī)的輸出I/O口按CAN總線格式發(fā)送應(yīng)答信號(hào);發(fā)送應(yīng)答信號(hào)時(shí)按CAN總線的數(shù)據(jù)格式和時(shí)鐘周期對(duì)單片機(jī)的輸出I/O口置高或置低完成數(shù)據(jù)的傳送,并按CAN總線的出錯(cuò)規(guī)則發(fā)送相應(yīng)信息及CRC數(shù)據(jù)。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可以在存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁盤(pán)、光盤(pán)等。上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。