91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

全硬件TCP/IP協(xié)議棧學(xué)習(xí)筆記 (第八天:W5500+FPGA實(shí)現(xiàn)tcp連接)

學(xué)FPGA,慢慢來 ? 2017-12-18 10:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

經(jīng)歷了一個(gè)多月的調(diào)試,最終終于使用basys2將tcp模式配置成功了。

首先說一下思路吧,首先W5500的發(fā)送與接收與開發(fā)板的通信使用的是SPI協(xié)議,下降沿發(fā)送,上升沿接收。每次發(fā)送的數(shù)據(jù)格式為前十六位為地址位,之后五位為寄存器區(qū)的選塊,例如常用的為5‘b00000為通用寄存器區(qū),5’b00001為socket1寄存器區(qū)。接下來一位為讀寫操作位,0為讀數(shù)據(jù),1為寫數(shù)據(jù)。接下來兩位是SPI模式選擇,00代表使用SCSN信號確定位寬,01代表一位字長(八個(gè)二進(jìn)制數(shù)),10代表兩位字長(十六個(gè)二進(jìn)制數(shù)),11代表四位字長(32個(gè)二進(jìn)制數(shù))。隨后便是和之前字長相匹配的數(shù)據(jù)位。格式如下:

0000000000000000_ 00000__1_01_00000000

地址位 寄存器區(qū) 寫 一位字長 數(shù)據(jù)

在發(fā)送數(shù)據(jù)與接收數(shù)據(jù)的時(shí)候,要保證數(shù)據(jù)位和SCK信號沿對其,同時(shí)要保證SCSN為低電平。具體的SPI發(fā)送可以參考之前的博客。

說完了發(fā)送的格式,接下來我們來說一說發(fā)送的數(shù)據(jù)。

首先我們要明確我們要配置數(shù)據(jù),我們要發(fā)送我們的IP,GATEWAY,MAC,端口以及目的IP,端口。實(shí)際上我們講的發(fā)送應(yīng)該是配置寄存器,我們是在將我們發(fā)送所必須的信息寫入寄存器中。在發(fā)送數(shù)據(jù)之前我們要首先將我們W5500通過外邊的接口硬復(fù)位,之后對模式寄存器進(jìn)行讀操作,直到模式寄存器的最低位為0時(shí),即復(fù)位完成,我們在進(jìn)行其他的寫入操作。在復(fù)位結(jié)束之后,我們可以將IP,MAC,GATEWAY等數(shù)據(jù)寫入對應(yīng)的寄存器中,具體的寄存器地址和所屬寄存器區(qū)具體參看W5500的手冊,里邊的東西都寫的非常清楚。

在配置完成這些之后,我們對socket1 mode即1端口的模式選擇寄存器進(jìn)行書寫,將W5500模式選擇為TCP模式。具體的操作為將對應(yīng)的后三位寫入為001。之后再對該寄存器進(jìn)行讀操作,以此來確定模塊卻是在TCP模式運(yùn)行。確認(rèn)之后開始配置目標(biāo)IP,端口,最大字長等信息。之所以先配置TCP模式是因?yàn)槲覀兒筮吪渲玫募拇嫫鞫紝儆诙丝诩拇嫫鲄^(qū),而我們在配置之前應(yīng)先配置模式寄存器。

完成這些配置之后,我們來接觸兩個(gè)很特殊但是也很重要的寄存器,一個(gè)是CR寄存器,另一個(gè)是SR寄存器(原諒我平板打字實(shí)在不想寫全稱了)。在我們完成以上基礎(chǔ)的寄存器配置之后,我們對CR寄存器寫入對應(yīng)特定的值,該值可以讓模塊進(jìn)行對應(yīng)的操作。而我們要知道該操作是否完成,我們就要對SR寄存器進(jìn)行讀操作,讀出的對應(yīng)值代表模塊當(dāng)前所處在的模式狀態(tài)。如我們最初對CR寄存器寫入值0x01,表示我們將模塊設(shè)置為TCP,之后我們對SR寄存器進(jìn)行讀操作,如果讀出的值是0x13,那么代表模塊當(dāng)前處在TCP客戶端模式,我們即可進(jìn)行下一步操作。我們之后再進(jìn)行對應(yīng)的操作,例如要將模塊設(shè)置為偵聽狀態(tài)下,將CR寄存器寫入0x04,讀SR寄存器值為0x17即為處在偵聽狀態(tài)。接下來我們對發(fā)送區(qū)讀指針寄存器讀操作來獲取當(dāng)前讀指針,隨后根據(jù)讀指針讀出的數(shù)據(jù)將我們要發(fā)送的數(shù)據(jù)寫入到發(fā)送緩存即可。這樣就完成了數(shù)據(jù)的發(fā)送。

