freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

can-rs485協(xié)議轉(zhuǎn)換網(wǎng)關(guān)的設(shè)計(jì)-資料下載頁(yè)

2025-05-23 18:20本頁(yè)面
  

【正文】 TAL2:振蕩器反相放大器的輸出端。 RS485 收發(fā)器 MAX485 簡(jiǎn)介MAX485 接口芯片是 Maxim 公司的一種 RS485 芯片。采用單一電源+5 V 工作,額定電流為 300 μA,采用半雙工通訊方式。它完成將 TTL 電平轉(zhuǎn)換為 RS-485 電平的功能。MAX485 芯片的結(jié)構(gòu)和引腳都非常簡(jiǎn)單, 內(nèi)部含有一個(gè)驅(qū)動(dòng)器和接收器。RO和 DI 端分別為接收器的輸出和驅(qū)動(dòng)器的輸入端,與單片機(jī)連接時(shí)只需分別與單片機(jī)的RXD 和 TXD 相連即可;/RE 和 DE 端分別為接收和發(fā)送的使能端,當(dāng)/RE 為邏輯 0 時(shí),器件處于接收狀態(tài);當(dāng) DE 為邏輯 1 時(shí),器件處于發(fā)送狀態(tài)。A 端和 B 端分別為接收和發(fā)送的差分信號(hào)端,當(dāng) A 引腳的電平高于 B 時(shí),代表發(fā)送的數(shù)據(jù)為 1;當(dāng) A 的電平低于 B 端時(shí),代表發(fā)送的數(shù)據(jù)為 0。在與單片機(jī)連接時(shí)接線(xiàn)非常簡(jiǎn)單,只需要一個(gè)信號(hào)控制 MAX485 的接收和發(fā)送即可。同時(shí)將 A 和 B 端之間加匹配電阻,一般可選 120Ω的電阻。上面介紹了設(shè)計(jì)用的主要器件,除了它們這次設(shè)計(jì)還用到了 74LS32(邏輯或門(mén)) ,A1031,74LS244,DS1232(復(fù)位芯片) ,以及一些電容電阻,撥碼開(kāi)關(guān),這里就不詳細(xì)介紹了。 CANRS485 協(xié)議轉(zhuǎn)換網(wǎng)關(guān)設(shè)計(jì) 基本原理CAN 總線(xiàn)標(biāo)準(zhǔn)具有物理層和數(shù)據(jù)鏈路層協(xié)議,以幀為單位進(jìn)行數(shù)據(jù)通信,且每幀均攜帶相應(yīng)的 ID 標(biāo)識(shí)符,而 RS485 本質(zhì)上僅僅是一個(gè)物理層標(biāo)準(zhǔn),以字節(jié)為單位進(jìn)行數(shù)據(jù)通信,不帶任何其他附屬信息,其幀格式完全由用戶(hù)自己定義。由于不管是在CAN 總線(xiàn)還是在 RS485 總線(xiàn)中最終信息的傳輸都是以幀為單位,所以在考慮設(shè)計(jì)RS485 幀格式時(shí),應(yīng)該參考 CAN 總線(xiàn)的幀格式,包括地址(ID) 、幀長(zhǎng)度、數(shù)據(jù)和校驗(yàn)等。如果兩者的幀格式類(lèi)似,將為協(xié)議的轉(zhuǎn)換帶來(lái)很多方便。具體設(shè)計(jì) RS485 幀格式時(shí)可以下格式 [1]:地址(1) CAN 幀格式(1)CAN 網(wǎng)ID(4)數(shù)據(jù)幀(0——8)校驗(yàn)(1)沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文21第一個(gè)字段為地址字段,占用一個(gè)字節(jié),可作為 RS485 子網(wǎng)的多機(jī)通信地址使用。在 RS485 網(wǎng)絡(luò)中,只能采用一主多從的方式進(jìn)行通信,網(wǎng)絡(luò)中必須有一個(gè)主控節(jié)點(diǎn)。在此 RS485 子網(wǎng)中網(wǎng)關(guān)為主控節(jié)點(diǎn),通過(guò)查詢(xún)點(diǎn)名的方式實(shí)現(xiàn)網(wǎng)絡(luò)通信管理。第二到第四個(gè)字段與 CAN 報(bào)文中的同名字段定義相同,實(shí)際上這三個(gè)字段就是一幀完整的CAN 報(bào)文。網(wǎng)關(guān)在進(jìn)行轉(zhuǎn)發(fā)時(shí)只需將這三個(gè)字段構(gòu)成的 CAN 報(bào)文發(fā)送出去即可,使網(wǎng)關(guān)中的協(xié)議轉(zhuǎn)換更容易實(shí)現(xiàn)。 硬件設(shè)計(jì)整個(gè)通信接口電路主要由單片機(jī) AT89S51,CAN 控制器 SJA1000,CAN 收發(fā)器82C250,RS485 收發(fā)器 MAX485 組成,如圖 所示。 AT89S51 負(fù)責(zé) SJA1000 和RS485 的初始化,通過(guò)控制 SJA1000 和串行接口實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。SJA1000 的 AD0——AD7 連接到 89S51 的 P0 口,/CS 連接到 89S51 的 ,為 0 時(shí) CPU 片外存儲(chǔ)器地址可選中 SJA1000,CPU 通過(guò)這些地址可對(duì) SJA1000 執(zhí)行相應(yīng)的讀/寫(xiě)操作。SJA1000 的/RD 、/WR 、ALE 分別與 89S51 的對(duì)應(yīng)引腳相連,/INT 接89C51 的/INT0,89S51 通過(guò)中斷方式訪(fǎng)問(wèn) SJA1000。從軟件的角度來(lái)看,用戶(hù)對(duì)SJA1000 的操作是通過(guò)單片機(jī)的訪(fǎng)問(wèn)外部存儲(chǔ)器指令來(lái)完成的,所以 SJA1000 可以被視為擴(kuò)展 RAM。在串口 RS485 方,選用 MAX485 收發(fā)芯片, 口接 MAX485 的/RE 和 DE 腳,RO 和 DI 分別接 89S51 的 RXD 和 TXD。復(fù)位電路選用 DS1232,它可以輸出高低兩種電平分別給 CPU 和 CAN 控制器復(fù)位。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文22圖 CAN—RS485 網(wǎng)關(guān)的硬件電路圖 軟件設(shè)計(jì)CANRS485 網(wǎng)關(guān)的主要任務(wù)是在 CAN 網(wǎng)段和 RS485 網(wǎng)段之間實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā), CPU 采用中斷方式接收 CAN 方和 RS485 方的數(shù)據(jù), CANRS485 網(wǎng)關(guān)軟件主要包括以下一些子程序:初始化子程序,主監(jiān)控程序,接收子程序和發(fā)送子程序。初始化子程序包括 SJA1000 的初始化和 RS485 的初始化,總線(xiàn)數(shù)據(jù)的接收均采用中斷方式,發(fā)送數(shù)據(jù)則在主監(jiān)控程序中完成。下面給出程序流程圖,具體程序見(jiàn)附錄。 SJA1000 初始化為了保證 CAN 節(jié)點(diǎn)正常工作,必須首先對(duì) CAN 控制器 SJA1000 進(jìn)行初始化,SJA1000 的初始化只有在復(fù)位模式下才可以進(jìn)行,初始化主要包括工作方式的設(shè)置、接收濾波方式的設(shè)置、接收屏蔽寄存器(AMR)和接收代碼寄存器(ACR)的設(shè)置、波特率參數(shù)設(shè)置和中斷允許寄存器(IER)的設(shè)置等??刂破鞒跏蓟鞒倘鐖D 所示。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文23圖 控制器初始化 主監(jiān)控程序主監(jiān)控程序負(fù)責(zé)對(duì) CAN 方和 RS485 方的接收緩沖區(qū)中 FIFO 進(jìn)行監(jiān)視,來(lái)判斷接收緩沖區(qū)中是否有報(bào)文,從而決定是否發(fā)送以及發(fā)送給誰(shuí)。FIFO 共有兩個(gè)指針:接收數(shù)據(jù)指針和發(fā)送數(shù)據(jù)指針。當(dāng)兩指針不相等時(shí)即證明 FIFO 中存有有效數(shù)據(jù)。FIFO 接收數(shù)據(jù)指針的調(diào)整是通過(guò)接收中斷子程序?qū)崿F(xiàn)的,而發(fā)送數(shù)據(jù)指針的調(diào)整則通過(guò)發(fā)送子程序?qū)崿F(xiàn)。在轉(zhuǎn)發(fā)報(bào)文后,要對(duì)相應(yīng)的 FIFO 緩沖區(qū)進(jìn)行參數(shù)調(diào)整。圖 為網(wǎng)關(guān)主沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文24監(jiān)控程序流程圖圖 主監(jiān)控程序流程圖 CAN 子網(wǎng)接收中斷子程序。在本網(wǎng)關(guān)中,RS485 子網(wǎng)采用的是多機(jī)通信方式,所以響應(yīng)中斷后從89C51的SBUF寄存器讀入的第一個(gè)字節(jié)為地址。在接收數(shù)據(jù)前應(yīng)先清除多機(jī)通信位SM2,并計(jì)算接收?qǐng)?bào)文長(zhǎng)度,與緩沖區(qū)剩余空間比較。若會(huì)溢出,則不予接收。在中斷返回前應(yīng)置位SM2,以便能正確響應(yīng)下一幀報(bào)文的中斷。向 RS485 子網(wǎng)轉(zhuǎn)發(fā)報(bào)文,并調(diào)整緩沖區(qū)參數(shù)向 CAN 子網(wǎng)轉(zhuǎn)發(fā)報(bào)文,并調(diào)整緩沖區(qū)參數(shù)進(jìn)入下一個(gè)循環(huán)NYNY開(kāi)始接收 CAN 子網(wǎng)緩沖區(qū)有報(bào)文?接收 RS485 子網(wǎng)緩沖區(qū)有報(bào)文?資源分配,CAN 節(jié)點(diǎn)初始化,RS485 初始化Y沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文25中斷入口關(guān)中斷,保護(hù)現(xiàn)場(chǎng)讀入 SBUF 寄存器內(nèi)容比較報(bào)文地址,判斷是否轉(zhuǎn)發(fā)?清多機(jī)通信位 SM2=0,計(jì)算接收數(shù)據(jù)長(zhǎng)度,與緩沖區(qū)剩余空間比較緩沖區(qū)會(huì)溢出?查詢(xún)接收?qǐng)?bào)文數(shù)據(jù),并存入緩沖區(qū)緩沖區(qū)參數(shù)調(diào)整置多機(jī)通信位 SM2=1恢復(fù)現(xiàn)場(chǎng),開(kāi)中斷返回NYYN圖 接收 RS485 子網(wǎng)報(bào)文 CAN 子網(wǎng)接收中斷子程序圖 為網(wǎng)關(guān)接收 CAN 子網(wǎng)報(bào)文中斷處理程序流程圖。在進(jìn)入中斷后,首先應(yīng)判斷中斷類(lèi)型。若為錯(cuò)誤警告中斷則進(jìn)行相應(yīng)處理,若為接收中斷則接收?qǐng)?bào)文。在報(bào)文接收前,要根據(jù)接收?qǐng)?bào)文的長(zhǎng)度判斷接收緩沖區(qū)是否會(huì)溢出。若會(huì)溢出,則判斷是否狀態(tài)查詢(xún)命令,是則置位請(qǐng)求狀態(tài)標(biāo)志,不進(jìn)行緩沖區(qū)參數(shù)調(diào)整。若不是狀態(tài)查詢(xún)命令則不作處理,只進(jìn)行緩沖區(qū)參數(shù)調(diào)整,接收?qǐng)?bào)文有效。隨后是釋放 CAN 接收緩沖區(qū),沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文26恢復(fù)現(xiàn)場(chǎng)和中斷返回等工作。中斷入口關(guān)中斷,保護(hù)現(xiàn)場(chǎng)讀入 CAN 中斷寄存器內(nèi)容錯(cuò)誤警告中斷?讀入 CAN 狀態(tài)寄存器內(nèi)容總線(xiàn)關(guān)閉?接收中斷?計(jì)算接收數(shù)據(jù)長(zhǎng)度,與緩沖區(qū)剩余空間比較緩沖區(qū)會(huì)溢出?CAN 復(fù)位 接收 CAN 子網(wǎng)報(bào)文并存入緩沖區(qū)緩沖區(qū)參數(shù)調(diào)整釋放 CAN 接收緩沖區(qū)恢復(fù)現(xiàn)場(chǎng),開(kāi)中斷返回N NYY NYNY圖 接收 CAN 子網(wǎng)報(bào)文 發(fā)送子程序設(shè)計(jì)發(fā)送子程序負(fù)責(zé) FIFO 中數(shù)據(jù)的發(fā)送,網(wǎng)關(guān)軟件中共有兩個(gè)發(fā)送子程序,分別為CAN 方發(fā)送子程序和 RS485 方發(fā)送子程序。 發(fā)送子程序的調(diào)用是在主監(jiān)控程序中進(jìn)行的,當(dāng)主監(jiān)控程序發(fā)現(xiàn)某一方控制器對(duì)應(yīng)的 FIFO 非空時(shí),就會(huì)調(diào)用發(fā)送子程序向另一方發(fā)送數(shù)據(jù)。在發(fā)送子程序中除了將 FIFO 中數(shù)據(jù)向另一方發(fā)送以外,同樣也要進(jìn)行沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文27相應(yīng)的 FIFO 參數(shù)的調(diào)整,包括 FIFO 發(fā)送數(shù)據(jù)指針和 FIFO 中存儲(chǔ)數(shù)據(jù)的有效字節(jié)長(zhǎng)度。CAN 方發(fā)送子程序流程圖如圖 ,RS485 的類(lèi)似就不做介紹了是否在接受調(diào)用上次發(fā)送是否完成是否鎖定調(diào)整參數(shù)發(fā)送數(shù)據(jù)返回YNY CAN方發(fā)送子程序4 試驗(yàn)調(diào)試在完成了硬件電路的設(shè)計(jì)和軟件的設(shè)計(jì)后,需要對(duì)硬件進(jìn)行調(diào)試。首先需要把程序下載到單片機(jī)中,把程序下載到單片機(jī)中,需要先將程序編譯,然后通過(guò)軟件生成沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文28hex 的文件,我這里采用 Keil uVision2 進(jìn)行編譯和生成 hex 文件,如下圖圖 所示:圖 編譯窗口將產(chǎn)生的 hex 文件燒寫(xiě)進(jìn)單片機(jī)中,可以用編程器進(jìn)行下載,考慮到編程器比較貴,這里采用低價(jià)的 ISP 下載器,將相應(yīng)的管腳接在單片機(jī)的 , 口,復(fù)位口,電源和地線(xiàn)即可,再使用軟件將生成的 hex 文件下載進(jìn)去就可以了。由于實(shí)驗(yàn)條件有限,只對(duì) CPU 與 RS485 之間的通信進(jìn)行了調(diào)試。模擬了兩個(gè)通信通道,分別用 和 進(jìn)行控制小燈。上電初始化之后,默認(rèn)的是通道 1 進(jìn)行通信,它讀入撥碼開(kāi)關(guān)的值,再發(fā)送給 RS485。這里采用的是串口調(diào)試助手 進(jìn)行調(diào)試的,PC 發(fā)送一個(gè)指令“G” (程序設(shè)定)給單片機(jī),若單片機(jī)收到指令則把讀入的撥碼開(kāi)關(guān)值發(fā)送給 PC 機(jī)。在串口調(diào)試助手中需要注意對(duì)波特率進(jìn)行設(shè)置,這里采用的是 4800波特。實(shí)際的操作界面如圖 所示沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文29圖 串口調(diào)試界面調(diào)試 RS485 與單片機(jī)之間通信的程序如下:KEY1 EQU ;按鍵的定義KEY2 EQU FLAG_KEY1 BIT 00H ;按鍵的標(biāo)志FLAG_KEY1_DN BIT 01HFLAG_KEY2 BIT 02HFLAG_KEY2_DN BIT 03HSENDATA EQU 40H ;發(fā)送數(shù)據(jù)RECEIVEATA EQU 41H ;接受數(shù)據(jù) ORG 0000H AJMP MAIN ORG 0100HMAIN:沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文30 MOV R5,20 ACALL DELAY MOV P0,0FFH MOV P1,0FFH MOV P2,0FFH MOV SENDATA,00 ACALL INIT_UART ;初始化串口 CLR SETB CLR CLR SETB SETB SETB FLAG_KEY1 ;初始化按鍵MAIN_LOOP: ACALL GETKEY ;采集按鍵 JNB FLAG_KEY1,N0 ;如果按鍵 1 動(dòng)作,輸出 1 和撥碼開(kāi)關(guān)的值 CLR FLAG_KEY1 MOV SENDATA,1 SETB CLR N0: JNB FLAG_KEY2,N1 ;如果按鍵 2 動(dòng)作,輸出 2 和撥碼開(kāi)關(guān)的值 CLR FLAG_KEY2 MOV SENDATA,2 SETB CLR N1:JNB RI,OVER ;如果有數(shù)據(jù)傳入,則判斷其值是否為GCLR RI沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文31SETB MOV RECEIVEATA,SBUFMOV A,RECEIVEATACJNE A,71,OVER ;如果傳入的值是G則發(fā)送數(shù)據(jù),不是則不發(fā)送MOV SBUF,SENDATA ;發(fā)送按鍵值 MOV R5,10ACALL DELAYMOV SBUF,P0 ;發(fā)送撥碼開(kāi)關(guān)值MOV R5,10ACALL DELAYOVER: CLR SJMP MAIN_LOOPINIT_UART: MOV TMOD,20H MOV TH1,0FAH MOV TL1,0FAH ;波特率 4800 MOV SCON,50H ;設(shè)定串行口工作方式 ANL PCON,00H ;波特率不倍增 SETB TR1 ; 啟動(dòng)定時(shí)器 1 RETGETKEY: SETB KEY1 SETB KEY2 JB KEY1,GETKEY_N1 SETB FLAG_KEY1_DNGETKEY_N1: JB KEY2,GETKEY_N2 SETB FLAG
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1