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

正文內(nèi)容

基于fpga的rs485通信接口設(shè)計畢業(yè)論文(參考版)

2025-06-21 14:12本頁面
  

【正文】 參考文獻[1] [2][3] Draft LPC32x0 User manual. Rev. 00. 27 — 20 November 2008[4] LPC3220/30/40/50 Product data sheet. Rev. 01. 01 1 April 2009.[5] [6]王常力,(DCS)[7]劉皖,何道君,[8]趙艷華,曹丙霞,Ⅱ的FPGA/[9]倪旭翔, [10]馬建國,[11]MAX3088 User 。 FPGA中斷方式WinCE測試程序3、實驗結(jié)論通過本次實驗,可以得知能夠基本完成課題的要求,完成了基于FPGA的RS485通信模塊之間的數(shù)據(jù)接收與發(fā)送的要求,以及RS485的傳輸距離的測試。 RS485傳輸距離測試通過對RS485傳輸距離的測試,可以得知RS485在100m的距離上能夠?qū)崿F(xiàn)10Mb/s的數(shù)據(jù)傳輸,總的來說RS485作為一種串行通信的接口,它的傳輸距離還是比較的長的,滿足DCS控制站與現(xiàn)場I/O模塊之間的通信需求。在FPGA發(fā)送數(shù)據(jù)過程中,能夠正常的FIFO清零,然后能夠正確的發(fā)送準確的數(shù)據(jù)。 break。ReadLenmReadRegReadLen。 pRDBuff = mReadRegpBuff。 } break 。WriteLen mregBufferLengh。 } pBuff = mreg pBuff。 if(mregRegAdr 0 || mregRegAdr 15) { RETAILMSG(1,(L[FPGA0] wrong reg number,0~15 please!\n\r))。分別為讀取FPGA寄存器和寫入FPGA寄存器功能。用戶模式下的DeviceIO Control函數(shù)可以發(fā)送特定的IO_Control Code給一個特定的設(shè)備驅(qū)動程序,使相應的設(shè)備執(zhí)行該動作。其中,APR寄存器表示中斷極選擇:0表示通過低電平或者下降沿產(chǎn)生,1表示通過高電平或者上升沿產(chǎn)生;ATR寄存器表示中斷激活類型選擇:0表示電平敏感,1表示邊沿敏感;將兩者都設(shè)置為1,則表示GPI_2中斷是由上升沿產(chǎn)生。 /* Activation Type select Register */ volatile UNS_32 itr。 /* Status Register */ volatile UNS_32 apr。 /* Enable Register */ volatile UNS_32 rsr。 //上升沿或者高電平觸發(fā) pINTCRegsapr |= GPIO_IRQ_MASK。 /* GPI_02的物理中斷號及邏輯中斷號*/下圖是Sub2中斷控制寄存器的實際定義,可以看到,GPI_2的中斷源是在該寄存器第24位,因此為了便于使用軟件編程,設(shè)置GPI_2的掩碼為左移24位,即可以定義該中斷。}這樣的方式也需要應用程序創(chuàng)建同樣的事件對象,應用程序也可以用一個線程來等待這個事件被觸發(fā)時就讀取數(shù)據(jù)。 InterruptDone(g_nFpgaSysIntr)。 SetEvent(g_hRxEvent)。 /*中斷線程開始運行*/ while (!g_bKillIST) { dwRet = WaitForSingleObject(g_hInterrupt, INFINITE)。 return 0。最后在驅(qū)動的IST中,當硬件中斷產(chǎn)生時,就通過SetEvent的方式來通知應用程序:static DWORD WINAPI FPGA_IntrThread(LPVOID pContext){ DWORD dwRet。 } g_hInterrupt = CreateEvent(NULL, FALSE, FALSE, NULL)。 //goto exit。dwThreadID)。 goto exit。g_nFpgaIrq, sizeof(UINT32), amp。 if(pINTCRegs == NULL) { RETAILMSG(1, (TEXT(FPGA0 INT Reg map failure.\r\n)))。 Slave2(Sub2)中斷控制寄存器基地址本FPGA中斷采用Slave interrupt controller 2,因此,定義其基地址為:define SIC2_BASE 0x40010000 /* Slave2 int ctrl registers base*/物理地址與虛擬地址映射: = SIC2_BASE。LPC3250所有的外部引腳中斷通過同步電路連接到兩個子中斷控制器SIC1和SIC2,它們的四個輸出被連接到主中斷控制器(MIC)的四個輸入端,建議配置這些輸入為低電平有效。具體實現(xiàn)過程是:1 創(chuàng)建一個事件2 得到系統(tǒng)的中斷號3 創(chuàng)建一個掛起的中斷服務(wù)線程(IST)4 設(shè)置中斷服務(wù)線程的優(yōu)先級別5 調(diào)用函數(shù)InterruptInitialize通知系統(tǒng)注冊中斷6 回復中斷服務(wù)線程IST,IST開始服務(wù)因此,WinCE6的中斷發(fā)生和處理過程總結(jié)如下:n 硬件設(shè)備產(chǎn)生中斷信號n 中斷信號被異常處理程序(ExceptionHandle)捕獲n 異常處理程序激活掛載中斷服務(wù)例程ISRn ISR響應硬件,并操作硬件設(shè)備n ISR將中斷映射n ISR設(shè)置相應的核心中斷標示n 中斷服務(wù)調(diào)度程序與OAL例程合作,設(shè)置中斷事件,操縱在特定中斷事件上的等待隊列n OAL操作硬件,改變硬件的中斷狀態(tài),將其設(shè)置為開中斷n 中斷事件激活系統(tǒng)調(diào)度程序, 在相隔一段時間以后調(diào)度中斷服務(wù)線程n IST處理中斷的相關(guān)事件,并調(diào)用系統(tǒng)的支持庫n 系統(tǒng)支持庫訪問硬件設(shè)備,完成對硬件設(shè)備的操作LPC3250支持74個中斷源,每個中斷都有中斷使能位,并可被配置為不同優(yōu)先級,以及電平或者邊沿觸發(fā)方式,可根據(jù)條件對原始中斷狀態(tài)以及掩碼中斷寄存器訪問。系統(tǒng)調(diào)度器會調(diào)度這個線程來進行中斷的處理。IST是運行在用戶空間的中斷服務(wù)線程,負責接到系統(tǒng)邏輯中斷號之后的處理,使用中首先要注冊自己,再與一個系統(tǒng)事件關(guān)聯(lián)。靜態(tài)ISR只能靜態(tài)被編譯到核心,在運行時不能改變,和IST通信是單向的,ISRIST,支持中斷嵌套,可以使用核心的堆棧。ISR的主要作用:1 如果數(shù)據(jù)可能丟失或者被下一個中斷改寫,則ISR將數(shù)據(jù)從設(shè)備讀到緩沖區(qū)2 ISR清除設(shè)備上的中斷條件3 ISR向內(nèi)核返回一個SYSINTR4 內(nèi)核設(shè)置供IST等待的中斷事件5 調(diào)度程序調(diào)度等待的IST以執(zhí)行后續(xù)的中斷服務(wù)操作。ISR主要負責中斷響應,一般要求短小精干,對執(zhí)行效率有很高的要求,只負責最簡單的工程,即響應設(shè)備并返回一個中斷標示給核心。過程是:1)硬件設(shè)備產(chǎn)生硬件中斷2)OAL完成硬件中斷到邏輯中斷(SYSINTR)的轉(zhuǎn)換(OEMinit函數(shù)實現(xiàn))3)系統(tǒng)識別邏輯中斷,同時進行處理。 return FALSE。 g_lpBaseFPGA = (volatile UINT8 *) MmMapIoSpace(pa, FPGA_ADDR_RANGE, FALSE)。 BOOL bResult = FALSE。物理地址映射:PHYSICAL_ADDRESS pa。而EMC_nCS3片選信號掛了兩個器件:FGPA和CAN,因此根據(jù)原理圖,F(xiàn)PGA的地址應該為A16對應的片選,為0xXXXXXXXX XXXXX010 00000000 00000000=0xE3020000:define FPGA_ADDR_RANGE 16define FPGA_PHYSICAL_ADDR 0xE3020000static volatile UINT8 *g_lpBaseFPGA = NULL。(1)IO驅(qū)動程序設(shè)計定義FPGA端寄存器:define FPGA_DATA_REG1 FPGA_REG(0x00) //數(shù)據(jù)寄存器define FPGA_RCV_COUNT_H_REG1 FPGA_REG(0x01) //接收計數(shù)寄存器高define FPGA_RCV_COUNT_L_REG1 FPGA_REG(0x02) //接收計數(shù)寄存器低define FPGA_CHECK_SUM_REG1 FPGA_REG(0x03) //累加和define FPGA_RESERVED_REG1 FPGA_REG(0x04) //保留define FPGA_BAUND_RATE_H_REG1 FPGA_REG(0x05) //波特率寄器高define FPGA_BAUND_RATE_L_REG1 FPGA_REG(0x06) //波特率寄器低define FPGA_CTRL_REG1 FPGA_REG(0x07) //控制寄存器define FPGA_DATA_REG2 FPGA_REG(0x08) //數(shù)據(jù)寄存器define FPGA_RCV_COUNT_H_REG2 FPGA_REG(0x09) //接收計數(shù)寄存器高define FPGA_RCV_COUNT_L_REG2 FPGA_REG(0x0A) //接收計數(shù)寄存器低define FPGA_CHECK_SUM_REG2 FPGA_REG(0x0B) //累加和define FPGA_RESERVED_REG2 FPGA_REG(0x0C) //保留define FPGA_BAUND_RATE_H_REG2 FPGA_REG(0x0D) //波特率寄器高define FPGA_BAUND_RATE_L_REG2 FPGA_REG(0x0E) //波特率寄器低define FPGA_CTRL_REG2 FPGA_REG(0x0F) //控制寄存器定義物理地址及RAM區(qū)長度。4、LPC3250驅(qū)動程序設(shè)計由于CPU把FPGA當做外部存儲器使用,因此需要對FPGA端的IO進行讀寫,而且讀數(shù)據(jù)的條件需要利用中斷實現(xiàn),所以本驅(qū)動程序分成LPC3250驅(qū)動程序分為IO的驅(qū)動和中斷兩部分。3、FPGA端接收流程FPGA端接收流程如下: RS485接收流程圖CPU讀FIFO流程:首先進入中斷服務(wù),CPU接收到中斷信號,將數(shù)據(jù)從FIFO讀出,之后讀取校驗標志并校驗標志,F(xiàn)PGA發(fā)出信號“接收完成”等于0,再向上層提供數(shù)據(jù)緩沖區(qū)以及校驗等標志位,完成數(shù)據(jù)讀取之后,中斷返回,結(jié)束
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1