CH563的串口問(wèn)題

問(wèn)題1:示例中,怎么只有ch563啟用FIFO發(fā)送的例子,沒(méi)有啟用FIFO接收的例子呢?

問(wèn)題2:我用示例中的代碼,串口1,。

? ? while(1){

? ? ? ? RcvNum? = Seril1Rcv( rcvbuf );? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 等待接收數(shù)據(jù),并通過(guò)串口1發(fā)送出去 */

? ? ? ? Seril1Send( rcvbuf, RcvNum );

? ? }

為什么我向芯片發(fā)送數(shù)據(jù)A1 A2 A3后,芯片不斷定地返回A1 A2 A3,應(yīng)該是只返回一次才對(duì)呀,。正常情況下,讀取了芯片接收緩存區(qū)的數(shù)據(jù)后應(yīng)該是清零了,為什么不會(huì)自動(dòng)清零呢,示例中也沒(méi)有找到可以手動(dòng)清緩存的代碼。感覺(jué)這串口還不如51單片機(jī)人性化,怎么都不能清掉接收緩存里的數(shù)據(jù)。

問(wèn)題1:只要使能串口的FIFO,數(shù)據(jù)接收就是進(jìn)入FIFO的。參考UART1_INT例子,是在中斷函數(shù)中去處理的。且串口兼容 16C550,有很多處理方式可以借鑒。UART1中的Seril1Rcv其實(shí)就是FIFO模式接收的

問(wèn)題2:如果是UART1例子中,接受完數(shù)據(jù)之后循環(huán)能夠一直運(yùn)行,觀察Seril1Rcv函數(shù)可知接收方式是有數(shù)據(jù)就處理,沒(méi)數(shù)據(jù)就退出,所以Seril1Send能夠一直被調(diào)用,需要再增加邏輯控制


后來(lái)把波特率從115200改成9600就正常了。也不知道是什么原因,反正不能理解。


不同波特率并不會(huì)造成類(lèi)似的結(jié)果,建議在檢查一下代碼邏輯


搞不清楚,反正就是挺怪。9600就是正常的,用115200就不行


如果沒(méi)有修改底層代碼,那么不論波特率是多少,都應(yīng)該如我所說(shuō),這個(gè)while循環(huán)就是會(huì)一直發(fā)送數(shù)據(jù)才對(duì)。

可以把代碼發(fā)到wsh@wch.cn幫你看一下

注明個(gè)人信息


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

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