采用異步串口通信,Socket 0 作為TCP服務器;
CH395Q初始化時,出現(xiàn)兩個失敗:
(1)CH395OpenSocket(0),函數(shù)返回值為0x20;
(2)CH395TCPListen(0),函數(shù)返回值為0x11,CH395_ERR_MEM? ? 0x11;
請問應該是什么問題導致,謝謝
采用異步串口通信,Socket 0 作為TCP服務器;
CH395Q初始化時,出現(xiàn)兩個失敗:
(1)CH395OpenSocket(0),函數(shù)返回值為0x20;
(2)CH395TCPListen(0),函數(shù)返回值為0x11,CH395_ERR_MEM? ? 0x11;
請問應該是什么問題導致,謝謝
另外,Socket 0 的發(fā)送/接收緩沖區(qū)是5K
CH395SetSocketRecvBuf(0,0,10); ? /* Socket 0 ,接收緩沖區(qū)10*512 = 5K,發(fā)送緩沖區(qū)10*512 = 5K*/
CH395SetSocketSendBuf(0,10,10);??
使用P52 / RST,作為復位PIN
52 26 RST 輸出 電源上電復位和外部復位輸出,高電平有效
您好,
1.返回0x20代表socket已打開,排查一下代碼是否在其他地方已經(jīng)開啟了socket。如果沒有,在打開socket前調(diào)用close函數(shù)測試一下是否可以恢復正常。
2.返回0x11代表內(nèi)存錯誤,正常不會產(chǎn)生此錯誤??梢韵炔辉O置socket收發(fā)緩沖區(qū)測試一下。
3.關(guān)于收發(fā)緩沖區(qū)的設置,參考手冊的8.3.9章節(jié)說明。
4.根據(jù)您的描述,應該用的是CH395L,可以用0x01命令查一下固件版本。另外,52腳并不是復位腳,395L的復位腳是RSTI(63腳),拉低復位。建議在操作395前執(zhí)行一下復位操作。
如果方便,可將您的芯片版本和測試代碼郵件發(fā)來看一下(郵箱:lq@wch.cn)
多謝答疑,還有幾個問題想請教下;
1.返回0x20代表socket已打開,排查一下代碼是否在其他地方已經(jīng)開啟了socket。如果沒有,在打開socket前調(diào)用close函數(shù)測試一下是否可以恢復正常。
2.返回0x11代表內(nèi)存錯誤,正常不會產(chǎn)生此錯誤。可以先不設置socket收發(fā)緩沖區(qū)測試一下。
===此兩處錯誤,我使用CH395SetKeepLive(0,1);后,Socket 0 初始化正常,
===請問下CH395SetKeepLive作用是什么,對后面報文收發(fā),有無影響;
4.根據(jù)您的描述,應該用的是CH395L,可以用0x01命令查一下固件版本。另外,52腳并不是復位腳,395L的復位腳是RSTI(63腳),拉低復位。建議在操作395前執(zhí)行一下復位操作。
===? 我描述有誤,板子上使用的芯片是CH395Q E284版本,硬件設計 26腳作為復位引腳,和MCU的引腳相連;
=== 請問下,26腳(RST)作為復位引腳,CH395Q能否正常使用;還是說,必須要使用36腳(RSTI),和MCU相連;
上一個關(guān)于 1? 2 的問題,回答有誤,我再把操作說明下;
1.返回0x20代表socket已打開,排查一下代碼是否在其他地方已經(jīng)開啟了socket。如果沒有,在打開socket前調(diào)用close函數(shù)測試一下是否可以恢復正常。
2.返回0x11代表內(nèi)存錯誤,正常不會產(chǎn)生此錯誤??梢韵炔辉O置socket收發(fā)緩沖區(qū)測試一下。
===?此兩處錯誤,在以下操作后,Socket 0 初始化正常;
? ? ? ? ? (1)代碼添加 CH395CMDReset(),對CH395Q進行復位,代碼燒錄板子上,此時CH395Q不通;
? ? ? ? ? (2)再注掉?CH395CMDReset(),代碼燒錄板子上,CH395Q通,且Socket 0 初始化成功;
有兩個問題,(1)CH395指令,有沒有解復位的指令;
? ? ? ? ? ? ? ? ? ? ?(2)Socket 0 初始化失敗,是不是和您講的,與復位引腳有關(guān);必須要使用36腳(RSTI),和MCU相連;
您好,
1.keeplive功能為tcp的保活機制,具體作用可參考網(wǎng)上資料。該功能本身不會影響tcp通信,開啟keeplive功能對于tcp客戶端和tcp服務器有些不同,可參考手冊5.59章節(jié)。
2.open_socket和是否開啟keepLive功能無關(guān),建議您可以用邏輯分析儀抓時序看一下是否因時序問題導致socket打開異常。
3.RST引腳是輸出腳,RSTI腳才是復位腳,想要實現(xiàn)引腳復位需要接RSTI腳。建議在操作395前加上對其的復位操作。
4.?CH395CMDReset() 該命令執(zhí)行的是通過寫入復位命令碼實現(xiàn)復位,調(diào)用此命令后需延時50ms左右。
可以參考我司提供的例程并對照手冊進行開發(fā)設計。后續(xù)有其他問題可郵件交流:(lq@wch.cn)
手冊:http://www.findthetime.net/downloads/CH395DS1_PDF.html
EVT例程:http://www.findthetime.net/downloads/CH395EVT_ZIP.html
非常感謝!請問第4條,
4.?CH395CMDReset() 該命令執(zhí)行的是通過寫入復位命令碼實現(xiàn)復位,調(diào)用此命令后需延時50ms左右。
=== 請問下,有沒有解復位的命令,我在手冊沒找到;
? ? ? ?因為寫入復位命令碼后,CH395Q就不通信了;
395沒有解復位的命令。
建議執(zhí)行復位后通過check命令(命令碼:0x06)確保通信接口是正常的,否則后續(xù)操作肯定是異常的導致無法正常通信??梢杂眠壿嫹治鰞x抓一下上電后的時序,這樣可以較容易分析和排查問題。
可把抓的時序發(fā)送到我的郵箱看一下(郵箱:lq@wch.cn)