各位大俠們,你們好!向您們請教點問題:在用CH372芯片發(fā)送數(shù)據(jù)時,發(fā)送小于64字節(jié)的可以直接發(fā)送或接收,但大于64字節(jié)的會分多次傳送,例如PC向MCU發(fā)送150字節(jié)數(shù)據(jù),分3次發(fā)送,2次64字節(jié),一次22字節(jié),MCU在讀取數(shù)據(jù)時,第一次讀取64字節(jié)的數(shù)據(jù),可是怎么判斷接下來的64字節(jié)數(shù)據(jù)和前64字節(jié)的數(shù)據(jù)是一起的?同理MCU向PC發(fā)送數(shù)據(jù)時,PC機怎么知道上傳的數(shù)據(jù)是不是一起的?
我們一次中斷完成之后,你是需要讀取數(shù)據(jù)長度的,最長的你讀取到的數(shù)據(jù)長度是64字節(jié),然后循環(huán)的讀取64字節(jié)的數(shù)據(jù),讀取完成之后,在發(fā)送一包數(shù)據(jù)的話,又會產生一個中斷,你再讀取數(shù)據(jù)長度,這個時候你按照上面的步驟來讀取數(shù)據(jù),如此循環(huán)三次就可以把數(shù)據(jù)全部讀取完.
PC是順序下發(fā)的,怎么會不是接下來的64個字節(jié)呢?第一次64發(fā)完后,單片機讀完后,PC接著去發(fā)第2包數(shù)據(jù),同樣MCU讀完后發(fā)第三包,依次下去,肯定是順序的.除非PC發(fā)的不是順序的.
這個是需要你自己在PC與MCU之間規(guī)定一種通信協(xié)議,把150字節(jié)數(shù)據(jù)封裝成PC和MCU都認識的數(shù)據(jù)包。 下載CH372EVT.ZIP,參考\CH372EVT\PUB\DEMO,這個例程的上下位的數(shù)據(jù)傳輸是有協(xié)議的