999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于CAN總線的PC機(jī)與單片機(jī)的多點(diǎn)通信*

2015-06-05 05:22:50李國(guó)利張愷鈺金陵科技學(xué)院機(jī)電工程學(xué)院江蘇南京211169
關(guān)鍵詞:單片機(jī)系統(tǒng)

劉 登,李國(guó)利,陳 健,張愷鈺,時(shí) 光(金陵科技學(xué)院 機(jī)電工程學(xué)院,江蘇 南京 211169)

基于CAN總線的PC機(jī)與單片機(jī)的多點(diǎn)通信*

劉 登,李國(guó)利,陳 健,張愷鈺,時(shí) 光
(金陵科技學(xué)院 機(jī)電工程學(xué)院,江蘇 南京 211169)

設(shè)計(jì)了一種基于CAN總線的PC機(jī)與單片機(jī)多點(diǎn)通信系統(tǒng)。系統(tǒng)包括PC機(jī)、STC89S52單片機(jī)、CAN接口控制器、串行收發(fā)器等。介紹了USB轉(zhuǎn)CAN通信接口的通信節(jié)點(diǎn)設(shè)計(jì)方案,給出了各通信節(jié)點(diǎn)的硬件電路和軟件設(shè)計(jì),最后進(jìn)行了系統(tǒng)通信實(shí)驗(yàn),結(jié)果表明該系統(tǒng)具有可靠性高、抗干擾能力強(qiáng)等特點(diǎn)。

CAN總線;單片機(jī);多點(diǎn)通信

0 引言

傳統(tǒng)的單片機(jī)串口通信中大多采用RS232或RS485串口,因其傳輸速率和距離(小于 1.5 km)的限制,已漸漸不能滿足用戶系統(tǒng)需求,而CAN總線因其卓越的性能,被廣泛應(yīng)用到汽車(chē)工業(yè)、自動(dòng)控制、樓宇自動(dòng)化、醫(yī)學(xué)設(shè)備等各個(gè)領(lǐng)域[1]。CAN(Controller Area Network,控制器局域網(wǎng))屬于現(xiàn)場(chǎng)總線的范疇,是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一[2-3]。CAN可以組建多主對(duì)等的總線通信系統(tǒng);具有非破壞性總線仲裁技術(shù),讓優(yōu)先級(jí)高的信息得到更快速的處理;具有強(qiáng)大的錯(cuò)誤檢測(cè)機(jī)制,可以檢測(cè)到總線上的任何錯(cuò)誤;采用短幀結(jié)構(gòu)、位填充和CRC校驗(yàn)等措施,使傳輸具有高可靠性。這些優(yōu)點(diǎn)使得CAN總線特別適用于工業(yè)過(guò)程監(jiān)控設(shè)備的互聯(lián)。在

所有的 CAN轉(zhuǎn)接口中,USB速度快,即插即用,使用更加廣泛,采用USB轉(zhuǎn)CAN總線實(shí)現(xiàn)單片機(jī)與上位機(jī)的通信具有一定的研究與應(yīng)用意義[4]。

1 系統(tǒng)硬件設(shè)計(jì)

1.1系統(tǒng)總體設(shè)計(jì)

系統(tǒng)的總體結(jié)構(gòu)如圖1所示,硬件電路主要包括USB轉(zhuǎn)CAN通信接口以及各個(gè)通信節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)由CAN收發(fā)器 TJA1050、CAN控制器 SJA1000和單片機(jī)STC89S52組成,CAN總線兩端應(yīng)串接 120 Ω的電阻,該電阻對(duì)于匹配總線阻抗起著重要作用。系統(tǒng)主要實(shí)現(xiàn)的功能為:PC機(jī)通過(guò)USB轉(zhuǎn)CAN通信接口向CAN總線發(fā)送一幀CAN總線數(shù)據(jù),相應(yīng)節(jié)點(diǎn)在接收到CAN消息后,存儲(chǔ)在SJA1000的接收緩沖區(qū)中,并向單片機(jī)發(fā)送中斷信號(hào),單片機(jī)在中斷子程序中讀取SJA1000接收緩沖區(qū)中的數(shù)據(jù),當(dāng)需要向上位機(jī)發(fā)送數(shù)據(jù)時(shí),先由單片機(jī)將一幀CAN消息寫(xiě)入到SJA1000的發(fā)送緩沖區(qū),再將其發(fā)送到CAN總線上,PC機(jī)調(diào)用接收子函數(shù)以實(shí)現(xiàn)CAN消息的接收。

1.2USB轉(zhuǎn)CAN模塊硬件設(shè)計(jì)

