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

正文內容

can-rs485協(xié)議轉換網關的設計-資料下載頁

2025-05-23 18:20本頁面
  

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