請問 ch395 的 CMD_SET_IP_ADDR 命令,需要在INIT_CH395初始化之前執(zhí)行嗎?可否在之后執(zhí)行
您好,設(shè)置CH395的IP地址需要在初始化之前設(shè)置。詳細初始化流程可以參考手冊8.3章節(jié)。后續(xù)有其他問題可郵箱交流(lq@wch.cn)
您好,CH395 S設(shè)置成tcp server模式,客戶端斷開鏈接后,重新鏈接ch395,鏈接超時,這個該怎么處理?
您好,
如果是tcp服務(wù)器單連接模式,那么客戶端斷開連接后,會進入斷開中斷,CH395在斷開中斷中默認會將此socket關(guān)閉,在斷開中斷中重新打開和監(jiān)聽即可。
您好,通過keil mdk debug,發(fā)現(xiàn)socket未建立成功,一直卡在以下函數(shù),請問是什么原因?
uint8_t SPI_FLASH_SendByte(uint8_t byte)
{
SPITimeout = SPIT_FLAG_TIMEOUT;
? /* 等待發(fā)送緩沖區(qū)為空,TXE事件 */
? while (spi_i2s_flag_get(SPI1,SPI_FLAG_TBE) == RESET)
{
? ? ?if((SPITimeout--) == 0)?
return SPI_TIMEOUT_UserCallback(0);
? ?}
? /* 寫入數(shù)據(jù)寄存器,把要寫入的數(shù)據(jù)寫入發(fā)送緩沖區(qū) */
? spi_i2s_data_transmit(SPI1,byte);
SPITimeout = SPIT_FLAG_TIMEOUT;
? /* 等待接收緩沖區(qū)非空,RXNE事件 */
? while (spi_i2s_flag_get(SPI1,SPI_FLAG_RBNE) == RESET)
? {
? ? if((SPITimeout--) == 0)?
return SPI_TIMEOUT_UserCallback(1);
? }
? ?/* 讀取數(shù)據(jù)寄存器,獲取接收緩沖區(qū)數(shù)據(jù) */
? ?return spi_i2s_data_receive(SPI1);
}
您好,能幫忙看看上樓的問題嗎
您好,卡在socket創(chuàng)建是因為spi發(fā)送命令碼失敗嗎?可以在對395操作前讀版本號或用CHECK命令碼檢測一下spi通信是否正常。如果有邏輯分析儀可以抓時序看一下,可以將抓的時序郵箱發(fā)過來看一下(郵箱:lq@wch.cn,后續(xù)問題也可郵箱交流)。
沒有,初始化CH395芯片成功了,但是初始化SOCKET時,就卡住了。
您好,可以把測試代碼郵箱發(fā)過來看一下,如果有spi抓的時序也可同步發(fā)過來看一下(郵箱:lq@wch.cn)
你好,請問通過工具監(jiān)聽網(wǎng)絡(luò)數(shù)據(jù),發(fā)現(xiàn)監(jiān)聽到的數(shù)據(jù)目的ip地址為0.0.0.0,并不是我們在初始化階段設(shè)置的目的地址,有什么原因會發(fā)生這種情況呢
您好,相關(guān)技術(shù)人員已微信聯(lián)系您。
你好 CH395Q做TCP_Server,client主動斷開鏈接后,立馬重新發(fā)起鏈接會出現(xiàn)TCP鏈接失敗的問題
您好,客戶端主動斷開連接后,會進入395的斷開中斷或超時中斷,進入這兩個中斷后會默認關(guān)閉socket,如果395做tcp_server,則需要在這兩個中斷中重新打開socket和重新監(jiān)聽。
后續(xù)有其他問題可郵箱聯(lián)系(郵箱:lq@wch.cn)
請問是5.16. CMD_GET_GLOB_INT_STATUS_ALL?中的這個bit位定義的嗎?
2 GINT_STAT_PHY_CHANGE PHY 狀態(tài)改變中斷
您好,客戶端斷開連接后,先由手冊5.15或5.16的命令碼得出全局中斷狀態(tài),如果有socket中斷產(chǎn)生,再由手冊5.23的命令碼得出socket的中斷狀態(tài),其中就包括斷開中斷和超時中斷,在這兩個中斷中重新打開socket和啟動監(jiān)聽即可。
手冊中對每一中斷事件有詳細說明,可以參考一下。
PS:當芯片版本號小于0x44則不支持5.16命令碼,可以通過0x01命令碼查詢芯片版本。
相關(guān)代碼流程可以參考官網(wǎng)例程:http://www.findthetime.net/downloads/CH395EVT_ZIP.html
后續(xù)有其他問題可郵箱聯(lián)系(lq@wch.cn)