該部分硬件框圖如圖2所示。此部分對(duì)應(yīng)于圖1中的USB轉(zhuǎn)CAN通信接口模塊。USB控制芯片采用CP2102,該芯片是一種高度集成的 USB轉(zhuǎn) UART橋接器,包含 USB2.0全速功能控制器,符合 USB2.0規(guī)范的要求。USB收發(fā)器內(nèi)含512 B接收緩沖器和512 B發(fā)送緩沖器,振蕩器和帶有全部的調(diào)制解調(diào)器控制信號(hào)的異步串行數(shù)據(jù)總線,CP2102內(nèi)置有與計(jì)算機(jī)通信的 USB協(xié)議,PC機(jī)通過(guò) USB控制芯片 CP2102向單片機(jī)發(fā)送CAN消息,再由單片機(jī)通過(guò) SJA1000將數(shù)據(jù)送到 CAN總線上。所提供的COM口器件驅(qū)動(dòng)器允許一個(gè)基于CP2102的產(chǎn)品作為 PC機(jī)的一個(gè) COM口使用,可以像操作通用串行口的控制方式來(lái)使用這個(gè)COM口。

圖 2USB轉(zhuǎn)CAN硬件框圖

1.3CAN模塊節(jié)點(diǎn)硬件設(shè)計(jì)

CAN節(jié)點(diǎn)的通信核心芯片為CAN控制器和CAN驅(qū)動(dòng)收發(fā)器,各節(jié)點(diǎn)電路圖如圖3所示。CAN控制器SJA1000是一種獨(dú)立控制器,是 PHILIPS半導(dǎo)體PCA82C200 CAN控制器(BasicCAN)的替代品,而且它增加了一種新的工作模式(PeliCAN),這種模式支持具有很多新特性的CAN2.0B協(xié)議[5-6]。TJA1050符合ISO 11898標(biāo)準(zhǔn),協(xié)議控制器通過(guò)一條串行數(shù)據(jù)輸出線TxD和一條串行數(shù)據(jù)輸入線RxD連接到收發(fā)器,而收發(fā)器則通過(guò)它的兩個(gè)有差動(dòng)接收和發(fā)送能力的總線終端CANH和CANL連接到總線線路。它的引腳S用于模式控制,參考輸出電壓Vef提供一個(gè) Vcc/2的額定輸出電壓,這個(gè)電壓是作為帶有模擬Rx輸入的CAN控制器的參考電平。由于SJA1000具有數(shù)字輸入,因此它不需要這個(gè)電壓。收發(fā)器使用5 V的額定電源電壓。

微處理器采用STC公司生產(chǎn)的STC89S52,它是一種低功耗、高性能CMOS 8位微控制器,具有8 KB Flash, 512 B RAM,3個(gè) 16位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷[7]。

圖3 CAN模塊各節(jié)點(diǎn)電路圖

CAN控制器的CS片選端連接到單片機(jī)的通用 I/O口上,由圖 3可知 SJA1000基址 SJA_BaseAdr即為0x7F00,數(shù)據(jù)端 AD0~AD7連接到單片機(jī)的 P0.0~P0.7以實(shí)現(xiàn)數(shù)據(jù)的交換,SJA1000的INT是終端信號(hào)輸出端,在中斷允許的情況下,有中斷發(fā)生時(shí),INT出現(xiàn)由高電平到低電平的跳變,因此此腳與單片機(jī)的外部中斷輸入腳INT0相連,從而使單片機(jī)可通過(guò)外部中斷的方式訪問(wèn)SJA1000。

2 系統(tǒng)軟件設(shè)計(jì)

2.1各節(jié)點(diǎn)單片機(jī)控制程序

單片機(jī)主函數(shù)流程如圖4所示。

圖4 單片機(jī)主函數(shù)流程圖

這里單片機(jī)主要完成CAN控制器 SJA1000的初始化,初始化程序中需要設(shè)置時(shí)鐘分頻寄存器、驗(yàn)收代碼寄存器、驗(yàn)收定時(shí)寄存器和總線定時(shí)寄存器,以及數(shù)據(jù)的接收和發(fā)送。首先,微處理器關(guān)閉SJA1000的中斷,然后寫(xiě)SJA1000的模式寄存器,將模式寄存器中的RM位置1,進(jìn)入復(fù)位模式,接下來(lái)在時(shí)鐘寄存器里確定使用BasicCAN模式還是 PeliCAN模式,本系統(tǒng)采用了 Peli-CAN模式,驗(yàn)收代碼寄存器和驗(yàn)收屏蔽寄存器的設(shè)置決定了各個(gè)節(jié)點(diǎn)的地址,在通信過(guò)程中起到重要作用,可以讓單片機(jī)選擇性地接收響應(yīng)節(jié)點(diǎn)CAN消息,通信波特率在總線定時(shí)寄存器 BTR0和BTR1中進(jìn)行設(shè)置,輸出寄存器配置輸出位流的電平驅(qū)動(dòng)形式,通過(guò)中斷寄存器IR和中斷使能寄存器IER設(shè)置正確的中斷模式以實(shí)現(xiàn)CAN數(shù)據(jù)的正確收發(fā)處理,最后將模式寄存器RM位請(qǐng)求清0,進(jìn)入工作模式。初始化程序的流程圖如圖5所示,關(guān)鍵部分程序如下:

