|
使用STM32F103X的USB實(shí)現(xiàn)虛擬串口,在調(diào)試過程中,發(fā)現(xiàn)發(fā)送的數(shù)據(jù)小于64字節(jié)或者大于64字節(jié)的時(shí)候,數(shù)據(jù)都能正常的發(fā)送,但是當(dāng)數(shù)據(jù)等于64字節(jié)時(shí)數(shù)據(jù)就發(fā)送不出去。
這個(gè)主要是在描述符里,我們規(guī)定了一幀數(shù)據(jù)的大小是64字節(jié),所以當(dāng)待發(fā)送的數(shù)據(jù)小于64字節(jié)時(shí),系統(tǒng)會(huì)認(rèn)為數(shù)據(jù)發(fā)送完畢,這樣數(shù)據(jù)就發(fā)送出去了,
當(dāng)數(shù)據(jù)大于64字節(jié)且不是64的整數(shù)倍時(shí),驅(qū)動(dòng)將數(shù)據(jù)幀拆分成64+64+....+x(小于64)當(dāng)?shù)搅俗詈笠粠瑫r(shí),由于該幀小于64字節(jié),驅(qū)動(dòng)認(rèn)為數(shù)據(jù)發(fā)送完畢,結(jié)束發(fā)送。
當(dāng)數(shù)據(jù)剛好等于64的證書倍時(shí),驅(qū)動(dòng)認(rèn)為后續(xù)還有數(shù)據(jù),所以只是將這些數(shù)據(jù)存入緩沖區(qū)中,并未發(fā)送,所以對(duì)用戶來說,就感覺到數(shù)據(jù)沒有傳輸下去,一般這種情況下的處理方法是數(shù)據(jù)發(fā)送完畢后,發(fā)送一個(gè)空包結(jié)束發(fā)送。
|
|