基于CH372芯片實(shí)現(xiàn)計(jì)算機(jī)和單片機(jī)通訊是,發(fā)現(xiàn)如果單片機(jī)過很長時間后給計(jì)算機(jī)上傳數(shù)據(jù),計(jì)算機(jī)則無法成功讀取數(shù)據(jù)。那我該如何解決?
會不會是CH372被復(fù)位了,無法讀取時,設(shè)備還在嗎?
什么時候讀取的數(shù)據(jù)?
設(shè)備當(dāng)然還在,只是執(zhí)行讀語句,條件不成立,無法讀取上傳數(shù)據(jù).
說得不清楚,也許是你串口就沒搞通的問題,或者地址分配不對,緩沖區(qū)沒清空,或者讀扇區(qū)數(shù)據(jù)就不對,你應(yīng)該把程序執(zhí)行到哪了告訴我們。
我的程序是計(jì)算機(jī)通過CH372發(fā)送一個命令給單片機(jī),單片機(jī)能正確接受到這個命令,并執(zhí)行命令,然后再將運(yùn)行結(jié)果上傳給計(jì)算機(jī)。此時計(jì)算機(jī)讀取上傳數(shù)據(jù)會有時成功、有時不成功讀取上傳數(shù)據(jù)。
你拿WCH網(wǎng)上的TEST程序先在你的板子上運(yùn)行一段時間,會不會受干擾導(dǎo)致傳輸失敗,在保證硬件沒問題后,你還可以用DEBUG372來調(diào)你的下位機(jī)程序,這樣分開來試就能查出具體問題在哪,要不然你說傳數(shù)據(jù)不穩(wěn)定,可能的問題很多。
首先用例子調(diào)一下,看看硬件沒有問題,再試試自己的程序
我用WCH網(wǎng)上的TEST程序在我的板子上運(yùn)行一段時間,一切多正確。我現(xiàn)在有點(diǎn)懷疑是不是與下位機(jī)收到命令經(jīng)過一段時延,再向計(jì)算機(jī)上傳數(shù)據(jù);計(jì)算機(jī)采用查詢方式查看上傳數(shù)據(jù)。如果時延時間越短,那么計(jì)算機(jī)能正確收到上傳數(shù)據(jù);否則,計(jì)算機(jī)不能收到的上傳數(shù)據(jù)是錯誤的。
這么和我的很相似啊,就是搞不定。 要傳256字節(jié),總是要分好幾次才能全讀完 CH375ReadData隔多少時間查詢一次阿,我總懷疑單片機(jī)程序中延時太長,導(dǎo)致CH375ReadData某次讀時 單片機(jī)還沒有上傳完一個數(shù)據(jù)包,即以0數(shù)據(jù)上傳,觸發(fā)CH375ReadData退出讀取。
你要上傳256字節(jié),你可以試試有計(jì)算機(jī)多次調(diào)用 mUploadData(iBuffer, mLength)程序,我的程序就是這樣處理,從而實(shí)現(xiàn)接收下位機(jī)26000個字節(jié)的。
這是什么函數(shù)???在CH375dll.h中沒看到啊