EA=0; //關(guān)總中斷

BCAN_ENTER_RETMODEL(); //進(jìn)入復(fù)位模式

BCAN_CREATE_COMMUNATION();/接口檢測(cè)

BCAN_SET_OUTCLK(0x88);//Pelican模式

BCAN_SET_OBJECT(0x01,0x01,0x00,0x20,0xff,0xff,0x00,0x00);

//驗(yàn)收碼和屏蔽碼

BCAN_SET_BANDRATE(ByteRate_125k);//設(shè)置波特率

REG_OCR=0x1a; //設(shè)置輸出控制寄存器

REG_INTENABLE=0x1D;//設(shè)置中斷,接收

BCAN_SET_CONTROL(0x08);

SJA=REG_CONTROL;

*SJA=*SJA&0xfe;

if(*SJA!=0x00)

return 0;//退出復(fù)位模式

發(fā)送過(guò)程單片機(jī)將要發(fā)送的數(shù)據(jù)以CAN協(xié)議規(guī)定的幀格式構(gòu)成數(shù)據(jù)幀,存入 SJA1000的發(fā)送緩沖區(qū),然后寫(xiě)發(fā)送命令,在把數(shù)據(jù)寫(xiě)入發(fā)送緩沖區(qū)前,先判斷SJA1000的工作狀態(tài),再?zèng)Q定是否發(fā)送,其發(fā)送一個(gè)數(shù)據(jù)幀的過(guò)程如圖6所示,發(fā)送數(shù)據(jù)子程序如下:

Void SendMessage(unsigned char CAN_TX_data,unsigned char length1)

loop:

SJA=REG_STATUS;

temptt=*SJA;

if((temptt&0x04)==0x00)goto loop;//循環(huán)檢測(cè)等待

SJA=REG_RXBuffer1;//發(fā)送緩沖區(qū)1

*SJA=length1;

*SJA=CAN_TX_data;

BCAN_CMD_PRG(TR_CMD);//請(qǐng)求發(fā)送

接收數(shù)據(jù)采用接收中斷方式,單片機(jī)在中斷程序中從數(shù)據(jù)口讀取CAN消息,具有較高的實(shí)時(shí)性,接收數(shù)據(jù)子程序如下:

void ex0_int(void)interrupt 0 using 1

unsigned char tt,tt1,length,i;

SJA=REG_INTERRUPT;

if((*SJA)&0x01)//產(chǎn)生接收中斷

SJA=REG_RXBuffer1;

tt=*SJA;

tt1=*SJA;

length=tt1&0x0F;

if((tt&0x40)!=0x40)//將幀格式設(shè)置為數(shù)據(jù)幀

SJA=REG_RXBuffer4;

memcpy(RevceData,SJA_BCANAdr,length);

//將接收到的數(shù)據(jù)存入 RevceData數(shù)組中

BCAN_CMD_PRG(RRB_CMD);

//釋放SJA1000接收緩沖區(qū)

2.2上位機(jī)軟件設(shè)計(jì)

上位機(jī)軟件基于C++語(yǔ)言,采用Windows API函數(shù)實(shí)現(xiàn)串口通信,API函數(shù)在通信任務(wù)較復(fù)雜的系統(tǒng)中具有優(yōu)勢(shì),適合多線程編程,且通信穩(wěn)定,串口的打開(kāi)、關(guān)閉、讀取和寫(xiě)入所用的函數(shù)與操作文件的函數(shù)完全一致。通過(guò)調(diào)用CreateFile()函數(shù)打開(kāi)串口,CreateFile()函數(shù)會(huì)返回一個(gè)句柄,在隨后的寫(xiě)串口操作中,只需在WriteFile()函數(shù)中設(shè)置相應(yīng)的入口參數(shù),將數(shù)據(jù)轉(zhuǎn)換成CAN消息格式并打包發(fā)送即可。讀串口操作則是通過(guò)ReadFile()函數(shù)實(shí)現(xiàn),對(duì)接收到的 CAN消息數(shù)據(jù)包解包后提取出數(shù)據(jù)段,其上位機(jī)軟件工作流程如圖7所示,其中發(fā)送子程序關(guān)鍵部分程序如下:

