搜索
bottom↓
回复: 10

v-usb 通讯错误, 方便的朋友帮忙测一下.

[复制链接]

出0入0汤圆

发表于 2012-10-13 02:30:38 | 显示全部楼层 |阅读模式
试了几个板子都会有错误, 能换的元件都换了还是存在错误. 不知道是不是自己布线问题还是其它什么原因.

usbasp atmega8 的测试结果 说明上下位机的代码没什么问题
测试 1000 次完成 错误 0 次 错误率 0.00/100
共计读写 128000 字节 用时 10.13 秒 平均速度 12.35 kb 每秒

测试 10000 次完成 错误 0 次 错误率 0.00/100
共计读写 1280000 字节 用时 102.58 秒 平均速度 12.19 kb 每秒


程序很简单
下位机就是接收数据存入ram, 之后将ram的数据发送回上位机 模拟usbasp的操作
上位机就是填充一个128字节的随机数组给下位机发过去然后在接收回来效验是否正确

开发环境
下位机winavr+CodeBlocks
上位机delphi 7

悲剧的测试结果
测试 1000 次完成 错误 12 次 错误率 1.20/100
共计读写 128000 字节 用时 9.02 秒 平均速度 13.86 kb 每秒

测试 1000 次完成 错误 17 次 错误率 1.70/100
共计读写 128000 字节 用时 10.64 秒 平均速度 11.75 kb 每秒

测试 1000 次完成 错误 8 次 错误率 0.80/100
共计读写 128000 字节 用时 9.02 秒 平均速度 13.86 kb 每秒

...

希望有LGT8F08A_USBISP的朋友帮忙测一下

ISP120806下位机固件与上位机


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-10-13 09:00:50 | 显示全部楼层
貌似楼主没给出电路,要注意USB信号线的电压最好不要超过3.6V
头像被屏蔽

出0入0汤圆

发表于 2012-10-13 10:13:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2012-10-13 14:54:46 | 显示全部楼层
电路可以参考 LGT8F08A_USBISP_V1_20120429.pdf 最少只需要使用3个io

现在想知道是官方移植的usbdrv问题还是自己布线引起的问题

出0入0汤圆

发表于 2012-10-14 17:51:15 | 显示全部楼层
模拟的终究不是真的,有问题很正常

出0入0汤圆

 楼主| 发表于 2012-10-16 19:32:58 | 显示全部楼层
有问题不应该正常, 虽然是模拟的毕竟也是开源工程.  也有不少的流行应用.
所以出了问题还是要先在自身上找.

这几天有空就折腾折腾
按文档里说尝试在D+上增加1M的上拉或下拉电阻 没用
瞎改了usbdrvasm12.inc asmcommon.inc 结果是要不还是一样要不干脆不识别了 太难看不懂
加滤波电容等...都试过结果还是一样

现在的测试结果是
写入一次128字节数据, 之后只调用usbFunctionRead在上位机效验, 10000次0错误
找一个写入读取回来出错的数组 例如

9A 59 F9 18 0B EF 6C 45 A9 24 02 A5 E9 B8 25 10         歒?.飈E?.ラ?.
7D 80 28 F2 6C 8F F1 1E 1D 76 DC A0 E7 FC F2 49         .€.騦忨..v軤琰騃
D6 F0 D0 A5 AE 18 DD 6C 56 49 A6 BE 3A 39 7A BA         逐啸?輑VI.9z?
52 9B B0 29 D6 78 23 65 C8 F8 C2 AF EB 01 61 91         R洶.謝.e萨炉?a?
C8 57 0D 0A CF 32 93 9D CE 63 11 8A 2A 90 A3 B6         萕..?摑蝐.?悾?
AF 14 9C 1A E4 88 D0 BD 17 17 DC 87 B3 00 84 7C         ??鋱薪..車??
8D 08 7B 23 26 B4 3D 2D 19 7D CE AB 49 71 81 4E         ?...?...潍Iq丯
66 E0 19 8F DF 10 EB C6 82 14 DA 76 21 45 3F 5F         f?忂.肫?趘.E..

执行写入128字节读取128字节 错误率马上就上来了 有趣的地方是
读取出来效验错误的时候都是一个固定的字节 固定的值...

测试 1000 次完成 错误 61 次 错误率 6.10/100
共计读写 128000 字节 用时 10.78 秒 平均速度 11.59 kb 每秒

这61次错误都是一样的可重复的而不是随机的
效验失败, 位置 59 值 chk:AF[10101111] dat:BF[10111111]
DataLen 128
9A 59 F9 18 0B EF 6C 45 A9 24 02 A5 E9 B8 25 10         歒?.飈E?.ラ?.
7D 80 28 F2 6C 8F F1 1E 1D 76 DC A0 E7 FC F2 49         .€.騦忨..v軤琰騃
D6 F0 D0 A5 AE 18 DD 6C 56 49 A6 BE 3A 39 7A BA         逐啸?輑VI.9z?
52 9B B0 29 D6 78 23 65 C8 F8 C2 AF EB 01 61 91         R洶.謝.e萨炉?a?
C8 57 0D 0A CF 32 93 9D CE 63 11 8A 2A 90 A3 B6         萕..?摑蝐.?悾?
AF 14 9C 1A E4 88 D0 BD 17 17 DC 87 B3 00 84 7C         ??鋱薪..車??
8D 08 7B 23 26 B4 3D 2D 19 7D CE AB 49 71 81 4E         ?...?...潍Iq丯
66 E0 19 8F DF 10 EB C6 82 14 DA 76 21 45 3F 5F         f?忂.肫?趘.E..