這樣,我們將配置的大概思路講完了。

設(shè)計(jì)模塊如下

在具體書寫時(shí),我將SPI發(fā)送與接收寫在了一個(gè)模塊,而且發(fā)送與接收都只是發(fā)送8位和接收8位。SCSN信號是在該模塊中產(chǎn)生,具體發(fā)送與接收都是使用狀態(tài)機(jī)來書寫,SCSN信號在發(fā)送第一位的時(shí)候拉低,最后一位發(fā)送結(jié)束之后拉高。(注意,是發(fā)送結(jié)束之后不是發(fā)送最后一位時(shí)就拉低。)SPI發(fā)送與接收部分就結(jié)束了,在書寫時(shí)要注意接收條件為SCSN信號為低信號同時(shí)SCK信號的上升沿,發(fā)送的條件是SCSN信號為低同時(shí)SCK信號的下降沿。

8位發(fā)送數(shù)據(jù)波形如下

我們將要發(fā)送的信息寫在一個(gè)狀態(tài)機(jī)模塊中,通過狀態(tài)機(jī)來實(shí)現(xiàn)發(fā)送信息的按順序發(fā)送。我們將每次發(fā)送的信息按照8位來拆解,想對應(yīng)的想發(fā)送一位時(shí)就要發(fā)送總共32位,和下來就是發(fā)送四段。兩位時(shí)發(fā)送五段,四位時(shí)發(fā)送7段。相應(yīng)的讀操作也是一樣,由于我在我所做的項(xiàng)目中所需讀的數(shù)據(jù)均為一個(gè)字長,即為8位,所以我只寫了讀一個(gè)字長的操作。拆解的過程就是移位加取高8位,另加一個(gè)計(jì)數(shù)器即可完成。而每次發(fā)送的觸發(fā)信號即為上邊的SPI控制模塊在接受或者發(fā)送結(jié)束后發(fā)送的結(jié)束信號。當(dāng)接收到發(fā)送或接收的結(jié)束信號,即可將下一個(gè)8位數(shù)據(jù)傳輸給SPI控制模塊。

最后我寫了一個(gè)同步FIFO來將幾個(gè)拆分的幾位數(shù)據(jù)合并。

合并之后波形如下

其實(shí)最初這個(gè)FIFO是用來救場的,由于最初書寫的時(shí)候沒有認(rèn)真的研究說明書,想成每次發(fā)送8位,后來意識到這件事情的時(shí)候時(shí)間有些緊張,就想寫一個(gè)FIFO來救個(gè)場,就過再后來做的時(shí)候,發(fā)現(xiàn)實(shí)際上是因禍得福,這種書寫方式可以有效的減少資源,而且在SPI控制模塊也會(huì)更加簡單,在最后糾錯(cuò)時(shí)也好找錯(cuò)誤字段。

到此,設(shè)計(jì)思路和配置思路均結(jié)束。這幾天還是有些忙,稍后把仿真圖補(bǔ)一下吧。等到元旦后期末結(jié)束了認(rèn)認(rèn)真真的將W5500數(shù)據(jù)傳輸從硬件連接到網(wǎng)絡(luò)編程寫一篇大報(bào)告分享出來。