CAN_msg msg;//CAN消息結(jié)構(gòu)體,

//結(jié)構(gòu)體成員包括CAN數(shù)據(jù)地址及類(lèi)型等

CAN.SendCANMessage(&msg);//發(fā)送CAN消息,

SendCANMessage()函數(shù)定義如下:其中pMsg為CAN消息數(shù)據(jù)包,dwTimeout為超時(shí)時(shí)間,如果發(fā)送錯(cuò)誤,系統(tǒng)將返回錯(cuò)誤信息。

CAN_ERROR RT_CAN::

SendCANMessage(CAN_msg*pMsg,DWORD dwTimeout)

if(pMsg==NULL)return CAN_ERR_PARAM;

if(pMsg-〉ch==CAN_CONFIG_CHANNEL)

return CAN_ERR_CHANNEL;

if(WritePackage((BYTE*)pMsg,sizeof(CAN_msg),dw-Timeout)==0)

return CAN_ERR_TRANS;

return CAN_OK;

圖7 主線程和讀線程流程圖

接收子程序關(guān)鍵部分如下:

RecvCANMessage(CAN_msg*pMsg,DWORD dwTimeout)

if(pMsg==NULL)

return CAN_ERR_PARAM;

if(WAIT_TIMEOUT==WaitForSingleObject(m_hRecvMsgEvnet,dwTimeout))

return CAN_ERR_TIMEOUT;

*pMsg=m_CANRecvMsg;

return CAN_OK;

在數(shù)據(jù)發(fā)送或接收完畢后,調(diào)用CloseHandle()函數(shù)關(guān)閉串口。上位機(jī)整體界面設(shè)計(jì)如圖8所示。

3 系統(tǒng)實(shí)驗(yàn)

為驗(yàn)證系統(tǒng)通信的可靠性和穩(wěn)定性,實(shí)驗(yàn)中擬將一幀 CAN消息設(shè)置為 ID:01(十六進(jìn)制),消息長(zhǎng)度為 8,采用標(biāo)準(zhǔn)數(shù)據(jù)幀傳輸一個(gè)十六進(jìn)制數(shù)據(jù),下位機(jī)采用數(shù)碼管顯示的方式來(lái)判斷數(shù)據(jù)傳輸?shù)恼_性。當(dāng)下位機(jī)接收到消息后,將會(huì)把此消息重新返回給上位機(jī)。經(jīng)過(guò)幾次反復(fù)實(shí)驗(yàn),系統(tǒng)通信穩(wěn)定、可靠。

4結(jié)束語(yǔ)

由于CAN總線通信可靠、性能穩(wěn)定,具有易開(kāi)發(fā)和低成本等特點(diǎn),近年來(lái)在自動(dòng)控制等很多領(lǐng)域得到了越來(lái)越廣泛的應(yīng)用。在一些復(fù)雜系統(tǒng)中,不可避免地存在多點(diǎn)通信的情況。本文設(shè)計(jì)的基于CAN總線的PC機(jī)與單片機(jī)多點(diǎn)通信系統(tǒng),在所有的CAN轉(zhuǎn)接口中,通過(guò)USB連接到 CAN總線,簡(jiǎn)化了硬件接口,提高了開(kāi)發(fā)效率,具有很好的應(yīng)用前景。

[1]李真花,崔健.CAN總線輕松入門(mén)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2011.

[2]劉維弋,金遠(yuǎn)平.基于 CAN總線的通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(12):207-209.

[3]楊春杰,王曙光,亢紅波.CAN總線技術(shù)[M].北京:北京航空航天大學(xué)出版社,2010.

[4]張念淮.USB總線接口開(kāi)發(fā)指南[M].北京:國(guó)防工業(yè)出版社,2001.

[5]孫兵,何瑾,陳廣廈.基于 DSP的 CAN總線與以太網(wǎng)互聯(lián)系統(tǒng)研制[J].儀器儀表學(xué)報(bào),2008,29(2):377-380.

[6]王平,江華麗,何花.基于單片機(jī)的 CAN總線通訊應(yīng)用設(shè)計(jì)[J].電子測(cè)量技術(shù),2009,32(9):131-135.

[7]郭天祥.新概念 51單片機(jī) C語(yǔ)言教程[M].北京:電子工業(yè)出版社,2009.

