參照官網(wǎng)的例程,我使用查詢的方式,發(fā)送數(shù)據(jù)正常,接收數(shù)據(jù)只能接收不正常,5個(gè)字節(jié)的數(shù)據(jù),發(fā)送OK,往回傳的時(shí)候只能收到1-2個(gè)數(shù)據(jù),例如發(fā)1,2,3,4,5,正常收也是1,2,3,4,5,但是實(shí)際收到的是第一次1,2,0,0,0? 第二次1,2,0,0,0 第三次5,2,0,0,0?第四次5,2,0,0,0,但是實(shí)際收到的是第五次1,2,0,0,0? 第六次1,2,0,0,0。如此重復(fù),特地讀取FCR寄存器數(shù)據(jù)查看,0x5c和0xc7一次交替。求教
您好,CH438的FCR寄存器是只寫寄存器,您讀取的應(yīng)該是IIR寄存器(中斷識(shí)別寄存器),其中IIR所讀的意義可以在手冊(cè)查到。
當(dāng)接收的字節(jié)數(shù)到設(shè)置的FIFO觸發(fā)點(diǎn)時(shí),產(chǎn)生接收數(shù)據(jù)可用中斷,可以讀取相應(yīng)的數(shù)據(jù)。如果沒(méi)有到達(dá)FIFO觸發(fā)點(diǎn),且在超過(guò)四個(gè)數(shù)據(jù)的時(shí)間內(nèi)未收到下一個(gè)數(shù)據(jù),就會(huì)產(chǎn)生一個(gè)接收數(shù)據(jù)超時(shí)中斷,讀取的就是沒(méi)有到達(dá)FIFO觸發(fā)點(diǎn)的數(shù)據(jù)。
所以“接收數(shù)據(jù)可用中斷”“接收數(shù)據(jù)超時(shí)中斷”兩種中斷狀態(tài)都需要讀取數(shù)據(jù)。您可以檢查一下是否在相應(yīng)的中斷時(shí)讀取了數(shù)據(jù)。
謝謝指導(dǎo),已經(jīng)能正常通信了,但是使用了一段時(shí)間,頻繁的通電/斷電后,會(huì)出現(xiàn)類似死機(jī)的情況,斷電一段時(shí)間后才能從新用,用示波器看了晶振,一直起振了的。用示波器查看TX引腳一直是高電平,我用的是51內(nèi)核單片機(jī),3.3V電源,3.6864Mhz的晶振,CH438用的是?22.1184MHz的晶振,波特率都是 19200,它們之間的通信是直接地址方式,WR, RD,CS, DATA,ADDR等涉及到等待時(shí) 都是 等待3個(gè)空指令,NOP,NOP,NOP,
目前是能用,就是時(shí)好時(shí)壞,努力調(diào)試中,有類似情況的朋友請(qǐng)指導(dǎo)下,官方的大神看到的話麻煩指導(dǎo)指導(dǎo),網(wǎng)上查詢了下資料,有的朋友說(shuō)是速度太快了,明天再試試,延長(zhǎng)延時(shí)試試。