新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機在手持式RFID讀寫器中的網絡接口設計

        單片機在手持式RFID讀寫器中的網絡接口設計

        作者: 時間:2014-01-16 來源:網絡 收藏

          FRAME 為幀周期信號,由當前主設備驅動,表示一次訪問的開始和持續時間。IRDY 為主設備準備好信號。

          TRDY 為從設備準備好信號。C /BE 為總線命令和字節使能復用信號。地址期是總線命令,數據期是字節使能。IDSEL 為初始化設備選擇信號。在參數配置讀寫傳輸期間,用作片選。對于只有一個PCI 設備的情況,它可以總接高電平。RST 為復位信號。CLK 為系統時鐘信號,頻率范圍DC ~ 33 MHz.以上信號都在CLK 的上升沿有效。INTA 為中斷請求信號,RTL8139數據準備好后可以用來向主控制器發出中斷。

          DEVSEL 為設備選擇信號,表明驅動它的設備已成當前訪問的設備,由于系統中,RTL8139 是單一的PCI 設備,因此該信號可以不用。

          2 軟件結構

          RFID 讀寫器系統軟件主要包括硬件設備驅動程序、TCP /IP 協議棧、應用協議和其他用戶應用程序。軟件的流程如圖3 所示。網絡接口軟件流程圖

        圖3 網絡接口軟件流程圖。

          其中應用協議和其他用戶應用程序將在二次開發時根據RFID 讀寫器的具體功能要求進行設計,這里主要介紹硬件設備驅動程序、TCP /IP 協議棧的實現方法。

          2. 1 硬件設備驅動程序

          硬件設備驅動是將PCI 接口當作的外部存儲器看待,以讀寫外部存儲器的時序對PCI 接口進行讀寫,再由PCI 接口將這種讀寫操作時序轉換成PCI 時序對以太網控制器進行操作。主要包括3 個部分,網絡初始化,發送控制和接收控制。主要完成對CR,TCR,RCR IMR ISR,RBSTART,MAR 等寄存器操作。

          發送控制過程在網絡中,幀傳輸的過程是發送方將待發送的數據按幀格式要求封裝成幀,然后同過網卡發送到網絡的傳輸線上。發送程序框圖如圖4所示。

        RTL8139數據發送流程圖

        圖4 RTL8139 數據發送流程圖。

          接收控制過程分成2 步,第1 步是根據哈稀算法判斷數據包是否是本地的數據包,如果是則接收放入FIFO,如果FIFO 里的數據包達到了RCR 寄存器預先設定閾值,把數據報放入RX_BUFF.第2 步主機程序將RX_BUFF 里的數據讀取到內存進行處理。

          2. 2 TCP /IP 協議棧

          如圖5 所示,以太網控制器提供了邏輯鏈路層協議,TCP /IP 協議棧則通過底層的硬件設備驅動程序來接收和發送數據,對接收到的以太幀數據進行協議的分析,并給其上層應用提供一些簡單、易用的函數。

        RTL8139數據接收流程圖

        圖5 RTL8139 數據接收流程圖。

        -
        -
          TCP /IP 實質上是一系列協議的總稱,是實現Internet通訊必不可少的部分,包括十幾個協議標準,在這里要實現的是通過網絡讀取居民用表的讀數,傳輸的數據量少且對實時性要求不高,不需要全部的協議,只要實現幾個必備的即可,權衡之下,求在最小代碼、最小資源需求和功能實現間取得一個平衡: 只實現了ICMP、TCP、IP、ARP 4 個協議,組成一個小型化的TCP /IP 協議。因為任何一個以太網數據幀要發送時都必須要知道對方的物理地址,這能過ARP 協議獲得,所以要實現ARP 協議。而IP 協議是TCP, ICMP協議數據的傳輸格式; TCP 協議提供可靠的,可重組服務; 而ICMP 協議是調試時所不可缺少的。另外,在實現重發功能時,大多的做法是應用層不參與,當需要重發時,由TCP /IP 協議把存儲在數據緩沖區的數據再發送一次即可,但在以為主處理器的情況下,因為單片機自身的資源有限,為了減少RAM 的使用,可以在需要重發時再由應用層產生這一幀數據即可,這無需太多的時間。這樣也不必每發送一幀數據都要存在緩沖區中以備重發時使用,進一步節省了RAM。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 教育| 丰原市| 慈利县| 铁岭市| 乌鲁木齐县| 张家口市| 阳春市| 新营市| 和林格尔县| 乡宁县| 周宁县| 祁阳县| 鹤峰县| 祁连县| 自贡市| 友谊县| 梨树县| 河西区| 大同市| 根河市| 侯马市| 两当县| 临颍县| 武义县| 商南县| 余江县| 尚义县| 乐山市| 拜泉县| 若尔盖县| 兴山县| 邯郸市| 郧西县| 马龙县| 海伦市| 民县| 陇西县| 凌源市| 土默特右旗| 伊宁县| 桃园县|