Multipoint communication between PC and MCU based on CAN bus

Liu Deng,Li Guoli,Chen Jian,Zhang Kaiyu,Shi Guang
(College of Mechanical and Electrical Engineering,Jinling Institute of Technology,Nanjing 211169,China)

A kind of multipoint communication system between PC and MCU based on CAN bus is designed.The system consists of PC,STC89S52 MCU,the CAN port controller,serial transceiver,etc.The communication nodes design scheme of USB to CAN communication interface is introduced,and the hardware circuit and software of communication node are designed.The experiments of system communication are performed in the last.The results show that the system has the characteristics of high reliability,strong anti-interference ability etc.

CAN bus;MCU;multipoint communication

TP393

A

1674-7720(2015)15-0067-04

劉登,李國(guó)利,陳健,等.基于CAN總線的PC機(jī)與單片機(jī)的多點(diǎn)通信[J].微型機(jī)與應(yīng)用,2015,34(15):67-70.

2015-04-11)

劉登(1993-),男,本科在讀,主要研究方向:自動(dòng)化控制技術(shù)。

2014江蘇省高等學(xué)校大學(xué)生實(shí)踐創(chuàng)新訓(xùn)練計(jì)劃重點(diǎn)項(xiàng)目(201413573007Z)

李國(guó)利(1973-),通信作者,男,碩士,副教授,主要研究方向:自動(dòng)化檢測(cè)與控制技術(shù)。E-mail:1260342839@qq.com。

猜你喜歡
單片機(jī)系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于PowerPC+FPGA顯示系統(tǒng)
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
電子制作(2019年9期)2019-05-30 09:42:02
半沸制皂系統(tǒng)(下)
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
主站蜘蛛池模板: 国产欧美日韩91| 人人爽人人爽人人片| 久久精品国产亚洲AV忘忧草18| 青草91视频免费观看| 亚洲Aⅴ无码专区在线观看q| 国产成人综合亚洲网址| 色欲综合久久中文字幕网| 国产91在线免费视频| 无码区日韩专区免费系列| 国产精品免费电影| 欧美黄网站免费观看| 五月婷婷亚洲综合| 国产97公开成人免费视频| 无码一区二区波多野结衣播放搜索 | 美女无遮挡免费网站| 国产精品无码翘臀在线看纯欲| 日韩精品一区二区三区swag| 国产精品片在线观看手机版| 91成人免费观看| 在线观看精品自拍视频| 免费精品一区二区h| 中文字幕在线一区二区在线| 午夜激情婷婷| 国产精品无码一二三视频| 欧洲免费精品视频在线| 丁香五月婷婷激情基地| 亚洲日韩国产精品综合在线观看| 欧美精品v日韩精品v国产精品| 99久久精品国产综合婷婷| 亚洲一区二区日韩欧美gif| 久久黄色视频影| 久久久91人妻无码精品蜜桃HD| 精品视频91| 亚洲日韩在线满18点击进入| 一本一本大道香蕉久在线播放| 国产精品国产主播在线观看| 婷婷久久综合九色综合88| 呦女亚洲一区精品| 无码乱人伦一区二区亚洲一| 激情无码字幕综合| 国产在线观看高清不卡| 福利一区在线| 在线看国产精品| 伊人久久久大香线蕉综合直播| 国产精品乱偷免费视频| 亚洲精品黄| 亚洲一区二区三区麻豆| 亚洲天堂网2014| 69视频国产| 波多野衣结在线精品二区| 欧美区一区二区三| 在线免费亚洲无码视频| 97国产成人无码精品久久久| 欧美视频二区| 国产经典免费播放视频| 亚欧乱色视频网站大全| 亚洲精品动漫| 色老头综合网| 精品中文字幕一区在线| 日本人又色又爽的视频| 成人韩免费网站| 亚洲开心婷婷中文字幕| 日韩一区二区三免费高清| 久久亚洲精少妇毛片午夜无码| 精品国产香蕉伊思人在线| 欧美不卡视频在线观看| vvvv98国产成人综合青青| 视频二区国产精品职场同事| 97视频免费看| 东京热高清无码精品| 久久久波多野结衣av一区二区| 亚洲第一极品精品无码| 国产自无码视频在线观看| 动漫精品中文字幕无码| 国产微拍一区二区三区四区| 精品国产乱码久久久久久一区二区| 99久久亚洲精品影院| 国产粉嫩粉嫩的18在线播放91| 天堂网亚洲系列亚洲系列| 久久国产热| 国产正在播放| 综合成人国产|