版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、CAN總線通信研究與軟件設(shè)計(jì)摘要現(xiàn)場(chǎng)總線,又稱現(xiàn)場(chǎng)網(wǎng)絡(luò),是一種工業(yè)數(shù)據(jù)通信總線。在當(dāng)今時(shí)代,現(xiàn)場(chǎng)總線的發(fā)展速度非常之快,它的出現(xiàn)為工業(yè)的發(fā)展提供了非常好的技術(shù)保障,為分布式控制系統(tǒng)中的各個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)通信提供了非常好的技術(shù)保障。CAN總線是一種半雙工通信的串行通信網(wǎng)絡(luò),屬于現(xiàn)場(chǎng)總線的一種,它的數(shù)據(jù)通信功能強(qiáng)大,能夠有效的支持分布式控制或?qū)崟r(shí)控制系統(tǒng)。相比與其它現(xiàn)場(chǎng)總線,CAN總線具有通信快、效率高、易實(shí)現(xiàn)、可靠性高等優(yōu)勢(shì),現(xiàn)在已經(jīng)在很多領(lǐng)域中都得到了應(yīng)用。本文主要研究CAN總線通信技術(shù)的原理及其技術(shù)特點(diǎn),研究了CAN通信的具體流程,包括初始化流程以及發(fā)送接收數(shù)據(jù)流程。運(yùn)用C語(yǔ)言編寫相關(guān)單片機(jī)
2、程序以及CAN的通信程序?qū)崿F(xiàn)通信。本次軟件設(shè)計(jì)是在keil4開發(fā)環(huán)境下進(jìn)行的,主要編寫了串口程序,SPI接口程序以及CAN的初始化、發(fā)送和接收數(shù)據(jù)程序,并與相關(guān)硬件設(shè)計(jì)結(jié)合,實(shí)現(xiàn)兩個(gè)CAN節(jié)點(diǎn)之間的相互的數(shù)據(jù)通信。關(guān)鍵詞:現(xiàn)場(chǎng)總線;CAN總線;軟件設(shè)計(jì);通信CAN bus communication research and software designAbstractField bus, also called the network, is a kind of industrial data communication bus. In todays era, the developmen
3、t of field bus speed is very fast, it provides a very good technical support for the development of industry, for data communication between each node in distributed control system provides a very good technical support. CAN bus is a half-duplex communication serial communication network, belongs to
4、 a kind of fieldbus, it has powerful data communication function, CAN effectively support distributed control or real-time control system. Compared with other field bus, CAN bus communication is fast, high efficiency, easy realize and high reliability advantages, now has been applied in many fields.
5、In this paper, the principle of the CAN bus communication technology and its technical characteristics, research the CAN communication process, including the initialization process and the process to send and receive data. Using C language to write the microcontroller program, and CAN communication
6、program to realize communication.The software design is under the environment of keil4 development, mainly to write a serial program, SPI interface program and CAN the initialization, send and receive data, and combined with relevant hardware design, the two CAN achieve data communication between no
7、des.Key words: The fieldbus;CAN bus; The software design;Communication;目錄摘要iAbstractii1 緒論11.1 課題背景11.2 選題目的11.3 選題意義11.4 本文結(jié)構(gòu)22 相關(guān)技術(shù)介紹32.1 CAN總線介紹32.1.1 CAN總線技術(shù)簡(jiǎn)介32.1.2 CAN總線的發(fā)展概況42.1.3 CAN總線的特點(diǎn)42.1.4 CAN總線協(xié)議介紹52.2 單片機(jī)介紹62.2.1 單片機(jī)硬件特性72.2.2 單片機(jī)發(fā)展?fàn)顩r72.2.3 單片機(jī)設(shè)計(jì)82.3 開發(fā)環(huán)境及開發(fā)語(yǔ)言介紹102.3.1 keil uvision4開發(fā)
8、環(huán)境簡(jiǎn)介102.3.2 開發(fā)語(yǔ)言介紹113 系統(tǒng)設(shè)計(jì)133.1 設(shè)計(jì)目的133.2 設(shè)計(jì)原理及方案133.2.1 CAN總線通信原理133.2.2 軟件設(shè)計(jì)方案133.3 軟件設(shè)計(jì)流程圖143.3.1 主程序流程圖143.3.2串口設(shè)計(jì)流程圖153.3.2 CAN初始化流程圖163.3.3 發(fā)送數(shù)據(jù)子程序流程圖183.3.4 接收數(shù)據(jù)子程序流程圖184 系統(tǒng)實(shí)現(xiàn)204.1 串口實(shí)現(xiàn)204.2 SPI接口實(shí)現(xiàn)214.3 MCP2515初始化244.4 CAN發(fā)送和接收數(shù)據(jù)實(shí)現(xiàn)265 測(cè)試及設(shè)計(jì)成果分析295.1 硬件連接295.2 下載程序到單片機(jī)295.3 結(jié)果分析31結(jié) 論34參考文獻(xiàn)35致
9、謝36外文原文37中文翻譯441 緒論1.1 課題背景在現(xiàn)如今科技日益發(fā)達(dá)的時(shí)代,現(xiàn)場(chǎng)總線通信技術(shù)已經(jīng)得到了快速發(fā)展,在各個(gè)領(lǐng)域中都得到了廣泛應(yīng)用與好評(píng),在這其中,尤其以CAN總線為典型代表。CAN中文名稱為控制器局域網(wǎng),是目前世界上應(yīng)用領(lǐng)域最廣的現(xiàn)場(chǎng)總線之一。CAN作為一種全雙工通信的串行數(shù)據(jù)通訊總線,具有其它現(xiàn)場(chǎng)總線不具有的優(yōu)勢(shì):通信速率高,有獨(dú)特的設(shè)計(jì)和自己的規(guī)范,具有較高抗電磁干擾性,最重要的一點(diǎn)是它能夠檢測(cè)出在數(shù)據(jù)通訊中產(chǎn)生的任何錯(cuò)誤。即使當(dāng)信號(hào)傳輸距離非常遠(yuǎn),比如達(dá)到10公里甚至以上時(shí),CAN的傳輸速率仍可達(dá)到驚人的50kbps。CAN擁有先進(jìn)的技術(shù),并且可靠性高、功能完善、實(shí)用性
10、強(qiáng),目前在各個(gè)自動(dòng)化控制領(lǐng)域中都以離不開CAN,比如:交通運(yùn)輸業(yè)、汽車業(yè)、工業(yè)控制、電力系統(tǒng)、自動(dòng)控制等都已經(jīng)隨處可見CAN的應(yīng)用。在20世紀(jì)80年代初期,歐洲汽車產(chǎn)業(yè)發(fā)展迅猛,當(dāng)時(shí)為了解決汽車控制裝置之間的數(shù)據(jù)傳輸問(wèn)題,德國(guó)一家名為博世的公司提出了CAN總線這一技術(shù),解決了設(shè)備間的通信問(wèn)題。在當(dāng)時(shí),由于汽車業(yè)發(fā)展迅速,使用汽車的用戶越來(lái)越多,人們對(duì)于汽車的功能需求也越來(lái)越復(fù)雜,而要想實(shí)現(xiàn)這些功能,就必須解決信號(hào)線需求龐大以及電子裝置間復(fù)雜的通信等問(wèn)題。因此博世公司在這個(gè)構(gòu)想的基礎(chǔ)上設(shè)計(jì)出了一種通信總線,并取名為CAN總線。CAN總線剛剛問(wèn)世不久,英特爾公司就生產(chǎn)出了第一個(gè)CAN控制器,此后經(jīng)
11、過(guò)不斷地發(fā)展,CAN已經(jīng)有了自己的國(guó)際標(biāo)準(zhǔn),并且已經(jīng)在很多領(lǐng)域都取得了廣泛的應(yīng)用。1.2 選題目的CAN總線是德國(guó)博世公司為解決汽車控制設(shè)備之間的數(shù)據(jù)通信而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它采用全雙工通信技術(shù),通信距離遠(yuǎn),通信速率高,速率最高可達(dá)到1Mbps。由于CAN的高性能和它的可靠性,CAN已經(jīng)在越來(lái)越多的領(lǐng)域中使用和發(fā)展,利用CAN總線進(jìn)行數(shù)據(jù)通信非常便捷快速穩(wěn)定,CAN總線發(fā)展的如此迅速,研究CAN總線對(duì)它的進(jìn)步有很大的意義,因此本文就針對(duì)CAN總線通信進(jìn)行研究和探討。本次畢業(yè)設(shè)計(jì)CAN總線通信系統(tǒng)設(shè)計(jì)主要實(shí)現(xiàn)兩個(gè)CAN節(jié)點(diǎn)之間的數(shù)據(jù)通信功能。通過(guò)進(jìn)行這個(gè)設(shè)計(jì)來(lái)深入的了解和掌握基于單片機(jī)
12、的CAN總線的通信原理及通信功能,體驗(yàn)CAN數(shù)據(jù)通信的強(qiáng)大以及它的高效、便捷等優(yōu)點(diǎn)。1.3 選題意義現(xiàn)場(chǎng)總線通信是現(xiàn)今各個(gè)領(lǐng)域中應(yīng)用廣泛且通信效果好的一種通信技術(shù),生命力強(qiáng)大?,F(xiàn)場(chǎng)總線是一種能夠進(jìn)行雙向數(shù)據(jù)通信的、網(wǎng)絡(luò)智能化的通信技術(shù)。現(xiàn)場(chǎng)總線通信系統(tǒng)采用雙絞線、多回路的全數(shù)字化信息進(jìn)行數(shù)據(jù)傳輸,大大節(jié)省了整個(gè)系統(tǒng)的成本,提高了整個(gè)系統(tǒng)的可靠性和抗干擾能力。另外,現(xiàn)場(chǎng)總線還具有可互連和可互操作的優(yōu)點(diǎn),可對(duì)各個(gè)設(shè)備的通信進(jìn)行很好地梳理。這更加提高了它的通信功能和通信的實(shí)時(shí)性。現(xiàn)場(chǎng)總線通信已經(jīng)成為了非常普遍的通信技術(shù)。CAN總線即是一種現(xiàn)場(chǎng)總線,具有現(xiàn)場(chǎng)總線的優(yōu)點(diǎn),同時(shí)又具有自身的優(yōu)勢(shì)。CAN總線
13、具有成本低、效率高、實(shí)時(shí)性高和可靠性高的特點(diǎn),這些特點(diǎn)使其已經(jīng)成為在全世界范圍內(nèi)得到廣泛使用的現(xiàn)場(chǎng)總線之一。由于CAN總線具有先進(jìn)的通信技術(shù),它的應(yīng)用已經(jīng)不再局限于汽車工業(yè),而是已經(jīng)被廣泛應(yīng)用到交通運(yùn)輸、醫(yī)療等各個(gè)領(lǐng)域。研究CAN總線通信對(duì)我們更深入的了解CAN總線,掌握CAN總線的通信原理和通信協(xié)議,進(jìn)一步的學(xué)習(xí)CAN總線,設(shè)計(jì)成一個(gè)CAN總線的通信系統(tǒng)有很大的幫助。研究CAN總線通信讓我們了解CAN總線在各個(gè)生活領(lǐng)域當(dāng)中的具體應(yīng)用都具有非常大的價(jià)值,讓我們對(duì)CAN總線目前的發(fā)展?fàn)顩r有明確的認(rèn)識(shí),這更有利于CAN總線通信技術(shù)今后的發(fā)展,有利于工業(yè)控制系統(tǒng)在計(jì)算機(jī)領(lǐng)域中的發(fā)展。1.4 本文結(jié)構(gòu)
14、本文擬從以下幾個(gè)方面介紹CAN總線通信系統(tǒng)及本次相關(guān)設(shè)計(jì):1. 第一章是緒論,介紹課題背景、選題目的以及選題意義。2. 第二章是對(duì)本次設(shè)計(jì)所用到的相關(guān)技術(shù)和原理的介紹,包括CAN總線的基本概念、CAN總線特點(diǎn)以及CAN總線在當(dāng)今國(guó)內(nèi)外的發(fā)展現(xiàn)狀進(jìn)行介紹,本次設(shè)計(jì)使用的單片機(jī)設(shè)計(jì)部分簡(jiǎn)單介紹,還有對(duì)本次軟件開發(fā)環(huán)境及相關(guān)技術(shù)的介紹。3. 第三章分析CAN總線通信原理、本次軟件設(shè)計(jì)方案以及軟件設(shè)計(jì)的流程圖。4. 第四章是本次軟件設(shè)計(jì)的具體模塊設(shè)計(jì),包括串口設(shè)計(jì),SPI設(shè)計(jì)以及CAN通信設(shè)計(jì)。5. 第五章是本次設(shè)計(jì)的設(shè)計(jì)成果展示。2 相關(guān)技術(shù)介紹2.1 CAN總線介紹CAN是指控制器局域網(wǎng)絡(luò),是由著
15、名的德國(guó)博世公司在研發(fā)汽車通信設(shè)備時(shí)想象出來(lái)并開發(fā)成的一種通信協(xié)議,CAN屬于現(xiàn)場(chǎng)總線的一種,隨著不斷發(fā)展,現(xiàn)如今CAN已經(jīng)有了自己的國(guó)際標(biāo)準(zhǔn),這是相比于其它總線的一個(gè)巨大優(yōu)勢(shì),CAN已經(jīng)成為當(dāng)今世界各個(gè)領(lǐng)域中應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。CAN總線通信協(xié)議的發(fā)展非常迅速,已經(jīng)成為北美和西歐在汽車計(jì)算機(jī)和嵌入式工業(yè)領(lǐng)域中的主要通信協(xié)議,在歐洲已經(jīng)發(fā)展為汽車網(wǎng)絡(luò)的標(biāo)準(zhǔn)協(xié)議。在上世紀(jì)80年代,隨著工業(yè)技術(shù)的不斷發(fā)展,汽車工業(yè)得到了快速的發(fā)展,人們對(duì)汽車的使用越來(lái)越多,功能需求也越來(lái)越廣,這就出現(xiàn)了一系列問(wèn)題,比如電子控制系統(tǒng)間的數(shù)據(jù)通信問(wèn)題、線束多的問(wèn)題等,為了解決這些問(wèn)題適應(yīng)廣大汽車用戶的需求從而提
16、出了CAN總線的構(gòu)想,發(fā)明了CAN總線通信技術(shù)。因?yàn)镃AN總線通信協(xié)議性能非常高又非常可靠,隨著不斷的發(fā)展,CAN總線已經(jīng)被廣泛地應(yīng)用到工業(yè)、航空航天、醫(yī)療、交通等各個(gè)方面。2.1.1 CAN總線技術(shù)簡(jiǎn)介CAN總線以報(bào)文為單位進(jìn)行數(shù)據(jù)傳送,報(bào)文的優(yōu)先級(jí)結(jié)合在11位標(biāo)識(shí)符中,具有最低二進(jìn)制數(shù)的標(biāo)識(shí)符有最高的優(yōu)先級(jí)。這種優(yōu)先級(jí)一旦在系統(tǒng)設(shè)計(jì)時(shí)被確立后就不能再被更改??偩€讀取中的沖突可通過(guò)位仲裁解決。CAN總線系統(tǒng)中的位仲裁,在網(wǎng)絡(luò)最終確定哪一個(gè)站的報(bào)文被傳送以前,報(bào)文的起始部分已經(jīng)在網(wǎng)絡(luò)上傳送了,所有未獲得總線讀取權(quán)的站都成為具有最高優(yōu)先權(quán)報(bào)文的接收站,并且不會(huì)在總線再次空閑前發(fā)送報(bào)文。CAN具有
17、較高的效率是因?yàn)镃AN總線僅僅被那些發(fā)出請(qǐng)求的站利用,這些請(qǐng)求是根據(jù)報(bào)文在整個(gè)系統(tǒng)中的重要性按順序處理的。這種方法在網(wǎng)絡(luò)負(fù)載較重時(shí)有很多優(yōu)點(diǎn),因?yàn)榭偩€讀取的優(yōu)先級(jí)已被按順序放在每個(gè)報(bào)文中了,這可以保證通信的穩(wěn)定性和正確性。在實(shí)踐中,有兩種重要的總線分配方法:按時(shí)間表分配和按需要分配。在第一種方法中,不管每個(gè)節(jié)點(diǎn)是否向總線發(fā)出請(qǐng)求,都對(duì)每個(gè)節(jié)點(diǎn)按最大時(shí)間進(jìn)行分配。因此,不論其是立即進(jìn)行總線存取或在一特定時(shí)間進(jìn)行總線存取,總線都可以被分配給每個(gè)站,這將保證總線數(shù)據(jù)讀取時(shí)有明確的總線分配。在第二種方法中,總線按照每個(gè)站傳輸數(shù)據(jù)的請(qǐng)求按需分配。因此,當(dāng)多個(gè)站同時(shí)請(qǐng)求總線存取時(shí),總線將終止所有站的請(qǐng)求,
18、這時(shí)將不會(huì)有任何一個(gè)站獲得總線分配。這兩種CAN實(shí)現(xiàn)總線分配的方法,可保證當(dāng)不同的站向總線發(fā)出傳輸請(qǐng)求時(shí),明確地對(duì)總線進(jìn)行分配。這種位仲裁的方法可以解決當(dāng)兩個(gè)站同時(shí)發(fā)送數(shù)據(jù)時(shí)產(chǎn)生的沖突問(wèn)題。CAN總線是現(xiàn)場(chǎng)總線的一種,它是一種比其它現(xiàn)場(chǎng)總線通信性更強(qiáng)的串行通信網(wǎng)絡(luò),它具有通信便捷,通信實(shí)時(shí)性強(qiáng),可靠性高,通信功能強(qiáng)大等特點(diǎn),跟其它的現(xiàn)場(chǎng)總線相比,CAN總線通信具有下列優(yōu)勢(shì):1. CAN節(jié)點(diǎn)之間的通信功能更強(qiáng)在CAN的通信中,數(shù)據(jù)發(fā)送和數(shù)據(jù)接收都是有優(yōu)先級(jí)之分的,系統(tǒng)中各節(jié)點(diǎn)在通信時(shí)的發(fā)送和接收都要根據(jù)緩沖器的優(yōu)先級(jí)發(fā)送數(shù)據(jù)。與其他現(xiàn)場(chǎng)總線不同,CAN通信協(xié)議編碼是對(duì)CAN通信數(shù)據(jù)塊直接進(jìn)行編碼
19、,這樣編碼的好處是使CAN通信功能更快捷可靠,更有利于需求。如果有特殊需要,還可以使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù)。2. CAN總線有錯(cuò)誤檢測(cè)的功能,且開發(fā)周期短CAN收發(fā)器有兩個(gè)輸出端,即收發(fā)高端和收發(fā)低端,高端的狀態(tài)只能是高電平,同樣低端的狀態(tài)是低電平。當(dāng)通信中多個(gè)節(jié)點(diǎn)同時(shí)向總線發(fā)送數(shù)據(jù)時(shí),如果有錯(cuò)誤發(fā)生,也不會(huì)出現(xiàn)總線短路的情況。此外CAN節(jié)點(diǎn)還有一項(xiàng)其它現(xiàn)場(chǎng)總線不具備的功能,就是假如發(fā)生嚴(yán)重的錯(cuò)誤,它可以自動(dòng)停止輸出數(shù)據(jù),以免造成總線上其他節(jié)點(diǎn)的數(shù)據(jù)結(jié)果不正確,這就可以保證總線不會(huì)處于“死鎖”狀態(tài)。而且,CAN相比于其它現(xiàn)場(chǎng)總線具有更完善更先進(jìn)的通信協(xié)議,系統(tǒng)開發(fā)難度較低,開發(fā)周期短。
20、3. CAN總線是最有發(fā)展?jié)摿Φ默F(xiàn)場(chǎng)總線CAN總線具有比其它現(xiàn)場(chǎng)總線更高效的性能,利用CAN總線實(shí)現(xiàn)數(shù)據(jù)通信功能更便捷、更可靠、并且實(shí)時(shí)性更強(qiáng),目前CAN總線的使用已經(jīng)越來(lái)越廣泛,技術(shù)發(fā)展也越來(lái)越成熟。一開始CAN總線是為了解決汽車中設(shè)備間的通信問(wèn)題而發(fā)明出來(lái)的,因此CAN總線應(yīng)用最廣泛的領(lǐng)域就是汽車領(lǐng)域,隨著不斷發(fā)展,現(xiàn)在一些世界著名的汽車品牌,如奧迪、奔馳、寶馬等都運(yùn)用CAN總線通信技術(shù)?,F(xiàn)在它已經(jīng)不單單應(yīng)用在汽車領(lǐng)域,交通運(yùn)輸、機(jī)械、醫(yī)療、電子設(shè)備等領(lǐng)域也有了巨大的發(fā)展,可以說(shuō)CAN總線已經(jīng)成為了應(yīng)用最廣泛且最有發(fā)展?jié)摿Φ耐ㄐ趴偩€。4. CAN總線已有自己的國(guó)際標(biāo)準(zhǔn) CAN總線自從問(wèn)世后
21、就在汽車領(lǐng)域中得到了廣泛的應(yīng)用與好評(píng),隨著不斷的發(fā)展,CAN在其它領(lǐng)域中的使用也越來(lái)越廣泛,并在1993年有了自己的國(guó)際標(biāo)準(zhǔn),CAN總線在市場(chǎng)上的競(jìng)爭(zhēng)力大大提高,更加廣為使用,這也對(duì)CAN總線今后的發(fā)展有很大的意義。2.1.2 CAN總線的發(fā)展概況現(xiàn)場(chǎng)總線已經(jīng)成為了工業(yè)控制系統(tǒng)通信中非常可靠的一類通信數(shù)據(jù)總線。盡管到目前為止,我國(guó)的技術(shù)水平并沒有達(dá)到一定的高度,我們對(duì)現(xiàn)場(chǎng)總線的研究也尚不能稱得上是世界先列,但現(xiàn)場(chǎng)總線的高性能高優(yōu)勢(shì)使得它已經(jīng)被應(yīng)用到各個(gè)領(lǐng)域中。當(dāng)今現(xiàn)場(chǎng)總線并沒有嚴(yán)格的規(guī)范,因此它可以自由的發(fā)揮,這會(huì)更加促進(jìn)現(xiàn)場(chǎng)總線技術(shù)的發(fā)展和標(biāo)準(zhǔn)的產(chǎn)生。CAN正是在這種不斷需求和不斷發(fā)展的背景
22、下誕生的。在當(dāng)今科技發(fā)展如此快速的背景下,CAN控制器局域網(wǎng)也已經(jīng)在中國(guó)取得了迅速的發(fā)展,已經(jīng)被廣泛應(yīng)用于航空航天、交通、工業(yè)、醫(yī)療、汽車等領(lǐng)域,我們國(guó)家著名的神舟航天飛行器就運(yùn)用了CAN的技術(shù)。現(xiàn)如今,CAN已經(jīng)在各個(gè)領(lǐng)域中有了廣泛的使用和發(fā)展,這就產(chǎn)生了一個(gè)問(wèn)題,即CAN通信報(bào)文勢(shì)必要有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)。飛利浦公司為我們開了先河,第一個(gè)制訂并公布了CAN的標(biāo)準(zhǔn),有了這個(gè)基礎(chǔ),不久國(guó)際標(biāo)準(zhǔn)化組織就制定并正式公布了CAN的國(guó)際標(biāo)準(zhǔn),CAN終于實(shí)現(xiàn)了標(biāo)準(zhǔn)化,這就為CAN技術(shù)今后更好的發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)。因?yàn)镃AN自身的高性能和高優(yōu)勢(shì),它的發(fā)展規(guī)模也在不斷擴(kuò)大,已經(jīng)不是早期剛剛研發(fā)出來(lái)僅僅應(yīng)用于汽
23、車領(lǐng)域,而是在航空航天、交通運(yùn)輸、醫(yī)療、機(jī)械、自動(dòng)化等各個(gè)領(lǐng)域都得到了很好地應(yīng)用與發(fā)展,已經(jīng)在這些領(lǐng)域都有了一席之地。盡管CAN總線通信仍然有一些不足和局限,但是隨著通信技術(shù)的不斷發(fā)展,生活和科研等對(duì)通信技術(shù)的要求的不斷提高,我們相信CAN總線會(huì)不斷進(jìn)步和發(fā)展,在未來(lái)能夠取得更大的成功。2.1.3 CAN總線的特點(diǎn)CAN總線是德國(guó)博世公司針對(duì)汽車中設(shè)備的通信而開發(fā)出來(lái)的一種串行數(shù)據(jù)通信協(xié)議,它的通信范圍廣,通信速率高,即使在遠(yuǎn)距離也能實(shí)現(xiàn)快速通信。它具有以下特點(diǎn):1. CAN能將數(shù)據(jù)按照成幀方式進(jìn)行處理CAN總線通信功能強(qiáng)大,可以對(duì)數(shù)據(jù)按照成幀方式進(jìn)行處理,通信快捷,實(shí)用性強(qiáng)。2. CAN總線
24、通信節(jié)點(diǎn)無(wú)數(shù)量限制和以往總線通信不同,CAN通信是直接對(duì)通信數(shù)據(jù)模塊進(jìn)行編碼,這可以說(shuō)是CAN總線最大的一個(gè)特點(diǎn)。這樣的好處就是在分布式控制系統(tǒng)的通信中不僅可以使通信的節(jié)點(diǎn)個(gè)數(shù)不受限制,而且當(dāng)有特殊要求時(shí)還可以讓不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),可以說(shuō)相比以往有了很大的進(jìn)步,這就是CAN相比其它總線通信的強(qiáng)大之處。3. CAN總線各個(gè)節(jié)點(diǎn)之間可以自由通信CAN總線的有著獨(dú)一無(wú)二的設(shè)計(jì),它上面的任意一個(gè)節(jié)點(diǎn)都可在通信中的任何時(shí)候向系統(tǒng)中的其它任何節(jié)點(diǎn)發(fā)送數(shù)據(jù)而不會(huì)收到阻礙,各節(jié)點(diǎn)之間可以不分時(shí)間不互相排斥進(jìn)行自由通信,這就很好地保證了CAN總線通信的高效性。4. CAN總線通信距離遠(yuǎn)、通信速率高,
25、通信實(shí)時(shí)性強(qiáng)CAN總線通信距離遠(yuǎn),最遠(yuǎn)可達(dá)10公里,通信速率最高可達(dá)到1Mbps,即使在最遠(yuǎn)距離通信,通信速率也能達(dá)到50kbps。CAN總線通信實(shí)時(shí)性強(qiáng),可以在很小的范圍內(nèi)進(jìn)行大量的數(shù)據(jù)通信,還可以在很遠(yuǎn)的距離進(jìn)行少量數(shù)據(jù)的通信。2.1.4 CAN總線協(xié)議介紹如表2-1所示,CAN協(xié)議涵蓋了國(guó)際標(biāo)準(zhǔn)化組織規(guī)定的OSI(開放式系統(tǒng)互聯(lián))基本參照模型中的傳輸層、物理層以及數(shù)據(jù)鏈路層。表2-1 OSI基本參照模型OSI基本參照模型各層定義的主要項(xiàng)目7層:應(yīng)用層由實(shí)際應(yīng)用程序提供可利用的服務(wù)。6層:表示層進(jìn)行數(shù)據(jù)表現(xiàn)形式的轉(zhuǎn)換。如:文字設(shè)定、數(shù)據(jù)壓縮等5層:會(huì)話層建立會(huì)話式的通信,控制數(shù)據(jù)正確地接收
26、和發(fā)送4層:傳輸層控制數(shù)據(jù)傳輸?shù)捻樞?、傳輸錯(cuò)誤的檢測(cè)等,保證通信的質(zhì)量。如:錯(cuò)誤修正、再傳輸控制。3層:網(wǎng)絡(luò)層進(jìn)行數(shù)據(jù)傳送的路由選擇或中繼。如:?jiǎn)卧g的數(shù)據(jù)交換、地址管理。2層:數(shù)據(jù)鏈路層將物理層收到的信號(hào)組成有意義的數(shù)據(jù),提供傳輸錯(cuò)誤控制燈數(shù)據(jù)傳輸流程。如:訪問(wèn)的方法、數(shù)據(jù)的形式。通信方式、連接控制方式、檢錯(cuò)方式。1層:物理層規(guī)定了通信時(shí)使用的電纜、連接器等電氣信號(hào)規(guī)格,以實(shí)現(xiàn)設(shè)備間的信號(hào)傳送。如:信號(hào)電平、收發(fā)器、電纜、連接器等的形態(tài)。數(shù)據(jù)鏈路層是CAN總線通信協(xié)議的核心部分,主要負(fù)責(zé)數(shù)據(jù)的發(fā)送接收以及錯(cuò)誤檢測(cè)等,它的功能通常在CAN控制器的硬件中實(shí)現(xiàn)。數(shù)據(jù)鏈路層有兩個(gè)組成部分,分別是邏輯
27、鏈路控制層(LLC)和介質(zhì)訪問(wèn)控制層(MAC)。其中介質(zhì)訪問(wèn)控制層又是數(shù)據(jù)鏈路層的核心部分。如表2-2為OSI基本參照模型中的傳輸層、數(shù)據(jù)鏈路層以及物理層的CAN協(xié)議定義。表2-2 OSI各層中CAN定義事項(xiàng)層定義事項(xiàng)功能傳輸層 再發(fā)送控制永久再嘗試數(shù)據(jù)鏈路層(LLC)接收消息的選擇可點(diǎn)對(duì)點(diǎn)連接、廣播、組播。過(guò)載通知通知接收準(zhǔn)備尚未完成錯(cuò)誤恢復(fù)功能再次發(fā)送數(shù)據(jù)鏈路層(MAC)消息的幀化有數(shù)據(jù)幀、遙控幀、錯(cuò)誤幀、過(guò)載幀4種幀類型。連接控制方式競(jìng)爭(zhēng)方式(支持多點(diǎn)傳送)數(shù)據(jù)沖突時(shí)的仲裁根據(jù)仲裁優(yōu)先級(jí)較高的ID可繼續(xù)被發(fā)送錯(cuò)誤通知CRC錯(cuò)誤、填充位錯(cuò)誤、位錯(cuò)誤、ACK錯(cuò)誤、格式錯(cuò)誤。錯(cuò)誤檢測(cè)所有單元都
28、可隨時(shí)檢測(cè)錯(cuò)誤。應(yīng)答方式ACK和NACK兩種通信方式半雙工通信物理層位編碼方式NRZ(不歸零)方式編碼位時(shí)序位時(shí)序、位的采樣數(shù)同步方式根據(jù)同步段實(shí)現(xiàn)同步,并且具有再同步功能。CAN通信可以對(duì)數(shù)據(jù)按成幀方式進(jìn)行處理,是通過(guò)以下5種類型的幀進(jìn)行的:數(shù)據(jù)幀、遙控幀、錯(cuò)誤幀、過(guò)載幀、幀間隔。其中,數(shù)據(jù)幀和遙控幀有標(biāo)準(zhǔn)格式和擴(kuò)展格式兩種格式。標(biāo)準(zhǔn)格式有11個(gè)位的標(biāo)示符,擴(kuò)展格式有29個(gè)位的標(biāo)示符。各種幀的用途如表2-3所示。表2-3 幀的種類及用途幀幀用途數(shù)據(jù)幀用于發(fā)送單元向接收單元傳送數(shù)據(jù)的幀。遙控幀用于接收單元向具有相同ID的發(fā)送單元請(qǐng)求數(shù)據(jù)的幀。錯(cuò)誤幀用于檢測(cè)出錯(cuò)誤時(shí)向其它單元通知錯(cuò)誤的幀。過(guò)載幀
29、用于接收單元通知其尚未做好接收準(zhǔn)備的幀。幀間隔用于將數(shù)據(jù)幀及遙控幀與前面的幀分離開來(lái)的幀。2.2 單片機(jī)介紹單片機(jī)全稱為單片微型計(jì)算機(jī),是在一個(gè)芯片上集成了一個(gè)微型計(jì)算機(jī)系統(tǒng),是一種嵌入式設(shè)備。單片機(jī)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備構(gòu)成,和計(jì)算機(jī)相比,它體積小,功能較低,但是易操作,可以與外圍設(shè)備連接,簡(jiǎn)單地說(shuō),就是一個(gè)芯片相當(dāng)于代替了一個(gè)計(jì)算機(jī)。單片機(jī)的出現(xiàn)解決了很多計(jì)算機(jī)領(lǐng)域中復(fù)雜的問(wèn)題,非常適合應(yīng)用在嵌入式系統(tǒng)中。單片機(jī)最早是為了解決工業(yè)控制領(lǐng)域中的一系列問(wèn)題而發(fā)明的,是由一個(gè)僅有CPU的專用處理器芯片發(fā)展產(chǎn)生的,一出現(xiàn)就在工業(yè)領(lǐng)域中得到了廣泛的應(yīng)用。單片機(jī)最早研發(fā)時(shí)的構(gòu)想就
30、是為了結(jié)構(gòu)簡(jiǎn)單且便于操作,為了做出這種小型的計(jì)算機(jī)系統(tǒng),就想到了將CPU等設(shè)備集成到一個(gè)芯片上,進(jìn)而研發(fā)出了單片機(jī)。單片機(jī)的出現(xiàn)對(duì)于那種功能復(fù)雜又對(duì)設(shè)備大小要求嚴(yán)格的系統(tǒng)設(shè)備有很大的意義。英特爾公司的4004單片機(jī)是按照這種構(gòu)想設(shè)計(jì)出的最早的一類單片機(jī),當(dāng)時(shí)的單片機(jī)都是4位和8位的,數(shù)據(jù)處理能力較低,但是在不斷地研究發(fā)展中,單片機(jī)的型號(hào)越來(lái)越多,功能也越來(lái)越強(qiáng)大,其中最成功的是英特爾公司開發(fā)的8051單片機(jī),它是一種具有8位數(shù)據(jù)處理功能的單片機(jī)。51單片機(jī)是學(xué)習(xí)單片機(jī)的入門基礎(chǔ),它一出現(xiàn)就得到了外界的一致好評(píng),直到現(xiàn)在,51單片機(jī)在各個(gè)領(lǐng)域中的使用仍然是最廣泛的,也是我們?nèi)粘W畛R姷摹T诋?dāng)今的
31、生活中,人們所接觸到的任何電子產(chǎn)品比如手機(jī)、家用電器、電腦、玩具等等都會(huì)用到單片機(jī)。2.2.1 單片機(jī)硬件特性1、單片機(jī)的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)簡(jiǎn)單,使用方便;2、處理功能強(qiáng),速度快;3、單片機(jī)耐用,可連續(xù)工作很長(zhǎng)時(shí)間不出現(xiàn)故障;4、低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品;5、控制功能強(qiáng);2.2.2 單片機(jī)發(fā)展?fàn)顩r歷史上第一個(gè)單片機(jī)問(wèn)世于1971年,一經(jīng)問(wèn)世,單片機(jī)的開發(fā)就迎來(lái)了高潮,單片機(jī)的發(fā)展總共經(jīng)歷了三個(gè)階段:?jiǎn)纹⑿陀?jì)算機(jī)階段、微控制器階段、嵌入式系統(tǒng)階段。單片機(jī)剛研發(fā)出來(lái)時(shí)功能很低端,只能處理4位和8位的數(shù)據(jù),當(dāng)時(shí)研發(fā)最好的、功能最強(qiáng)的單片機(jī)是英特爾公司的8031單片機(jī),此后又研發(fā)出了51系列單片
32、機(jī)。51單片機(jī)是我們最熟知、應(yīng)用最廣的一類單片機(jī),51單片機(jī)一問(wèn)世就受到了人們的青睞。隨著技術(shù)的不斷發(fā)展,對(duì)單片機(jī)功能的要求越來(lái)越高,慢慢的發(fā)展出現(xiàn)了16位單片機(jī),但由于技術(shù)不夠成熟,這類單片機(jī)的性價(jià)比和以前的相比不高,所以應(yīng)用并不廣泛。隨著人們對(duì)于電子產(chǎn)品的了解加深,對(duì)電子產(chǎn)品使用的好奇,電子產(chǎn)品的需求量逐漸增大,單片機(jī)進(jìn)入了一個(gè)高速發(fā)展的階段,在這期間研發(fā)出了32位單片機(jī),這類單片機(jī)功能強(qiáng)大且性價(jià)比高,迅速取代了16位單片機(jī),成為了單片機(jī)市場(chǎng)的新霸主。隨著32為單片機(jī)的出現(xiàn),8位單片機(jī)的數(shù)據(jù)處理能力也得到了很大的提升,性價(jià)比也在增加,盡管是8位,但是數(shù)據(jù)處理能力相比以往提高了百十倍。從此,
33、單片機(jī)進(jìn)入了一個(gè)高速發(fā)展的階段。現(xiàn)在的單片機(jī)經(jīng)過(guò)時(shí)間的洗禮已經(jīng)有了自己專用的嵌入式操作系統(tǒng),而且更加高端的單片機(jī)甚至有了自己的linux系統(tǒng)和windows系統(tǒng),可以說(shuō)當(dāng)今單片機(jī)的發(fā)展已經(jīng)進(jìn)入了一個(gè)嶄新的階段。發(fā)展的早期階段:?jiǎn)纹瑱C(jī)發(fā)展的第一個(gè)階段是單片微型計(jì)算機(jī)階段,在這一階段中英特爾公司做出了很大的貢獻(xiàn),其中研發(fā)最成功的是8031單片機(jī),在這個(gè)階段中一直都在研究能應(yīng)用到單片機(jī)上的最佳的嵌入式系統(tǒng)體系結(jié)構(gòu),尤其是英特爾公司,可以說(shuō)是居功至偉,這也使得單片機(jī)與普通計(jì)算機(jī)走向了完全不同的兩個(gè)發(fā)展方向。中期發(fā)展:?jiǎn)纹瑱C(jī)發(fā)展的第二大階段是微控制器發(fā)展階段。微控制器主要是開發(fā)和提高智能化對(duì)象系統(tǒng)的功能
34、,在滿足系統(tǒng)功能的同時(shí)還要滿足對(duì)外圍設(shè)備、電路等的要求。因此在這一階段許多的電子技術(shù)廠家擔(dān)起了發(fā)展單片機(jī)的重任。由于這一階段的研究與開發(fā)具體針對(duì)對(duì)象系統(tǒng),而英特爾公司在發(fā)展微控制器中比較緩慢,因此它們慢慢的淡出了市場(chǎng)。飛利浦公司對(duì)微控制器的發(fā)展做出了卓越的貢獻(xiàn)。當(dāng)前發(fā)展趨勢(shì):第三大階段是嵌入式系統(tǒng)發(fā)展階段:?jiǎn)纹瑱C(jī)是嵌入式設(shè)備中最重要的一部分,堪比嵌入式系統(tǒng)的“心臟”。隨著嵌入式技術(shù)的不斷發(fā)展,對(duì)單片機(jī)的要求也越來(lái)越高,例如我們最常用的51單片機(jī),它是8位數(shù)據(jù)處理能力的單片機(jī),現(xiàn)在已經(jīng)面對(duì)著越來(lái)越大的挑戰(zhàn)和困難,32位的單片機(jī)應(yīng)用也越來(lái)越廣泛,同樣面臨著技術(shù)改進(jìn)的難題。總之,要想對(duì)單片機(jī)有深入的
35、理解和研究,我們必須從單片微型計(jì)算機(jī)、微控制器再到SoC單片機(jī)應(yīng)用系統(tǒng)這三大階段詳細(xì)學(xué)習(xí)。目前,單片機(jī)已經(jīng)廣泛應(yīng)用到我們生活中的各個(gè)領(lǐng)域中,計(jì)算機(jī)數(shù)據(jù)通信、機(jī)械自動(dòng)化、電子玩具以及平時(shí)我們用的各種卡,比如公交卡、學(xué)生卡、工作卡等,可以說(shuō)單片機(jī)的應(yīng)用前景非常廣闊。2.2.3 單片機(jī)設(shè)計(jì)本次畢業(yè)設(shè)計(jì)我們采用了應(yīng)用廣泛的STC89C52單片機(jī),它是51單片機(jī)的一種。本單片機(jī)是一款較為低端的單片機(jī),但是應(yīng)用廣泛成熟,開發(fā)方便快捷,滿足本設(shè)計(jì)功能要求,所以本次設(shè)計(jì)采用其為主控制器。STC89C52單片機(jī)是STC公司設(shè)計(jì)的一款高性能、低消耗,具有8為數(shù)據(jù)處理能力的單片機(jī)。它是51單片機(jī)的一種,但是它又具有
36、51單片機(jī)沒有的很多功能。它具有8為CPU和在系統(tǒng)可編程Flash。本次設(shè)計(jì)制作了STC89C52RC單片機(jī)最小系統(tǒng)和外圍應(yīng)用電路,單片機(jī)最小系統(tǒng)實(shí)現(xiàn)單片機(jī)運(yùn)行的基本需求,同時(shí)控制外圍電路實(shí)現(xiàn)本次設(shè)計(jì)各項(xiàng)功能。單片機(jī)最小系統(tǒng)由STC89C52RC單片機(jī)芯片、電源、晶體振蕩電路、復(fù)位電路組成,配合有按鍵、LED、UART通訊接口等人際交互電路。單片機(jī)的最小系統(tǒng)就是讓單片機(jī)能正常工作并發(fā)揮其功能時(shí)所必須的組成部分,也可理解為是用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。1.晶體振蕩器電路51單片機(jī)上的時(shí)鐘管腳為XTAL1(19腳)芯片內(nèi)部振蕩電路輸入端XTAL2(18腳)芯片內(nèi)部振蕩電路輸出端。XTA
37、L1和XTAL2是獨(dú)立的輸入和輸出反相放大器,在XTAL1、XTAL2的引腳上外接定時(shí)元件:一個(gè)石英晶體和兩個(gè)電容,內(nèi)部振蕩器便能產(chǎn)生自激振蕩。在本次設(shè)計(jì)中采用11.0592M的石英晶振。2.復(fù)位電路在單片機(jī)系統(tǒng)中,復(fù)位電路是非常關(guān)鍵的,當(dāng)程序跑飛(運(yùn)行不正常)或死機(jī)(停止運(yùn)行)時(shí),就需要進(jìn)行復(fù)位。MCS-5l系列單片機(jī)的復(fù)位引腳RST(第9管腳)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。本設(shè)計(jì)采用上電自動(dòng)復(fù)位,上電瞬間,電容兩端電壓不能突變,此時(shí)電容的負(fù)極和RESET相連,電壓全部加在了電阻上,RESET的輸入為高,芯片被復(fù)位。隨
38、之+5V電源給電容充電,電阻上的電壓逐漸減小,最后約等于0,芯片正常工作。一般來(lái)說(shuō),只要RST管腳上保持10ms以上的高電平,就能使單片機(jī)有效的復(fù)位。在硬件設(shè)計(jì)中,我們首先要先制作單片機(jī)的最小系統(tǒng),單片機(jī)的最小系統(tǒng)就是指能讓單片機(jī)正常工作的最小組成部分。在本次設(shè)計(jì)中,最小系統(tǒng)主要包括單片機(jī)、晶振電路、復(fù)位電路、電源等。如圖2-1為本次STC89C52單片機(jī)的最小系統(tǒng)。,另外我們還需要一個(gè)下載程序的接口,該UART接口可以完成單片機(jī)調(diào)試功能,實(shí)現(xiàn)單片機(jī)與其他設(shè)備的數(shù)據(jù)發(fā)送接受功能,如圖2-2所示。本次設(shè)計(jì)中STC89C52RC單片機(jī)程序的軟件開發(fā)環(huán)境用Keil uVison4集成開發(fā)環(huán)境,用C語(yǔ)
39、言設(shè)計(jì)編寫程序,利用串口將編寫好的程序下載到單片機(jī)內(nèi)。根據(jù)本次設(shè)計(jì)所要完成的功能需求在單片機(jī)最小系統(tǒng)基礎(chǔ)上擴(kuò)展應(yīng)用電路和應(yīng)用程序。圖2-1 STC89C52單片機(jī)最小系統(tǒng) 圖2-2 stc89c52單片機(jī)調(diào)試接口2.3 開發(fā)環(huán)境及開發(fā)語(yǔ)言介紹2.3.1 keil uvision4開發(fā)環(huán)境簡(jiǎn)介Keil C51是美國(guó)Keil軟件公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過(guò)一個(gè)集成開發(fā)環(huán)境將這些部分組合在一起。運(yùn)行
40、Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語(yǔ)言編程,那么Keil幾乎就是你的不二之選,即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。本次軟件設(shè)計(jì)使用的就是keil uvision4開發(fā)環(huán)境,如圖2-3所示。圖2-3 keil uvision4開發(fā)環(huán)境Keil uVision4于2009年2月發(fā)布,Keil uVision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺(tái)監(jiān)視器,并提供了視覺上的表面對(duì)窗口位置的完全控制的任何地方。新的用戶界面可以更好地利用屏幕空間和更有效地組織多個(gè)窗口,提供一個(gè)整潔,高效
41、的環(huán)境來(lái)開發(fā)應(yīng)用程序。新版本支持更多最新的ARM芯片,還添加了一些其他新功能。最新的Keil uVision4 ,旨在提高開發(fā)人員的生產(chǎn)力,實(shí)現(xiàn)更快,更有效的程序開發(fā)。uVision4引入了靈活的窗口管理系統(tǒng),能夠拖放到視圖內(nèi)的任何地方,包括支持多顯示器窗口。uVision4在Vision3 IDE的基礎(chǔ)上,增加了更多大眾化的功能。 多顯示器和靈活的窗口管理系統(tǒng) 系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器信息 調(diào)試還原視圖創(chuàng)建并保存多個(gè)調(diào)試窗口布局 多項(xiàng)目工作區(qū)簡(jiǎn)化與眾多的項(xiàng)目Keil C51開發(fā)系統(tǒng)基本知識(shí):1 系統(tǒng)概述Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Window
42、s界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil的優(yōu)勢(shì)。下面詳細(xì)介紹Keil C51開發(fā)系統(tǒng)各部分功能和使用。Keil C51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu)C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)
43、換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。2.3.2 開發(fā)語(yǔ)言介紹本次軟件程序設(shè)計(jì)使用C語(yǔ)言編寫程序。C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。C語(yǔ)言是世界上最流行、使用最廣泛的高級(jí)程序設(shè)計(jì)語(yǔ)言之一。在操作系統(tǒng)和系統(tǒng)使用程序以及需要對(duì)硬件進(jìn)行操作的場(chǎng)合,用C語(yǔ)言明顯優(yōu)于其它高級(jí)語(yǔ)言,許多大型應(yīng)用軟件都是用C語(yǔ)言編寫的。C語(yǔ)言具有以下
44、基本特性: 1、C是高級(jí)語(yǔ)言:它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。2、C是結(jié)構(gòu)式語(yǔ)言:結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C 語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。3、C語(yǔ)言功能齊全:具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大,可以實(shí)現(xiàn)決策目的的游戲。4、C
45、語(yǔ)言適用范圍大:適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機(jī)型。C語(yǔ)言對(duì)編寫需要硬件進(jìn)行操作的場(chǎng)合,優(yōu)于其它高級(jí)語(yǔ)言,有一些大型應(yīng)用軟件也是用C語(yǔ)言編寫的。C語(yǔ)言具有以下技術(shù)特點(diǎn):1、簡(jiǎn)潔緊湊、靈活方便C語(yǔ)言一共只有40個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書寫形式自由,區(qū)分大小寫。把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。2、運(yùn)算符豐富C語(yǔ)言的運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C語(yǔ)言的運(yùn)算類型極其豐富,表達(dá)式類
46、型多樣化。靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算。3、數(shù)據(jù)類型豐富C語(yǔ)言的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。并引入了指針概念,使程序效率更高。4、允許直接訪問(wèn)物理地址,對(duì)硬件進(jìn)行操作由于C語(yǔ)言允許直接訪問(wèn)物理地址,可以直接對(duì)硬件進(jìn)行操作,因此它既具有高級(jí)語(yǔ)言的功能,又具有低級(jí)語(yǔ)言的許多功能,能夠像匯編語(yǔ)言一樣對(duì)位(bit)、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元,可用來(lái)寫系統(tǒng)軟件。5、表達(dá)力強(qiáng)C語(yǔ)言有豐富的數(shù)據(jù)結(jié)構(gòu)和運(yùn)算符。包含了各種數(shù)據(jù)結(jié)構(gòu),如整型、數(shù)組類型、指針類型和聯(lián)合類型等,
47、用來(lái)實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。C語(yǔ)言的運(yùn)算符有34種,范圍很寬,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)難度極大的運(yùn)算。C語(yǔ)言能直接訪問(wèn)硬件的物理地址,能進(jìn)行位(bit)操作。兼有高級(jí)語(yǔ)言和低級(jí)語(yǔ)言的許多優(yōu)點(diǎn)。它既可用來(lái)編寫系統(tǒng)軟件,又可用來(lái)開發(fā)應(yīng)用軟件,已成為一種通用程序設(shè)計(jì)語(yǔ)言。另外C語(yǔ)言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。3 系統(tǒng)設(shè)計(jì)3.1 設(shè)計(jì)目的本次CAN通信系統(tǒng)的設(shè)計(jì)目的是實(shí)現(xiàn)兩個(gè)CAN節(jié)點(diǎn)之間的數(shù)據(jù)通信,制作兩個(gè)單片機(jī),型號(hào)為stc89c52,兩個(gè)CAN通信模塊,其中一個(gè)單片機(jī)和一個(gè)CAN通信模塊組成一個(gè)CAN節(jié)點(diǎn),另一個(gè)組成另一個(gè)CAN節(jié)點(diǎn),電池供電,設(shè)計(jì)
48、編寫主函數(shù),CAN初始化程序以及CAN發(fā)送數(shù)據(jù)和接收數(shù)據(jù)程序,并將程序下載到單片機(jī)內(nèi),實(shí)現(xiàn)兩個(gè)CAN節(jié)點(diǎn)之間的數(shù)據(jù)通信功能。3.2 設(shè)計(jì)原理及方案3.2.1 CAN總線通信原理在CAN總線通信模塊中,CAN控制器是它的核心部分,主要控制數(shù)據(jù)的發(fā)送和接收以及中斷請(qǐng)求和錯(cuò)誤檢測(cè)等。本次設(shè)計(jì)使用的CAN控制器為MCP2515,它一般有三個(gè)發(fā)送緩沖器,在報(bào)文發(fā)送之前,單片機(jī)會(huì)對(duì)CAN的發(fā)送中斷位進(jìn)行初始化,隨后在將數(shù)據(jù)寫入發(fā)送緩沖器之前,必須將發(fā)送緩沖器中的發(fā)送請(qǐng)求標(biāo)志位清0,以使發(fā)送緩沖器中沒有之前待發(fā)送的數(shù)據(jù)。另外在發(fā)送數(shù)據(jù)前,會(huì)對(duì)各個(gè)發(fā)送緩沖器的發(fā)送優(yōu)先級(jí)進(jìn)行比較,優(yōu)先級(jí)較高的先發(fā)送,如果優(yōu)先級(jí)
49、相同,則編號(hào)較高的發(fā)送緩沖器優(yōu)先發(fā)送,比如發(fā)送緩沖器1和發(fā)送緩沖器0優(yōu)先級(jí)相同,但是編號(hào)1比0高,所以發(fā)送緩沖器1率先發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)時(shí),通過(guò)將發(fā)送緩沖器的發(fā)送請(qǐng)求標(biāo)志位置1啟動(dòng)數(shù)據(jù)發(fā)送,數(shù)據(jù)發(fā)送完成后,再將發(fā)送請(qǐng)求位置0,表明發(fā)送完畢,將中斷標(biāo)志位置1表明產(chǎn)生中斷。另外,如果在你發(fā)送過(guò)程中想要終止發(fā)送,可以將發(fā)送緩沖器的發(fā)送請(qǐng)求位清零,表明終止發(fā)送,發(fā)送數(shù)據(jù)完畢。同樣的,在本次設(shè)計(jì)使用的CAN控制器MCP2515中,它一共有三個(gè)數(shù)據(jù)接收緩沖器,其中有一個(gè)較為特殊,只要通電,它總是能一直工作,接收每組數(shù)據(jù),然后它會(huì)對(duì)接收到的數(shù)據(jù)進(jìn)行分析,并將滿足條件的數(shù)據(jù)發(fā)送到另外兩個(gè)接收緩沖器中。另外兩個(gè)
50、接收緩沖器可以接收通過(guò)分析驗(yàn)證的數(shù)據(jù),當(dāng)其中一個(gè)接收緩沖器在處于準(zhǔn)備接收狀態(tài)時(shí),單片機(jī)可以訪問(wèn)另外一個(gè)緩沖器以進(jìn)行相應(yīng)的操作。當(dāng)接收數(shù)據(jù)時(shí),接收緩沖器中的接收中斷標(biāo)志位會(huì)置1,在數(shù)據(jù)接收完畢后,該位清0進(jìn)而接收下一組數(shù)據(jù),這就保證了在一組數(shù)據(jù)沒有被接收完畢時(shí),保證后面的數(shù)據(jù)不會(huì)進(jìn)入接收緩沖器中,保證了數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。而且,在接收緩沖器中也有優(yōu)先級(jí)之分,接收緩沖器0的優(yōu)先級(jí)較高,接收緩沖器1的優(yōu)先級(jí)較低。另外,在接收數(shù)據(jù)過(guò)程中,如果想要中斷,將接收中斷請(qǐng)求標(biāo)志位置1則進(jìn)入中斷狀態(tài),將接收中斷標(biāo)志位清0表示結(jié)束中斷狀態(tài)。另外,CAN總線通信協(xié)議具備完善的錯(cuò)誤檢測(cè)處理模塊,可以檢測(cè)到數(shù)據(jù)發(fā)送和接收
51、過(guò)程中的任何錯(cuò)誤。3.2.2 軟件設(shè)計(jì)方案本次CAN總線通信系統(tǒng)的軟件設(shè)計(jì)主要包括這幾個(gè)部分:串口的初始化、發(fā)送和接收,SPI的發(fā)送接收,CAN的初始化、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收。掌握了這幾個(gè)部分的程序原理我們就能設(shè)計(jì)出一個(gè)比較簡(jiǎn)單的CAN總線通信系統(tǒng)。在本次設(shè)計(jì)中,采用80c51單片機(jī),80c51與PC機(jī)通信,PC發(fā)送數(shù)據(jù)到串口,串口調(diào)用發(fā)送函數(shù)經(jīng)過(guò)單片機(jī)通過(guò)SPI將數(shù)據(jù)寫入mcp2515并通過(guò)CAN收發(fā)器發(fā)送;CAN總線傳輸過(guò)來(lái)的數(shù)據(jù)經(jīng)過(guò)CAN收發(fā)器接受并寫入mcp2515,調(diào)用CAN發(fā)送函數(shù)經(jīng)過(guò)單片機(jī)讀取數(shù)據(jù)上傳給PC機(jī)。如圖3-1為本次設(shè)計(jì)的總體設(shè)計(jì)框圖。串口程序負(fù)責(zé)計(jì)算機(jī)和單片機(jī)之間的數(shù)據(jù)
52、傳輸,SPI接口程序負(fù)責(zé)單片機(jī)和CAN通信模塊的數(shù)據(jù)傳輸。發(fā)送數(shù)據(jù)子程序負(fù)責(zé)CAN節(jié)點(diǎn)數(shù)據(jù)的發(fā)送,發(fā)送數(shù)據(jù)時(shí),首先要清空發(fā)送請(qǐng)求標(biāo)志位,然后啟動(dòng)MCP2515控制器,將發(fā)送緩沖區(qū)中的數(shù)據(jù)發(fā)送出去。接收數(shù)據(jù)子程序相比發(fā)送數(shù)據(jù)子程序要稍微麻煩一點(diǎn),接收數(shù)據(jù)子程序負(fù)責(zé)CAN節(jié)點(diǎn)數(shù)據(jù)的接收以及其它特殊情況的操作處理。但是在接收數(shù)據(jù)的過(guò)程中,我們要對(duì)CAN總線中斷、出錯(cuò)、溢出、是否有數(shù)據(jù)等特殊情況進(jìn)行處理。TJA1050Mcp251580C51PC機(jī) CAN 總 線 TJA1050PC機(jī)80C51Mcp2515圖3-1 總體設(shè)計(jì)框圖3.3 軟件設(shè)計(jì)流程圖3.3.1 主程序流程圖程序開始運(yùn)行后,分別進(jìn)行串口初始化、MCP2515初始化、CAN初始化,然后把要發(fā)送的數(shù)據(jù)輸入到CPU的存儲(chǔ)器中,點(diǎn)擊發(fā)送,串口接收到電腦發(fā)來(lái)的數(shù)據(jù)后通過(guò)CAN控制器發(fā)送到另一個(gè)CAN節(jié)點(diǎn)控制器,在這個(gè)過(guò)程中調(diào)用發(fā)送數(shù)據(jù)子程序和接收數(shù)據(jù)子程序,另一個(gè)CAN控制器收
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年電動(dòng)校車租賃與安全保障協(xié)議3篇
- 2025年度茶樓裝修進(jìn)度款支付合同范本4篇
- 二零二五年度礦長(zhǎng)勞動(dòng)合同附礦山安全生產(chǎn)技術(shù)改造合同3篇
- 二零二五年度綠色建筑節(jié)能減排項(xiàng)目合作協(xié)議書3篇
- 二零二五年度特許經(jīng)營(yíng)合同:品牌授權(quán)方與加盟商之間的經(jīng)營(yíng)權(quán)授予協(xié)議3篇
- 二零二五年度移動(dòng)應(yīng)用開發(fā)技術(shù)服務(wù)分包合同范本2篇
- 二零二五年度能源倉(cāng)儲(chǔ)場(chǎng)承包合同戰(zhàn)略能源儲(chǔ)備合作協(xié)議范本3篇
- 二零二五年度菜園大棚蔬菜種植與農(nóng)業(yè)廢棄物資源化利用合同3篇
- 二零二五年度河南地區(qū)事業(yè)單位100人招聘合同(人才引進(jìn)專項(xiàng))3篇
- 2025年度校園安全保衛(wèi)與安保人員招聘合同3篇
- 部編新改版語(yǔ)文一年級(jí)下冊(cè)《語(yǔ)文園地四》教學(xué)設(shè)計(jì)
- 2025年北京鐵路局集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 《藥品招商營(yíng)銷概論》課件
- 曙光磁盤陣列DS800-G10售前培訓(xùn)資料V1.0
- 寺廟祈?;顒?dòng)方案(共6篇)
- 2025年病案編碼員資格證試題庫(kù)(含答案)
- 企業(yè)財(cái)務(wù)三年戰(zhàn)略規(guī)劃
- 提高膿毒性休克患者1h集束化措施落實(shí)率
- 山東省濟(jì)南市天橋區(qū)2024-2025學(xué)年八年級(jí)數(shù)學(xué)上學(xué)期期中考試試題
- 主播mcn合同模板
- 2024測(cè)繪個(gè)人年終工作總結(jié)
評(píng)論
0/150
提交評(píng)論