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

正文內(nèi)容

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

2025-08-20 19:06本頁面

【導(dǎo)讀】隨著科學(xué)技術(shù)的發(fā)展,現(xiàn)場總線技術(shù)在各領(lǐng)域中得到越來越廣泛的應(yīng)用。技術(shù)以其實時、可靠、低成本、使用方便等特點,在控制現(xiàn)場層得到廣泛的應(yīng)用。性能并不比其它現(xiàn)場總線差。在實際應(yīng)用中,大多數(shù)控制器和設(shè)備通信所使用的仍是傳。因此,為了將這些設(shè)備納入現(xiàn)場總線的控制網(wǎng)絡(luò),研究現(xiàn)場總線與RS485. 之間的協(xié)議網(wǎng)關(guān)很有必要。本文主要設(shè)計了CAN總線與RS485之間的網(wǎng)關(guān)。發(fā),并調(diào)試實現(xiàn)了CPU與RS485之間的數(shù)據(jù)交互。

  

【正文】 數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。 在 Flash編程時, P0 口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。 P1 口: P1 是一個帶內(nèi)部上拉電阻的 8 位雙向 I/O 口, P1 的輸出緩沖級可驅(qū)動(吸收或輸出電流) 4 個 TTL邏輯門電路。對端口寫“ 1”,通 過內(nèi)部的上拉電阻把端口拉到高電平,此時可作為輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。 Flash編程和程序校驗期間, P1 接收低 8 位地址。 P2 口: P2 口是一個帶有內(nèi)部上拉電阻的 8 位雙向 I/O 口, P2 的輸出緩沖級可驅(qū)動(吸收或輸出電流) 4 個 TTL邏輯門電路。對端口寫“ 1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸出口,作輸入口使用時 ,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流 。 P3 口: P3 口是一組帶有內(nèi)部上拉電阻的 8 位雙向 I/O 口。 P3 口 輸出緩沖級可驅(qū)動(吸收或輸出電流) 4 個 TTL邏輯門電路。對 P3 口寫入“ 1”時,它們被內(nèi)部上拉電阻拉高并可作為輸出端口。作輸入端時,被外部拉低的 P3 口將用 上拉電阻輸出電流 。 P3 口除了作為一般的 I/O 口線外,更重要的用途是它的第二功能,如下表 所示: 沈陽理工大學(xué)學(xué)士學(xué)位論文 19 表 P3口功能 端口引腳 第二功能 RXD (串行輸入) TXD (串行輸出 ) /INT0 (外部中斷 0) /INT1 (外部中斷 1) T0 (定時 /計數(shù) 0) T1 (定時 /計數(shù) 1) /WR ( 外部數(shù)據(jù)存儲器寫選通 ) /RD ( 外部數(shù)據(jù)存儲器讀選通 ) RST: 復(fù)位輸入。當(dāng)振蕩器工作時, RST 引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。 ALE/~PROG: 當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時, ALE(地址所存允許)輸出脈沖用于所存地址的低 8 位字節(jié)。即使不訪問外部存儲器, ALE 仍以時鐘振蕩頻率的1/6 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個 ALE 脈沖。 /PSEN:程序儲存允許( /PSEN)輸出是外部程序存儲器的選通信號,當(dāng) AT89S51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次 /PSEN 有效,即輸出兩個脈沖。 EA/VPP:外部訪問允許。 XTAL1:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。 XTAL2:振蕩器反相放大器的輸出端。 RS485收發(fā)器 MAX485簡介 MAX485 接口芯片是 Maxim公司的一種 RS485 芯片。采用單一電源 +5 V工作,額定電流為 300 μA,采用半雙工通訊方式。它完成將 TTL電平轉(zhuǎn)換為 RS- 485 電平的功能。 MAX485 芯片的結(jié)構(gòu)和引腳都非常簡單 ,內(nèi)部含有一個驅(qū)動器和接收器。 RO 和 DI端分別為接收器的輸出和驅(qū)動器的輸入端,與單片機連接時只需分別與單片機的 RXD和 TXD 相連即可; /RE 和 DE 端分別為接收和發(fā)送的使能端,當(dāng) /RE 為邏輯 0 時,器件處于接收狀態(tài);當(dāng) DE 為邏輯 1 時,器件處于發(fā)送狀態(tài) 。 A 端和 B 端分別為接收和發(fā)送的差分信號端 ,當(dāng) A 引腳的電平高于 B 時,代表發(fā)送的數(shù)據(jù)為 1;當(dāng) A 的電平低于 B 端時,代表發(fā)送的數(shù)據(jù)為 0。在與單片機連接時接線非常簡單 , 只需要一個信號控制沈陽理工大學(xué)學(xué)士學(xué)位論文 20 MAX485 的接收和發(fā)送即可。同時 將 A 和 B 端之間加匹配電阻,一般可選 120Ω的電阻 。 上面介紹了設(shè)計用的主要器件,除了它們這次設(shè)計還用到了 74LS32(邏輯或門),A1031, 74LS244, DS1232(復(fù)位芯片) ,以及一些電容電阻, 撥碼開關(guān), 這里就不詳細介紹了 。 CANRS485協(xié)議轉(zhuǎn)換網(wǎng)關(guān)設(shè)計 基本原理 CAN 總線標(biāo)準具有物理層和數(shù)據(jù)鏈路層協(xié)議,以幀為單位進行數(shù)據(jù)通信,且每幀均攜帶相應(yīng)的 ID 標(biāo)識符,而 RS485 本質(zhì)上僅僅是一個物理層標(biāo)準,以字節(jié)為單位進行數(shù)據(jù)通信,不帶任何其他附屬信息,其幀格式完全由用戶自己 定義。由于不管是在 CAN總線還是在 RS485 總線中最終信息的傳輸都是以幀為單位,所以在考慮設(shè)計 RS485 幀格式時,應(yīng)該參考 CAN 總線的幀格式,包括地址( ID)、幀長度、數(shù)據(jù)和校驗等。如果兩者的幀格式類似,將為協(xié)議的轉(zhuǎn)換帶來很多方便。具體設(shè)計 RS485 幀格式時可 以下格式 [1]: 地址( 1) CAN 幀格式( 1) CAN 網(wǎng) ID( 4) 數(shù)據(jù)幀( 0——8) 校驗( 1) 第一個字段為地址字段,占用一個字節(jié),可作為 RS485 子網(wǎng)的多機通信地址使用。在 RS485 網(wǎng)絡(luò)中,只能采用一主多從的方式進行通信,網(wǎng)絡(luò)中必須有一個主控 節(jié)點。在此 RS485 子網(wǎng)中網(wǎng)關(guān)為主控節(jié)點,通過查詢點名的方式實現(xiàn)網(wǎng)絡(luò)通信管理。第二到第四個字段與 CAN 報文中的同名字段定義相同,實際上這三個字段就是一幀完整的 CAN 報文。網(wǎng)關(guān)在進行轉(zhuǎn)發(fā)時只需將這三個字段構(gòu)成的 CAN 報文發(fā)送出去即可,使網(wǎng)關(guān)中的協(xié)議轉(zhuǎn)換更容易實現(xiàn)。 硬件設(shè)計 整個通信接口電路主要由單片機 AT89S51, CAN 控制器 SJA1000, CAN 收發(fā)器82C250, RS485 收發(fā)器 MAX485 組成, 如圖 所示。 AT89S51 負責(zé) SJA1000 和 RS485的初始化,通過控制 SJA1000 和串行接口實現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。 SJA1000 的 AD0——AD7 連接到 89S51 的 P0 口, /CS 連接到 89S51 的 , 為 0 時 CPU 片外存儲器地址可選中 SJA1000, CPU 通過這些地址可對 SJA1000 執(zhí)行相沈陽理工大學(xué)學(xué)士學(xué)位論文 21 應(yīng)的讀 /寫操作。 SJA1000 的 /RD、 /WR、 ALE 分別與 89S51 的對應(yīng)引腳相連, /INT 接89C51 的 /INT0, 89S51 通過中斷方式訪問 SJA1000。從軟件的角度來看,用戶對 SJA1000的操作是通過單片機的訪問外部存儲器指令來完成的,所以 SJA1000 可以被視為擴 展RAM。 在串口 RS485 方,選用 MAX485 收發(fā)芯片, 口接 MAX485 的 /RE 和 DE 腳,RO 和 DI分別接 89S51 的 RXD 和 TXD。復(fù)位電路選用 DS1232,它可以輸出高低兩種電平分別給 CPU和 CAN 控制器復(fù)位。 圖 CAN—RS485網(wǎng)關(guān)的硬件電路圖 軟件設(shè)計 CANRS485網(wǎng)關(guān)的主要任務(wù)是在 CAN網(wǎng)段和 RS485網(wǎng)段之間實現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā) , CPU采用中斷方式接收 CAN 方和 RS485 方的數(shù)據(jù), CANRS485 網(wǎng)關(guān)軟件主要包括 以下一些 子程序:初始化子程序,主監(jiān)控程序,接收子程序和發(fā)送子程序。初始化子程序包括 SJA1000 的初始化和 RS485 的初始化,總線數(shù)據(jù)的接收均采用中斷方式,發(fā)送數(shù)據(jù)則在主監(jiān)控程序中完成。 下面給出程序流程圖,具體程序見附錄。 沈陽理工大學(xué)學(xué)士學(xué)位論文 22 SJA1000初始化 為了保證 CAN 節(jié)點正常工作,必須首先對 CAN 控制器 SJA1000 進行初始化,SJA1000 的初始化只有在復(fù)位模式下才可以進行,初始化主要包括工作方式的設(shè)置、接收濾波方式的設(shè)置、接收屏蔽寄存器 (AMR)和接收代碼寄存器 (ACR)的設(shè)置、波特率參數(shù)設(shè)置和中斷允許寄存器 (IER)的設(shè)置等??刂破鞒跏蓟鞒倘鐖D 所示。 圖 控制器初始化 沈陽理工大學(xué)學(xué)士學(xué)位論文 23 主監(jiān)控程序 主監(jiān)控程序負責(zé)對 CAN 方和 RS485 方的接收緩沖區(qū)中 FIFO 進行監(jiān)視,來判斷接收緩沖區(qū)中是否有報文,從而決定是否發(fā)送以及發(fā)送給誰。 FIFO 共有兩個指針:接收數(shù)據(jù)指針和發(fā)送數(shù)據(jù)指針。當(dāng)兩指針不相等時即證明 FIFO 中存有有效數(shù)據(jù)。 FIFO 接收數(shù)據(jù)指針的調(diào)整是通過接收中斷 子程序?qū)崿F(xiàn)的,而發(fā)送數(shù)據(jù)指針的調(diào)整則通過發(fā)送子程序?qū)崿F(xiàn)。在轉(zhuǎn)發(fā)報文后,要對相應(yīng)的 FIFO 緩沖區(qū)進行參數(shù)調(diào)整。圖 為網(wǎng)關(guān)主監(jiān)控程序流程圖 圖 主監(jiān)控程序流程圖 向 RS485 子網(wǎng)轉(zhuǎn)發(fā)報文 ,并調(diào)整緩沖區(qū)參數(shù) 向 CAN 子網(wǎng)轉(zhuǎn)發(fā)報文 ,并調(diào)整緩沖區(qū)參數(shù) 進入下一個循環(huán) N Y N Y 開始 接收 CAN 子網(wǎng)緩沖區(qū)有報文 ? 接收 RS485 子網(wǎng)緩沖區(qū)有報文 ? 資源分配, CAN 節(jié)點初始化, RS485 初始化 Y 沈陽理工大學(xué)學(xué)士學(xué)位論文 24 CAN子網(wǎng)接收中斷子程序 圖 RS485子網(wǎng)報文中斷處理程序流程圖。在本網(wǎng)關(guān)中, RS485子網(wǎng)采用的是多機通信方式,所以響應(yīng)中斷后從 89C51的 SBUF寄存器讀入的第一個字節(jié)為地址。在接收數(shù)據(jù)前應(yīng)先清除多機通信位 SM2,并計算接收報文長度,與緩沖區(qū)剩余空間比較。若會溢出,則不予接收。在 中斷返回前應(yīng)置位 SM2,以便能正確響應(yīng)下一幀報文的中斷。 圖 接收 RS485子網(wǎng)報文 中斷入口 關(guān)中斷 ,保護現(xiàn)場 讀入 SBUF 寄存器內(nèi)容 比較報文地址 , 判斷是否轉(zhuǎn)發(fā) ? 清多 機通信位 SM2=0,計算接收數(shù)據(jù)長度 ,與緩沖區(qū)剩余空間比較 緩沖區(qū)會溢出 ? 查詢接收報文數(shù)據(jù) , 并存入緩沖區(qū) 緩沖區(qū)參數(shù)調(diào)整 置多機通信位 SM2=1 恢復(fù)現(xiàn)場 ,開中斷 返回 N Y Y N 沈陽理工大學(xué)學(xué)士學(xué)位論文 25 CAN子網(wǎng)接收中斷子程序 圖 為網(wǎng)關(guān)接收 CAN 子網(wǎng)報文中斷處理程序流程圖。在進入中斷后,首先應(yīng)判斷中斷類型。若為錯誤警告中斷則進行相應(yīng)處理,若為接收中斷則接收報文。在報文接收前,要根據(jù)接收報文的長度判斷接收緩沖區(qū)是否會溢出。若會溢出,則判斷是否狀態(tài)查詢命令,是則置位請求狀態(tài)標(biāo)志,不進行緩沖區(qū)參數(shù)調(diào)整。若不是狀態(tài) 查詢命令則不作處理,只進行緩沖區(qū)參數(shù)調(diào)整,接收報文有效。隨后是釋放 CAN 接收緩沖區(qū),恢復(fù)現(xiàn)場和中斷返回等工作。 圖 接收 CAN子網(wǎng)報文 中斷入口 關(guān)中斷 ,保護現(xiàn)場 讀入 CAN 中斷寄存器內(nèi)容 錯誤警告中斷 ? 讀入 CAN 狀態(tài)寄存器內(nèi)容 總線關(guān)閉 ? 接收中斷 ? 計算接收數(shù)據(jù)長度 ,與緩沖區(qū)剩余空間比較 緩沖區(qū)會溢出 ? CAN 復(fù)位 接收 CAN 子網(wǎng)報文并存入緩沖區(qū) 緩沖區(qū)參數(shù)調(diào)整 釋放 CAN 接收緩沖區(qū) 恢復(fù)現(xiàn)場 ,開中斷 返回 N N Y Y N Y N Y 沈陽理工大學(xué)學(xué)士學(xué)位論文 26 發(fā)送子程序設(shè)計 發(fā)送子程序負責(zé) FIFO中數(shù)據(jù)的發(fā)送,網(wǎng)關(guān)軟件中共有兩個發(fā)送子程序,分別為 CAN方發(fā)送子程序和 RS485 方發(fā)送子程序。 發(fā)送子程序的調(diào)用是在主監(jiān)控程序中進行的,當(dāng)主監(jiān)控程序發(fā)現(xiàn)某一方控制器對應(yīng)的 FIFO 非空時,就會調(diào)用發(fā)送子程序向另一方發(fā)送數(shù)據(jù)。在發(fā)送子 程序中除了將 FIFO 中數(shù)據(jù)向另一方發(fā)送以外,同樣也要進行相應(yīng)的FIFO 參數(shù)的調(diào)整,包括 FIFO 發(fā)送數(shù)據(jù)指針和 FIFO 中存儲數(shù)據(jù)的有效字節(jié)長度。 CAN方發(fā)送子程序流程圖如圖 , RS485 的類似就不做介紹了 圖 CAN方發(fā)送子程序 是否在接受 調(diào)用 上次發(fā)送是否完成 是否鎖定 調(diào)整參數(shù) 發(fā)送數(shù)據(jù) 返回 Y N Y 沈陽理工大學(xué)學(xué)士學(xué)位論文 27 4 試 驗 調(diào)試 在完成了硬件電路的設(shè)計和軟件的設(shè)計后,需要對硬件進行調(diào)試。首先需要把程序下載到單片機中,把程序下載到單片機中,需要先將程序編譯,然后通過軟件生成 hex的文 件,我這里采用 Keil uVision2 進行編譯和生成 hex文件,如下圖圖 所示: 圖 編譯窗口 將產(chǎn)生的 hex文件燒寫進單片機中,可以用編程器進行下載,考慮到編程器比較貴,這里采用低價的 ISP 下載器,將相應(yīng)的管腳接在單片機的 , 口,復(fù)位口,電源和地線即可,再使用軟件將生成的 hex文件下載進去就可以了。 由于實驗條件有限,只對 C
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1