DataLen 128
9A 59 F9 18 0B EF 6C 45 A9 24 02 A5 E9 B8 25 10         歒?.飈E?.ラ?.
7D 80 28 F2 6C 8F F1 1E 1D 76 DC A0 E7 FC F2 49         .€.騦忨..v軤琰騃
D6 F0 D0 A5 AE 18 DD 6C 56 49 A6 BE 3A 39 7A BA         逐啸?輑VI.9z?
52 9B B0 29 D6 78 23 65 C8 F8 C2 BF EB 01 61 91         R洶.謝.e萨驴?a?
C8 57 0D 0A CF 32 93 9D CE 63 11 8A 2A 90 A3 B6         萕..?摑蝐.?悾?
AF 14 9C 1A E4 88 D0 BD 17 17 DC 87 B3 00 84 7C         ??鋱薪..車??
8D 08 7B 23 26 B4 3D 2D 19 7D CE AB 49 71 81 4E         ?...?...潍Iq丯
66 E0 19 8F DF 10 EB C6 82 14 DA 76 21 45 3F 5F         f?忂.肫?趘.E..

正确数据: C2 AF 11000010 10101111
错误数据: C2 BF 11000010 10111111

随机填充数据写入读取时 出错的数据基本都是低4位为1的...



继续求高手指教


出0入0汤圆

 楼主| 发表于 2012-10-16 21:38:26 | 显示全部楼层
使用 checkData[i] := Random($FF) and $F7; 填充数据的测试结果
测试 100000 次完成 错误 0 次 错误率 0.00/100
共计读写 12800000 字节 用时 1050.95 秒 平均速度 11.89 kb 每秒
总感觉是usbdrvasm12.inc部分处理有问题 不懂usb协议....

出0入0汤圆

 楼主| 发表于 2012-10-23 22:39:24 | 显示全部楼层
使用24MHz晶振的测试结果
写入128字节随机数, 读取128字节随机数
libusb version dll: 1,2,6,0
USB device vendor=0x16C0 product=0x5DC
打开usbasp成功.
libusb version drv: 1,2,6,0
输入测试次数: 1000000
输入数据块大小(1-128): 128
测试 1000000 次, 每次 128 字节.
是否需要检测写入数据(0=不检测, 1=检测): 1
测试 1000000 次完成 错误 0 次 错误率 0.00/100
共计读写 128000000 字节 用时 6101.16 秒 平均速度 20.49 kb 每秒

头像被屏蔽

出0入0汤圆

发表于 2012-10-24 09:20:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2012-12-18 18:37:36 来自手机 | 显示全部楼层
貌似没有24Mhz的工程模板,是不是要修改源码才能用?

出0入0汤圆

发表于 2012-12-18 19:46:59 来自手机 | 显示全部楼层
USB采用了NRZI(Non Return to

Zero Invert,不归零就反向)的编码方式,无须

同步的时钟信号也能产生同步的数据存取。NRZI

的编码规则是,当数据位为“1”时不转换,

为“0”时再作转换。如图1所示,显示了NRZI编码

的范例。位传输的顺序以LSB(最低位)为优

先。

NRZI编码的数字再生回路的数字逻辑电路如

图2所示。其相对应的编号变化如图3所示。这

样,接收与传输器两端的机制中,就无须先送出

分离的时钟信号,或者在每一个字节中添加起始

或结束位(如RS - 232)。如果用户使用示波

器来观察这种USB数据,将会发现它不像其他

的接口,可以以逻辑准位来读取这些传送或接收

的位。

图2 USB的NRZI再生回路的数字逻辑电路图

图3 相对A、B、C位置NRZI再生回路的信号关联图

这样的编码方式会遇到一个很严重的问题:

若重复相同的“1”信号一直进入时,就会造成数据

长时间无法转换,逐渐地累积而导致“塞车”的状

况,使得读取的时序就会发生严重的错误。因

此,在NRZI编码之间,还需执行所谓的位填塞

(bits-tuffing)的工作。如图4(a)所示,若原

始的串行数据中含有连续6个“1”位,就须执行位

填塞的工作。此工作如图4(b)所示,就在其后

填塞一个“0”位。但相对地在NRZI编码的过程

中,对这连续的6个“1”执行,如图4(c)所示。

图4 NRZI译码的过程

因此在发送端进行数据传输之前,须先执行

位填塞和NRZi编码的工作。相对的,在接收端进

行数据接收之前,就必须先执行NRZI译码,然后

再做位反填塞(unbit-tuffing)的工作。这一部

分的电路会通过USB芯片中的SIE(串行接口引

擎)来实现。

我猜是连续的1导致时钟失步出现误码
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 06:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表