找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16171|回復(fù): 1
收起左側(cè)

以太網(wǎng)MAC調(diào)試感想

[復(fù)制鏈接]
ID:60076 發(fā)表于 2014-4-10 21:39 | 顯示全部樓層 |閱讀模式
經(jīng)過一個(gè)月的時(shí)間,初步能夠建立一個(gè)簡單的UDP服務(wù)器。所用芯片為STM32F107,板上自帶MAC,需要自帶PHY ,所用PHY為dp83848 。前面沒有用到官方庫, 程序思路 ,首先為時(shí)鐘的初始化,STM32主要有四個(gè)時(shí)鐘,內(nèi)部高速時(shí)鐘,外部高速時(shí)鐘,內(nèi)部低速時(shí)鐘,外部低速時(shí)鐘,通過對其倍頻,分頻給各個(gè)模塊提供時(shí)鐘信號,內(nèi)部主要有PLL時(shí)鐘,AHB時(shí)鐘,APB1,APB2時(shí)鐘,SYSCLK時(shí)鐘,APB1最大時(shí)鐘只有36MHZ,APB2可以72MHZ為STM32F107 所用I/O的初始化,管腳復(fù)用初始化,然后時(shí)鐘使能。在這所遇到的問題主要是STM32F107有些寄存器的復(fù)位值居然不是從零開始.以太網(wǎng)MAC協(xié)議主要有RMII 和MII模式,兩者的區(qū)別主要在于管腳和MCO 時(shí)鐘頻率的區(qū)別。MCO時(shí)鐘在RMII需要50MHZ,在這里通過PLL3 10倍頻獲得,因?yàn)樵跁r(shí)鐘初始化之后PLL3的頻率為5MHZ,在MII模式下 如果外部時(shí)鐘用25MHZ可以直接為MCO輸出25MHZ,提供時(shí)鐘源。對DP83848的寄存器進(jìn)行操作 主要通過SMI接口操作,SMI接口有兩跟線分別為MDC和MDIO MDC的時(shí)鐘源根據(jù)AHB總線的時(shí)鐘源分頻所得。然后ETH的寄存器初始化發(fā)送DMA寄存器初始化 ,ETH接受中斷使能,DMA中斷使能。。。。這里比較難理解 ,而且寄存器很難配置。我直接用官方的程序了。接下來就是移植LWIP 協(xié)議棧了。
LWIP 協(xié)議棧在裸機(jī)跑的時(shí)候,主要 包括 CC.H 中的數(shù)據(jù)類型定義 大小端定義(根據(jù)編譯器和處理器特性)臨界代碼的保護(hù) lwipopts.h 對協(xié)議棧內(nèi)核的參數(shù)配置 默認(rèn)的在OPT.H中, 最后就是對etnernetif.C中的計(jì)個(gè)函數(shù)的編寫。low-level-init 主要為網(wǎng)卡的初始化和網(wǎng)絡(luò)接口的初始化low-level-input 從網(wǎng)卡中得到一個(gè)數(shù)據(jù)包然后上傳到協(xié)議棧里中,low-level-output 把內(nèi)核中的PBUF所描述的數(shù)據(jù)發(fā)出去。
這樣 在主函數(shù)中加上 LWIP 初始化,主要是網(wǎng)絡(luò)接口 IP .MAC 初始化, 通過STM32的滴答計(jì)時(shí)器 定個(gè)基準(zhǔn)時(shí)間 然后加上TCP定時(shí)處理函數(shù)和ARP定時(shí)處理函數(shù)就能簡單的PING 通了。 PING 大包 ping不通 通過抓包軟件看見 STM32  回應(yīng)ICMP包 可是為什么PING 不通呢,主要原因在于STM32有硬件校驗(yàn)和功能 在發(fā)送字節(jié)大于一個(gè)以太網(wǎng)幀的時(shí)候,IP層為分片發(fā)送 而硬件校驗(yàn)和 自動(dòng)加上校驗(yàn)和導(dǎo)致 校驗(yàn)和錯(cuò)誤 PC機(jī)端認(rèn)為是錯(cuò)誤的數(shù)據(jù)直接丟棄了,F(xiàn)在只能關(guān)閉硬件校驗(yàn)和功能,其他方法還沒想到。
回復(fù)

使用道具 舉報(bào)

ID:65595 發(fā)表于 2014-8-30 06:39 | 顯示全部樓層
你好!請教一下,我這邊的用STM32F207+DP83640做網(wǎng)絡(luò)通信,現(xiàn)在DP83640工作,但STM32的MDC沒有輸出25M的時(shí)鐘,原因是什么?
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表