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