一、CH395外圍電路設(shè)計(jì)注意
1.CH395的PHY是電流型,網(wǎng)絡(luò)變壓器的中心抽頭要接3.3V
2.CH395的電源引腳退耦電容不可少,而且要靠芯片周圍擺放
3.CH395支持串口,SPI和并口(僅CH395L支持)接口,在芯片上電時(shí),395根據(jù)SEL和TXD引腳的電平來(lái)決定采用哪種方式
4.為了在電源上電期間有效復(fù)位并減少外部干擾,可以在RSTI引腳與地之間接一個(gè)0.1UF的電容。
5.具體接法可以上沁恒官網(wǎng)(www.findthetime.net)上搜索“CH395EVT”
二、395初始化失敗
1.首先檢查“check_exist”命令,正常情況下395會(huì)將該命令的輸入值按位取反后輸出, 若該命令不正常,則說明395的通訊接口有問題,請(qǐng)注意接口時(shí)序,檢查CH395接口選擇模式配置是否正確,即檢查TXD,SEL電平狀態(tài)是否正確。。
2.395初始化參數(shù)設(shè)置好后,先延時(shí)20ms左右,再執(zhí)行初始化命令.
3.注意395的網(wǎng)絡(luò)參數(shù)的合法性,設(shè)置不規(guī)范的ip地址可能會(huì)導(dǎo)致395網(wǎng)絡(luò)出錯(cuò)
三、395與電腦無(wú)法建立TCP連接
1. 連接之前先將電腦的網(wǎng)絡(luò)防火墻關(guān)閉。
2.對(duì)于多網(wǎng)卡的電腦,在設(shè)置電腦端網(wǎng)絡(luò)調(diào)試軟件時(shí)要注意選擇正確的網(wǎng)卡,最好是打開軟件前,將其他網(wǎng) 卡都禁用。
3.先ping一下395,若ping不通,則先檢查網(wǎng)口的指示燈是否亮著,若不亮則換一根網(wǎng)線再試;若網(wǎng)口燈亮,則可能395初始化沒有正確完成
4.檢查395初始化配置的信息是否正確,目的ip與端口是否與電腦端設(shè)置相同`,TCP連接要注意ip地址處于同一網(wǎng)段,如果是在路由器局域網(wǎng)環(huán)境下,還要考慮395ip地址避免沖突。
5.TCP正常連接時(shí),395的INT引腳會(huì)給出中斷低電平信號(hào),可以通過讀取命令來(lái)獲取中斷狀態(tài)
6.若出現(xiàn)連接斷開后不能再次連上的問題,則可能是因?yàn)?95在檢測(cè)到連接斷開后自動(dòng)關(guān)閉了socket,可以通過在socket斷開與超時(shí)中斷里重新打開socket。
7.初始化socket之前沒有將socket配置信息表清空
四、395數(shù)據(jù)接收與發(fā)送問題
1.若395接收到數(shù)據(jù),會(huì)產(chǎn)生數(shù)據(jù)接收中斷信號(hào),檢測(cè)395的INT引腳是否有低電平產(chǎn)生,注意如果使用單片機(jī)外部中斷,則觸發(fā)位要設(shè)置為低電平觸發(fā)。若有中斷信號(hào),則讀取中斷狀態(tài),對(duì)照頭文件里的定義,獲取中斷含義
2.檢查395接收中斷的處理,正常流程是:獲取中斷、讀取數(shù)據(jù)長(zhǎng)度,讀取數(shù)據(jù)內(nèi)容。
3.UDP server 模式下的數(shù)據(jù)收發(fā)與其他模式不一樣:
數(shù)據(jù)接收時(shí),395會(huì)在數(shù)據(jù)包前加上8個(gè)字節(jié)的信息,分別是數(shù)據(jù)包長(zhǎng)度,源端口,源ip。在接收中斷處理任務(wù)里,需要將這些信息分離并保存。數(shù)據(jù)發(fā)送時(shí),395使用395UDPSendTo()函數(shù),函數(shù)參數(shù)需要使用上面的信息
4.與395發(fā)送相關(guān)的中斷有兩個(gè),分別是發(fā)送完成中斷與發(fā)送緩沖區(qū)空閑中斷;單片機(jī)向395發(fā)送緩沖區(qū)寫一包數(shù)據(jù),395會(huì)將數(shù)據(jù)復(fù)制到MAC緩沖區(qū),復(fù)制完畢后會(huì)產(chǎn)生發(fā)送緩沖區(qū)空閑中斷;CH395可能會(huì)將數(shù)據(jù)分裝成若干包數(shù)據(jù)包,每發(fā)送一包數(shù)據(jù)包,395都會(huì)產(chǎn)生一次發(fā)送完成中斷;因此在實(shí)際發(fā)送時(shí),必須要等到發(fā)送緩沖區(qū)空閑中斷產(chǎn)生后,才能向395緩沖區(qū)填寫下一次數(shù)據(jù)
5.395在數(shù)據(jù)收發(fā)過程中出現(xiàn)數(shù)據(jù)丟包現(xiàn)象:
(1)395在收發(fā)數(shù)據(jù)的過程中不能被其他進(jìn)程打斷,如果395在數(shù)據(jù)收發(fā)中被其他任務(wù)打斷,則可能會(huì)導(dǎo)致數(shù)據(jù)丟包
(2)檢查下定義接收緩沖區(qū)大小,讀取接收長(zhǎng)度,看是否超過了接收緩沖區(qū)。接收緩沖區(qū)在定義的時(shí)候至少要大于定義的TCP MSS的值。
五、芯片發(fā)熱。
由于CH395內(nèi)部集成MAC和PHY,發(fā)熱量稍大,但不會(huì)影響芯片穩(wěn)定性??赏ㄟ^以下方式改進(jìn):
(1)芯片RSETE 腳參考電阻18K。
(2)改善電源,如使用DC電源代替LDO,減小部分功耗。
(3)啟用CH395低能耗模式。
六、編程注意事項(xiàng)。
(1)、芯片內(nèi)置上電復(fù)位電路,主程序開始先延時(shí)200ms時(shí)間,留給CH395足夠的上電復(fù)位時(shí)間,防止單片機(jī)上程序開始運(yùn)行而CH395仍處于復(fù)位狀態(tài)。
(2)、芯片初始化之后,建議先做測(cè)試命令,確保基本通信正常后再進(jìn)行下面的操作。
(3)、假如程序中有設(shè)置MAC地址操作,需要延時(shí)200ms左右時(shí)間。
(4)、批量發(fā)送數(shù)據(jù)時(shí),每次發(fā)送數(shù)據(jù)前要確保前一次數(shù)據(jù)已經(jīng)發(fā)送完成(可通過查詢SINT_STAT_SENBUF_FREE中斷來(lái)實(shí)現(xiàn))。