嵌入式系統(tǒng)以太網(wǎng)接口的設(shè)計
3.3發(fā)送數(shù)據(jù)
本文引用地址:http://m.butianyuan.cn/article/266249.htm數(shù)據(jù)的發(fā)送過程應(yīng)包含三個步驟:數(shù)據(jù)包的封裝;通過遠(yuǎn)程DMA將數(shù)據(jù)包送入DMA9008的數(shù)據(jù)發(fā)送緩沖區(qū);通過DM9008的本地DMA將數(shù)據(jù)送入FIFO進(jìn)行發(fā)送。具體過程如下:
(1)數(shù)據(jù)包在發(fā)送前應(yīng)該按規(guī)定的格式封裝好,格式如下:
(2)把上面的數(shù)據(jù)包通過遠(yuǎn)程DMA寫送入DM9008的數(shù)據(jù)發(fā)送緩沖區(qū)。
a.設(shè)置CR為22H,選擇寄存器頁面0;
b.設(shè)置中斷狀態(tài)寄存器ISR為40H,清除發(fā)送完成標(biāo)志;
c.設(shè)置遠(yuǎn)程DMA地址寄存器RSAR1、RSAR0為4000H,即發(fā)送緩沖區(qū)開始地址;
d.設(shè)置遠(yuǎn)程DMA字節(jié)計數(shù)寄存器RBCR1、RBCR0為發(fā)送數(shù)據(jù)包的長度;
e.設(shè)置CR為12H,設(shè)置命令寄存器為遠(yuǎn)程DMA寫;
f.往數(shù)據(jù)端口寫入發(fā)送數(shù)據(jù);
g.查詢中斷狀態(tài)寄存器ISR,等待遠(yuǎn)程DMA完成;
h.設(shè)置CR為22H,設(shè)置RBCR1、RBCR0為0,遠(yuǎn)程DMA停止;
i.設(shè)置ISR為40H,清除發(fā)送完成標(biāo)志。
(3)啟動本地DMA,把數(shù)據(jù)發(fā)送出去。
a.設(shè)置發(fā)送字節(jié)計數(shù)器TBCR1(06H)、TBCR0(05H)為發(fā)送數(shù)據(jù)包的長度;
b.設(shè)置發(fā)送頁面起始地址TPSR(04H)為40H,即發(fā)送緩沖區(qū)開始地址高位字節(jié);
c.設(shè)置命令寄存器CR為26H,啟動發(fā)送。
3.4高層通信協(xié)議
上述發(fā)送、接收過程所完成的協(xié)議是MAC層和物理層的協(xié)議。要真正實現(xiàn)嵌入式系統(tǒng)與以太網(wǎng)上其它設(shè)備(如PC機)之間的通信,還需要在嵌入式系統(tǒng)中實現(xiàn)更高層的通信協(xié)議,如TCP/IP協(xié)議,這樣PC機的程序員就可以使用TCP/IP協(xié)議透明地訪問嵌入式系統(tǒng)的數(shù)據(jù)。
因此上述以8051單片機系統(tǒng)為例的嵌入式系統(tǒng)的軟件設(shè)計中除了實現(xiàn)收發(fā)數(shù)據(jù)的功能外,還需要實現(xiàn)TCP/IP協(xié)議及更高層的應(yīng)用層協(xié)議才能真正實現(xiàn)整個系統(tǒng)的通信功能。由于TCP/IP協(xié)議的實現(xiàn)通常采用C語言,并且有現(xiàn)成的源程序,所以在用8051系列單片機編程時,可采有C51語言并參考TCP/IP標(biāo)準(zhǔn)的源程序來具體實現(xiàn)。有關(guān)這方面內(nèi)容,可以查看有關(guān)TCP/IP協(xié)議方面的資料。
雙絞線傳輸器相關(guān)文章:雙絞線傳輸器原理
評論