最后,說個(gè)心聲吧,從ping通到今天完成,足足過了5,6這五六周,有躊躇滿志,更多的是茫然無措。但是我就決定一定要做出來?,F(xiàn)在完成之后激動(dòng)的都不想睡覺了抓緊時(shí)間總結(jié)發(fā)出來。代碼量對于我來說感覺仿佛突破了自己,風(fēng)格可能還很稚嫩,但是真的很有成就感。尤其是在一個(gè)問題卡住了2周多的時(shí)間結(jié)果一個(gè)偶然發(fā)現(xiàn)是配置管腳的UCF錯(cuò)了但時(shí)候,恨透了愚蠢的自己。這段時(shí)間的學(xué)習(xí)真的收獲了太多了,感謝這段時(shí)間的自己。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA設(shè)計(jì)
    +關(guān)注

    關(guān)注

    9

    文章

    431

    瀏覽量

    28147
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1425

    瀏覽量

    83529
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    TCP/IP(Socket)協(xié)議深度剖析

    TCP/IP協(xié)議作為互聯(lián)網(wǎng)通信的基礎(chǔ)架構(gòu),其核心機(jī)制Socket編程承載著全球數(shù)據(jù)交換的使命。本文將深入剖析這一協(xié)議的七層架構(gòu)、三次握手與四次揮手的精妙設(shè)計(jì)、流量控制與擁塞控制的動(dòng)態(tài)平
    的頭像 發(fā)表于 03-03 17:06 ?505次閱讀

    疆鴻智能一鍵打通EtherCAT轉(zhuǎn)Modbus TCP/IP,汽車制造鏈透明

    疆鴻智能一鍵打通EtherCAT轉(zhuǎn)Modbus TCP/IP,汽車制造鏈透明 一、案例背景 在現(xiàn)代汽車制造體系中,各生產(chǎn)環(huán)節(jié)常采用異構(gòu)的工業(yè)網(wǎng)絡(luò)協(xié)議。以某新能源汽車焊裝車間為例,其機(jī)
    的頭像 發(fā)表于 01-06 15:37 ?205次閱讀

    TCP和UDP的區(qū)別

    首先概括一下基本的區(qū)別: TCP是一個(gè)面向連接的、可靠的、基于字節(jié)流的傳輸層協(xié)議。 而UDP是一個(gè)面向無連接的傳輸層協(xié)議。(就這么簡單,
    發(fā)表于 12-09 07:24

    為什么會(huì)有TCP/IP協(xié)議?

    見了面,完全不能交流信息。因而他們需要定義一些共通的東西來進(jìn)行交流,TCP/IP就是為此而生。TCP/IP不是一個(gè)協(xié)議,而是一個(gè)
    發(fā)表于 12-03 06:28

    以太網(wǎng)通訊在FPGA上的實(shí)現(xiàn)

    一、介紹在本項(xiàng)目由于我們需要使用PC實(shí)時(shí)的向FPGA發(fā)送將要識別的圖片,所以我們最終選擇使用以太網(wǎng)來從PC向FPGA發(fā)送圖片并暫存在DDR中,下面是對以太網(wǎng)協(xié)議硬件
    發(fā)表于 10-30 07:45

    快速掌握TCP/IP?LuatOS新手入門指南

    想快速上手TCP/IP通信卻不知從何開始?LuatOS為開發(fā)者提供了簡潔高效的開發(fā)路徑。通過本指南的實(shí)操步驟,你將發(fā)現(xiàn),實(shí)現(xiàn)網(wǎng)絡(luò)連接其實(shí)比想象中更簡單。 提到網(wǎng)絡(luò)應(yīng)用,就繞不開
    的頭像 發(fā)表于 10-15 17:27 ?678次閱讀
    快速掌握<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>?LuatOS新手入門指南

    STM32驅(qū)動(dòng)W5500作為客戶端進(jìn)行通訊

    SR-ES1內(nèi)嵌Wiznet的W5500芯片,使用硬件邏輯門電路實(shí)現(xiàn)TCP/IP協(xié)議
    的頭像 發(fā)表于 10-14 17:19 ?1344次閱讀
    STM32驅(qū)動(dòng)<b class='flag-5'>W5500</b>作為客戶端進(jìn)行通訊

    EtherNet/IP轉(zhuǎn)Modbus TCP網(wǎng)關(guān),讓設(shè)備對話更簡單!

    在工業(yè)自動(dòng)化與物聯(lián)網(wǎng)飛速發(fā)展的今天,不同協(xié)議設(shè)備之間的互聯(lián)互通已成為企業(yè)提升生產(chǎn)效率、實(shí)現(xiàn)智能化升級的關(guān)鍵挑戰(zhàn)。如何讓支持EtherNet/IP的PLC、伺服系統(tǒng)與基于Modbus TCP
    的頭像 發(fā)表于 09-19 16:30 ?715次閱讀
    EtherNet/<b class='flag-5'>IP</b>轉(zhuǎn)Modbus <b class='flag-5'>TCP</b>網(wǎng)關(guān),讓設(shè)備對話更簡單!

    rtthread網(wǎng)絡(luò)接口設(shè)備 輕量級tcp/ip 堆棧 這兩個(gè)沖突嗎?

    需要使用 lwip 上圖中 網(wǎng)絡(luò)接口設(shè)備 需要使能么? 上圖中 網(wǎng)絡(luò)接口設(shè)備 是干嘛用的?是一個(gè)比lwip 功能弱的tcp/ip 協(xié)議么?
    發(fā)表于 09-18 06:16

    實(shí)現(xiàn)EtherNet/IP網(wǎng)絡(luò)與Modbus TCP網(wǎng)絡(luò)之間數(shù)據(jù)互通

    硬件連接與配置 使用工業(yè)以太網(wǎng)網(wǎng)關(guān)(如ENE-350)作為橋接設(shè)備,通過以太網(wǎng)交換機(jī)實(shí)現(xiàn)硬件互聯(lián)。 網(wǎng)關(guān)需根據(jù)應(yīng)用場景配置為EtherNet/IP
    的頭像 發(fā)表于 08-06 13:48 ?737次閱讀
    <b class='flag-5'>實(shí)現(xiàn)</b>EtherNet/<b class='flag-5'>IP</b>網(wǎng)絡(luò)與Modbus <b class='flag-5'>TCP</b>網(wǎng)絡(luò)之間數(shù)據(jù)互通

    GraniStudio : TCP/IP(Socket)協(xié)議深度剖析

    在工業(yè)自動(dòng)化與物聯(lián)網(wǎng)領(lǐng)域,TCP/IP(Socket)協(xié)議作為應(yīng)用最廣泛的網(wǎng)絡(luò)通信標(biāo)準(zhǔn),是實(shí)現(xiàn)設(shè)備間數(shù)據(jù)交互的核心技術(shù)。GraniStudio 軟件作為工業(yè)級零代碼開發(fā)平臺,其內(nèi)置的
    的頭像 發(fā)表于 08-03 22:20 ?1203次閱讀
    GraniStudio : <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>(Socket)<b class='flag-5'>協(xié)議</b>深度剖析

    什么是Modbus TCP協(xié)議

    TCP/IP協(xié)議,通過以太網(wǎng)進(jìn)行通信,并支持多個(gè)設(shè)備同時(shí)訪問同一個(gè)Modbus TCP服務(wù)器。 一、
    的頭像 發(fā)表于 07-23 17:18 ?4313次閱讀
    什么是Modbus <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>

    生物制藥自動(dòng)化升級:Modbus TCP與Ethernet/IP協(xié)議轉(zhuǎn)換實(shí)踐

    Ethernet/IP),直接通信存在障礙。為此通過穩(wěn)聯(lián)技術(shù)的Modbus TCP與Ethernet/IP網(wǎng)關(guān),實(shí)現(xiàn)兩種協(xié)議的無縫轉(zhuǎn)換,確保
    的頭像 發(fā)表于 06-17 18:34 ?623次閱讀
    生物制藥自動(dòng)化升級:Modbus <b class='flag-5'>TCP</b>與Ethernet/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b>轉(zhuǎn)換實(shí)踐

    51+單片機(jī)TCP-IP+協(xié)議ZLIP源碼

    概述 單片機(jī)上網(wǎng)技術(shù),是當(dāng)前的一個(gè)熱門技術(shù)。單片機(jī)上網(wǎng)技術(shù)中的一個(gè)重要部分是在單片上實(shí)現(xiàn) TCP/IP 協(xié)議?,F(xiàn)在可獲得的
    發(fā)表于 04-22 15:11

    Modbus TCP轉(zhuǎn)Profibus DP網(wǎng)關(guān)的防撞雷達(dá)應(yīng)用

    工業(yè)自動(dòng)化領(lǐng)域中,Modbus TCP和Profibus DP分別代表了兩種廣泛使用的通訊協(xié)議。Modbus TCP是一種基于TCP/IP
    的頭像 發(fā)表于 03-31 16:18 ?897次閱讀
    Modbus <b class='flag-5'>TCP</b>轉(zhuǎn)Profibus DP網(wǎng)關(guān)的防撞雷達(dá)應(yīng)用