[問題] unbuffered UART 收資料速度

看板ASM (組合語言)作者 (滋參攻城屍)時間12年前 (2012/07/29 17:08), 編輯推噓4(4025)
留言29則, 5人參與, 最新討論串1/2 (看更多)
最近在用cypress的MCU做EVK 要把target傳來的UART字串用USB送到PC上 可是遇到一個瓶頸 cy68013a的 UART似乎沒有buffer 一旦遇上一長串的資料進來的時候 很容易就掉東掉西的 現在已經是用interrupt的方式在操作UART 權限也設到最高 還是沒辦法解決 不知道版上各位有何想法? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.0.102.88

07/29 17:09, , 1F
queue
07/29 17:09, 1F

07/29 17:12, , 2F
現在是開一個128byte的陣列 當收到\n或\r之後全部丟到usb
07/29 17:12, 2F

07/29 17:12, , 3F
endpoint去傳輸 這邊不用firmware控制 但就是來不及塞...
07/29 17:12, 3F

07/29 17:28, , 4F
你程式規劃有問題,UART是超慢設備了....
07/29 17:28, 4F

07/29 17:34, , 5F
RI進來就塞一次buffer 塞到滿或是符合條件送出 這樣應該好
07/29 17:34, 5F

07/29 17:34, , 6F
吧? 這困擾我很久了
07/29 17:34, 6F

07/29 17:36, , 7F
也不能用while(1)來收 會卡住其他東西
07/29 17:36, 7F

07/29 18:16, , 8F
我用pic18F24k50的作法是用ring buffer,不管他是不是
07/29 18:16, 8F

07/29 18:17, , 9F
end of line,只要mcu有空buf有字就丟。累積太多字丟usb
07/29 18:17, 9F

07/29 18:18, , 10F
有時候在115200以上速度丟一連串字UART會發生OVERSPEED
07/29 18:18, 10F

07/29 18:20, , 11F
因為PC處理USB的時間也是批次批次的,好像一秒才二十幾次
07/29 18:20, 11F

07/29 18:20, , 12F
(感覺上,與技術規格無關)﹍
07/29 18:20, 12F

07/29 18:26, , 13F
我虛擬出來的virtual comport大概是10ms掃一次 一次傳1k
07/29 18:26, 13F

07/29 18:28, , 14F
byte沒問題 fx2lp的USB不需要太多firmware控制
07/29 18:28, 14F

07/29 18:28, , 15F
現在想到一個問題 MCU是用3.3v target 2.8v 這樣會有關係?
07/29 18:28, 15F

07/29 18:29, , 16F
重複送同一個字串 有時候很完整 有時候會掉10byte以上....
07/29 18:29, 16F

07/29 18:39, , 17F
CPU端pull一根4k7看看吧
07/29 18:39, 17F

07/30 09:13, , 18F
收到一串資料後, 要等這串資料用USB傳回PC才能再開始收
07/30 09:13, 18F

07/30 09:13, , 19F
uart資料對不對? 對的話你需要 double buffering
07/30 09:13, 19F

07/30 09:15, , 20F
CY7C68013A的51是4T又可跑到48MHz算蠻快的了
07/30 09:15, 20F

07/31 23:20, , 21F
封包(n-1)的stop bit跟封包(n)的start bit只隔了1uS...
07/31 23:20, 21F

07/31 23:20, , 22F
68013A跟得上嗎?
07/31 23:20, 22F

08/01 09:12, , 23F
MCU的反應時間不是1uS而是10 bit time, 9600baud有1mS
08/01 09:12, 23F

08/01 09:13, , 24F
跟不跟得上要看你在這段時間中要完成多少事
08/01 09:13, 24F

08/01 21:45, , 25F
我速度是用57600 UART是採用interrupt方式 現在只要收到一
08/01 21:45, 25F

08/01 21:46, , 26F
個byte就塞進enpoint buffer裡面然後arm endpoint 漏掉的
08/01 21:46, 26F

08/01 21:46, , 27F
資料比之前少 但是還是會有遺漏 可能是因為 arm endpoint
08/01 21:46, 27F

08/01 21:47, , 28F
需要SYNCDELAY吧...... 目前還找不到辦法
08/01 21:47, 28F

08/10 16:49, , 29F
看到ring buffer勾起小弟的回憶:http://ppt.cc/sKKU
08/10 16:49, 29F
文章代碼(AID): #1G5FsE4X (ASM)
文章代碼(AID): #1G5FsE4X (ASM)