0.移植說明,w5500移植文件
Ethernet和Internet里面包含的文件就是以太網(wǎng)五層模型中的應(yīng)用層
應(yīng)用層協(xié)議:HTTP,FTP,SMTP,TFTP,Telent, MQTT 支撐協(xié)議:DNS,SNMP
HTTP使用TCP而不是UDP.
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發(fā)的一個即時通訊協(xié)議,有可能成為物聯(lián)網(wǎng)的重要組成部分。該協(xié)議支持所有平臺,幾乎可以把所有聯(lián)網(wǎng)物品和外部連接起來,被用來當(dāng)做傳感器和制動器(比如通過Twitter讓房屋聯(lián)網(wǎng))的通信協(xié)議。
0-1,Ethernet可以認(rèn)為是對W5500芯片硬件的配置,全部添加
0-2 ,Internet就是按照需求自由添加了,全部添加也可以。
比如我要通過域名www.baidu.com或者www.sina.com.cn直接訪問廣域網(wǎng),
1,需要連接可以上網(wǎng)的路由器(不能是PC,PC沒有DHCP功能),則應(yīng)該添加DHCP.H
2,作為域名解析,需要添加DNS.H
3,如果是W5500作為服務(wù)器HTTP,需要添加httpServer.h
下面的重點(diǎn)就是W5500_conf.h,W5500.h和socket.h這三個頭文件中的函數(shù),其余的都是在這上面的封裝
1,#include "W5500_conf.h",最基礎(chǔ)的讀寫函數(shù)封裝
/*W5500SPI相關(guān)函數(shù)*/
void IINCHIP_WRITE( uint32 addrbsb, uint8 data); /*寫入一個8位數(shù)據(jù)到W5500*/
uint8 IINCHIP_READ(uint32 addrbsb); /*從W5500讀出一個8位數(shù)據(jù)*/
uint16 wiz_write_buf(uint32 addrbsb,uint8* buf,uint16 len); /*向W5500寫入len字節(jié)數(shù)據(jù)*/
uint16 wiz_read_buf(uint32 addrbsb, uint8* buf,uint16 len); /*從W5500讀出len字節(jié)數(shù)據(jù)*/
/*W5500基本配置相關(guān)函數(shù)*/
void reset_w5500(void); /*硬復(fù)位W5500*/
void set_w5500_mac(void); /*配置W5500的MAC地址*/
void set_w5500_ip(void); /*配置W5500的IP地址*/
/*需要用定時的的應(yīng)用函數(shù)*/
void dhcp_timer_init(void); /*dhcp用到的定時器初始化*/
void ntp_timer_init(void); /*npt用到的定時器初始化*/
send()->send_data_processing->IINCHIP_WRITE(),wiz_write_buf()
2,#include "W5500.h" ,各種狀態(tài)的檢查函數(shù),本機(jī)IP配置函數(shù)
/*********************************************************
* iinchip access function
*********************************************************/
void iinchip_init(void); // reset iinchip
void socket_buf_init(uint8 * tx_size, uint8 * rx_size); // setting tx/rx buf size
uint8 getISR(uint8 s);
void putISR(uint8 s, uint8 val);
uint16 getIINCHIP_RxMAX(uint8 s); //獲取socket接收最大值
uint16 getIINCHIP_TxMAX(uint8 s);
void setMR(uint8 val);
void setRTR(uint16 timeout); // set retry duration for data transmission, connection, closing ...
void setRCR(uint8 retry); // set retry count (above the value, assert timeout interrupt)
void clearIR(uint8 mask); // clear interrupt
uint8 getIR( void );
void setSn_MSS(SOCKET s, uint16 Sn_MSSR); // set maximum segment size
uint8 getSn_IR(SOCKET s); // get socket interrupt status 用的非常多
uint8 getSn_SR(SOCKET s); // get socket status
uint16 getSn_TX_FSR(SOCKET s); // get socket TX free buf size
uint16 getSn_RX_RSR(SOCKET s); // get socket RX recv buf size
//uint8 getSn_SR(SOCKET s);
void setSn_TTL(SOCKET s, uint8 ttl);
void send_data_processing(SOCKET s, uint8 *wizdata, uint16 len);//數(shù)據(jù)的發(fā)送
void recv_data_processing(SOCKET s, uint8 *wizdata, uint16 len);
void setGAR(uint8 * addr); // set gateway address
void setSUBR(uint8 * addr); // set subnet mask address
void setSHAR(uint8 * addr); // set local MAC address
void setSIPR(uint8 * addr); // set local IP address
void getGAR(uint8 * addr);
void getSUBR(uint8 * addr);
void getSHAR(uint8 * addr);
void getSIPR(uint8 * addr);
void setSn_IR(uint8 s, uint8 val);
void Reset_W5500(void);
void PHY_check(void); //網(wǎng)口連接檢查
extern uint8 rxsize[];
3,#include extern uint8 socket(SOCKET s, uint8 protocol, uint16 port, uint8 flag); // Opens a socket(TCP or UDP or IP_RAW mode) extern void close(SOCKET s); // Close socket extern uint8 connect(SOCKET s, uint8 * addr, uint16 port); // Establish TCP connection (Active connection) extern void disconnect(SOCKET s); // disconnect the connection extern uint8 listen(SOCKET s); // Establish TCP connection (Passive connection) extern uint16 send(SOCKET s, const uint8 * buf, uint16 len); // Send data (TCP) //send函數(shù)包含了send_data_processing()函數(shù) extern uint16 recv(SOCKET s, uint8 * buf, uint16 len); // Receive data (TCP) extern uint16 sendto(SOCKET s, const uint8 * buf, uint16 len, uint8 * addr, uint16 port); // Send data (UDP/IP RAW) extern uint16 recvfrom(SOCKET s, uint8 * buf, uint16 len, uint8 * addr, uint16 *port); // Receive data (UDP/IP RAW) 4,#include uint8 check_DHCP_state(SOCKET s); // Check the DHCP state void do_dhcp(void); 5, #include "http_server.h" void unescape_http_url(char * url); /* convert escape character to ascii */ void parse_http_request(st_http_request *, uint8 *);/* parse request from peer */ void find_http_uri_type(uint8 *, char *); /* find MIME type of a file */ void make_http_response_head(unsigned char *, char, u_long); /* make response header */ unsigned char* get_http_param_value(char* uri, char* param_name); /* get the user-specific parameter value */ 6,#include "http_client.h" void do_http_client(void);//TCP Clinet回環(huán)演示函數(shù) 7,#include "httputil.h" void proc_http(SOCKET s, u_char * buf); void do_https(void); void cgi_ipconfig(st_http_request *http_request); //void trimp(uint8* src, uint8* dst, uint16 len); uint16 make_msg_response(uint8* buf,int8* msg); void make_cgi_response(uint16 a,int8* b,int8* c); void make_pwd_response(int8 isRight,uint16 delay,int8* cgi_response_content, int8 isTimeout); 8, #include "ntp.h" void get_seconds_from_ntp_server(uint8* buf,uint16 idx); void ntp_client_init(void); void do_ntp_client(void); tstamp change_datetime_to_seconds(void); void calc_date_time(tstamp seconds); 9,#include "dns.h" extern uint8 dns_get_ip[4]; extern uint8 domain_name[]; int dns_makequery(uint16 op, uint8 * name, uint8 * buf, uint16 len); int parse_name(uint8 * msg, uint8 * compressed, /*char * buf,*/ uint16 len); uint8 * dns_question(uint8 * msg, uint8 * cp); uint8 * dns_answer(uint8 * msg, uint8 * cp); uint8 parseMSG(struct dhdr * pdhdr, uint8 * pbuf); uint8 dns_query(uint8 s, uint8 * name); void do_dns(void); 10,#include "smtp.h" void send_mail(void); void mail_message(void); void base64encode(char *s, char *r); void str_insert(char *s1,char *s2,int pos); void do_smtp(void);
上一篇:【STM32+W5500】20,W5500作為Client客戶端
下一篇:【STM32+W5500】22,W5500連接外部服務(wù)器失敗,如ONENET
推薦閱讀
史海拾趣
比亞迪的發(fā)展可以追溯到1995年,當(dāng)時王傳福創(chuàng)立了這家公司,最初專注于生產(chǎn)小型電池。在初創(chuàng)期,比亞迪通過模仿日本三洋和索尼的產(chǎn)品快速積累了生產(chǎn)經(jīng)驗(yàn)。然而,王傳福深知模仿不是長久之計,因此他果斷地決定轉(zhuǎn)向自主研發(fā)和創(chuàng)新。這一決策在日后證明是極其明智的。隨著技術(shù)的不斷積累,比亞迪于1997年開始量產(chǎn)鋰離子電池,并成功實(shí)現(xiàn)了年銷售額突破1億元。這一里程碑標(biāo)志著比亞迪在電池技術(shù)領(lǐng)域取得了重大突破,為其日后在電子行業(yè)的發(fā)展奠定了堅實(shí)基礎(chǔ)。
在追求經(jīng)濟(jì)效益的同時,Box Enclosures公司也積極履行社會責(zé)任。公司注重環(huán)保和可持續(xù)發(fā)展,采用環(huán)保材料和節(jié)能技術(shù)生產(chǎn)產(chǎn)品。同時,公司還積極參與公益事業(yè),為社會做出貢獻(xiàn)。這種對社會責(zé)任的承擔(dān)和綠色發(fā)展的理念,使得Box Enclosures公司贏得了社會的認(rèn)可和尊重。
以上是關(guān)于Box Enclosures公司發(fā)展的5個虛構(gòu)故事,雖然這些故事是基于虛構(gòu)的,但它們可能反映了Box Enclosures公司在實(shí)際發(fā)展中可能遇到的一些情況和挑戰(zhàn)。
作為一家在半導(dǎo)體和通信領(lǐng)域具有深厚技術(shù)底蘊(yùn)的公司,Conexant始終致力于技術(shù)創(chuàng)新和市場拓展。在不斷變化的市場環(huán)境中,Conexant緊跟行業(yè)趨勢,加大在新技術(shù)研發(fā)和市場推廣方面的投入。通過持續(xù)創(chuàng)新和市場拓展,Conexant成功鞏固了在行業(yè)內(nèi)的領(lǐng)先地位,并為全球用戶提供了更加優(yōu)質(zhì)的產(chǎn)品和服務(wù)。
這些故事只是CONEXANT公司在電子行業(yè)發(fā)展中的一部分,它們展示了公司在不同時期的戰(zhàn)略決策、技術(shù)創(chuàng)新和市場拓展能力。這些成就不僅為CONEXANT公司贏得了業(yè)界的尊重和認(rèn)可,也為整個電子行業(yè)的發(fā)展做出了重要貢獻(xiàn)。
2017年,電子行業(yè)迎來了一場引人矚目的收購案。新思科技(Synaptics),一家在人機(jī)界面交互開發(fā)解決方案領(lǐng)域具有領(lǐng)導(dǎo)地位的公司,宣布以3.95億美元現(xiàn)金和726,666只普通股收購科勝訊系統(tǒng)公司(Conexant Systems)。這一收購行動不僅增強(qiáng)了Synaptics在智能家居領(lǐng)域的語音和音頻處理解決方案的能力,也標(biāo)志著Conexant正式成為Synaptics大家庭的一員。通過此次收購,兩家公司實(shí)現(xiàn)了技術(shù)資源和市場優(yōu)勢的互補(bǔ),共同開啟了新的發(fā)展篇章。
Devar Inc公司自創(chuàng)立之初,就致力于在增強(qiáng)現(xiàn)實(shí)(AR)領(lǐng)域取得突破。經(jīng)過多年的研發(fā),公司成功推出了世界上首個用于AR的生成式AI神經(jīng)網(wǎng)絡(luò)。這項(xiàng)技術(shù)允許用戶通過簡單的文本提示創(chuàng)建3D對象和其他AR資產(chǎn),極大地簡化了AR內(nèi)容的創(chuàng)作過程。Devar的AR平臺結(jié)合了神經(jīng)網(wǎng)絡(luò)和云解決方案,讓用戶能夠輕松創(chuàng)建并分享AR內(nèi)容,開啟了AR創(chuàng)作的新時代。
隨著環(huán)保意識的提高,Devar Inc公司也積極投身環(huán)??萍碱I(lǐng)域。公司研發(fā)了一系列環(huán)保型電子產(chǎn)品和解決方案,如可降解材料制成的電子產(chǎn)品外殼、節(jié)能型電源管理系統(tǒng)等。同時,Devar還積極參與電子廢棄物的回收和處理工作,推動循環(huán)經(jīng)濟(jì)的發(fā)展。這些努力不僅有助于減少環(huán)境污染和資源浪費(fèi),也提升了公司的社會責(zé)任感和品牌形象。
輸入電壓大概在0到15V,要求輸出電壓是輸入電壓的三分之一,也就是0到5V范圍內(nèi)。 要求:比較精確,誤差在毫伏級別吧。 希望能詳細(xì)一點(diǎn),我實(shí)在太白了?!? 查看全部問答∨ |
網(wǎng)絡(luò)攝像機(jī)從工業(yè)領(lǐng)域進(jìn)入民用領(lǐng)域 關(guān)鍵字:網(wǎng)絡(luò)攝像機(jī) 網(wǎng)絡(luò)攝像機(jī)作為最具代表性的第三代網(wǎng)絡(luò)化視頻監(jiān)控產(chǎn)品,在工業(yè)級的安全防范領(lǐng)域已經(jīng)廣為市場認(rèn)可,越來越多的安防選用網(wǎng)絡(luò)攝像機(jī)產(chǎn)品來實(shí)施。而隨著國內(nèi)整體社會經(jīng)濟(jì)的發(fā)展,網(wǎng)絡(luò)攝像機(jī)已經(jīng)開始進(jìn)入尋常百姓家, ...… 查看全部問答∨ |
在現(xiàn)代電視監(jiān)控系統(tǒng)中,越來越多地使用了球形一體化攝像機(jī)(簡稱為“球機(jī)”),其中有些結(jié)構(gòu)更緊湊、旋轉(zhuǎn)速度更快的球形一體化攝像機(jī)還被簡稱為“快球”,而在早期,也有公司稱這種攝像機(jī)為集成式穹頂攝像機(jī)。 1.球機(jī)與快球   ...… 查看全部問答∨ |
高壓電機(jī)進(jìn)行變頻實(shí)驗(yàn),想用電機(jī)模擬風(fēng)機(jī)實(shí)驗(yàn)。有用過的說一聲… 查看全部問答∨ |
大家好,我想問下,比如我現(xiàn)在有個單片機(jī)會定時傳入一些字符串過來,然后我開發(fā)了一個window小程式來接收這個字符串,請問在vs2005上用什么來接收,什么做呢?delphi有com控件來接收,但vs我不太熟悉,請大家?guī)蛶兔?討論下,謝謝… 查看全部問答∨ |
我遇到一個非常奇怪的問題: 1,用SJF2440.exe燒寫Nboot,燒寫完后讀flash,內(nèi)容正確 2,按復(fù)位鍵,看工作電流,有變化,從0.55A到0.74A,然后又降到0.65A 3,再按復(fù)位鍵,電流沒有變化 4,燒寫Eboot,燒寫完后,看Nboot的空間,Nboot的內(nèi)容全 ...… 查看全部問答∨ |
CE環(huán)境下,pictureBox只能顯示GIF動畫的第一幀,各位知道哪個第三方控件可以正常播放動畫的,有個帖說國外有,也不說是什么,給個控件的名字也好啊… 查看全部問答∨ |
手上的一塊開發(fā)板,在燒寫鏡象的時候,需要往FLASH中燒寫EBOOT.nb0還有boot.bin,通過DWN來查看和控制燒寫的過程,如此的話,WINCE系統(tǒng)系統(tǒng)有點(diǎn)慢,然后對方提供了另外一個loader.bin直接燒到FLASH中原先boot.bin的位置,之后系統(tǒng)啟動就快了很多, ...… 查看全部問答∨ |
求助,求MSP430F21XX最小系統(tǒng)圖,及下載接口 請高手幫忙,剛剛開始接觸MSP430,想使用MSP430F2131,有沒有用過這款MCU的幫個忙。下載接口需要怎么設(shè)計,需要用到什么下載器?… 查看全部問答∨ |
和壇子上的其他朋友相比,我確實(shí)是個菜鳥中的菜鳥。因?yàn)槲易越佑|51只有短短半年的時間。那是一個夜黑風(fēng)高的晚上... 猶記得大約是冬季,那時剛剛學(xué)完模擬電子電路,只覺得所謂電子就是面對一堆晶體管+運(yùn)放。很枯 ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- MPS電機(jī)研究院 讓電機(jī)更聽話的秘密! 第一站:電機(jī)應(yīng)用知識大考!
- TI E2E 無線主題月,寫出你的學(xué)習(xí)筆記!
- 【答題有禮】了解PI推出的全新LinkSwitch-XT2離線反激式開關(guān)電源IC產(chǎn)品系列
- 更直觀的了解5G?觀看羅德與施瓦茨主題演講,填問卷贏好禮!
- 【在線研討會】ADI RadioVerse™技術(shù)與集成DPD算法的RF收發(fā)器AD9375
- 免費(fèi)領(lǐng)?。夯趇.MX RT1062的Teensy 4.1開發(fā)板,參考開源設(shè)計,DIY LCR表~
- TI史上最強(qiáng)音視頻DSP—DM6467之SEED開發(fā)板全套資源
- TI 工業(yè)月,靈感不設(shè)限!深度挖掘工業(yè)設(shè)計的痛點(diǎn)和難點(diǎn),讀專題填問卷贏好禮!
- 單片機(jī)零起點(diǎn)入門,帶你DIY 51開發(fā)板
- Sanborn推出下一代高精地圖技術(shù) 將應(yīng)用于L4和L5自動駕駛汽車
- 瑞薩電子新型鋰電池管理IC提升電池壽命
- 美國加州大學(xué)歐文分校發(fā)明“超5G”無線收發(fā)器 可用于自動駕駛
- Swift Navigation定位服務(wù)Skylark覆蓋全美 提供車道級精確定位
- 法雷奧的自動駕駛攻勢
- 新能源汽車的“三國殺”
- 高通微軟又有新合作?微軟獨(dú)創(chuàng)EDGE架構(gòu)E2處理器腳步近了
- 佛吉亞副總裁:互聯(lián)化和自動化將從根本上顛覆未來座艙變革
- 活體手指解鎖:指紋+心率傳感器還不夠,還要加溫度才識“熱血真人”
- Trinamic推出多軸步進(jìn)電機(jī)伺服模塊
- 干貨 | 技術(shù)牛人分享功率MOSFET的15點(diǎn)經(jīng)驗(yàn)【收藏一下】
- 請教大家兩個關(guān)于串口通信的小白問題
- 請教一個簡單的verilog hdl問題
- [轉(zhuǎn)]常見問題解答:為什么IC需要自己的去耦電容?
- LED導(dǎo)電銀膠、導(dǎo)電膠及其封裝工藝
- 現(xiàn)在轉(zhuǎn)行集成電路,還來得及嗎?
- [求助]電氣規(guī)則檢查出錯Output Pins And Power Pins……
- 求2顆電源芯片的型號,絲印一個是3YH 993,另一個是0B=R36
- 我的電路常識瞬間崩塌——3LED電路(視頻)
- nmg,我要去MakerFaire