CH573 EVT板測試串口遇到的奇怪問題

如圖所指示,有些不理解;使用的是透傳例程,因為我做的透傳模塊需要接受AT指令并解析,所以進(jìn)行指令解析測試;利用了串口超時中斷對數(shù)據(jù)包進(jìn)行處理;另外串口超時機(jī)制也是很疑惑,如果我不用4字節(jié)觸發(fā),直接屏蔽case UART_II_RECV_RDY的話,超時也無法觸發(fā)了,不屏蔽的話又會產(chǎn)生一個數(shù)據(jù)包不完整的無效中斷,所以我將程序改成了第二章圖的樣子;這兩張圖是我現(xiàn)在的測試代碼,出現(xiàn)了圖1描述的奇怪現(xiàn)象。。。;請哪位大神幫忙看下,搞了半天了沒搞明白串口機(jī)制j_0065.gif,感謝;圖中所說的發(fā)送“AT+TEST”是指發(fā)送的“AT+TEST\r\n”



2022.08.12更新:熬夜到3點(diǎn)鐘算是有點(diǎn)理解串口工作機(jī)制了:超時中斷必須以觸發(fā)中斷為前提,如果觸發(fā)設(shè)置為4字節(jié),只發(fā)送四字節(jié)數(shù)據(jù)是會產(chǎn)生觸發(fā)中斷,也就是數(shù)據(jù)有效中斷,但不會觸發(fā)超時中斷,發(fā)送5個字節(jié)產(chǎn)生一次數(shù)據(jù)有效中斷和一次超時中斷,這樣我發(fā)送一個20字節(jié)的數(shù)據(jù)要觸發(fā)5次數(shù)據(jù)有效中斷。。。,每一次中斷都會置位串口接收標(biāo)志,也就是在原SDK中執(zhí)行了5次TMOS UART_TO_BLE_SEND_EVT。雖然有些理解了,但還是有一個問題,我們一直應(yīng)用的AT指令的問題,串口發(fā)送來的AT指令,我需要做解析才能確定是否透傳或者設(shè)置藍(lán)牙本身工作狀態(tài),所以我將觸發(fā)字節(jié)設(shè)置為1,一直接收數(shù)據(jù),判斷接收到\r\n才認(rèn)為接收完成,判斷數(shù)據(jù)是指令還是透傳數(shù)據(jù),是指令的話執(zhí)行操作,是數(shù)據(jù)的話去掉AT指令前綴,將數(shù)據(jù)一次透傳過去。但是這樣卻會導(dǎo)致不斷重啟。。。。,難受,請問根據(jù)我的項目需求,有沒有好的方案,感謝

image.png

????????????????????????????????????????????????????????????????????????????????????????????圖1 Uart數(shù)據(jù)處理函數(shù)

image.png

????????????????????????????????????????????????????????????????????????????????????????????????????圖2 Uart3中斷處理函數(shù)

只要FIFO中緩存有數(shù)據(jù)就會置位_TOUT標(biāo)志,只發(fā)送一個字節(jié)數(shù)據(jù)也會置位_TOUT標(biāo)志。如果要區(qū)分_RDY和_TOUT,以_TOUT為一幀數(shù)據(jù)接收完的提示,可以在緩存數(shù)據(jù)到達(dá)FIFO觸發(fā)點(diǎn)時,留一個字節(jié)先不接收,確保置位_TOUT標(biāo)志。參考UART1例程中斷接收方式做修改,測試如下。

caf4ee3e6c680909a9bf3f1c7a26bd6.png

c8d086dafc496ce5729fce24657f1a0.png



只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频