|
发表于 2006-8-22 13:17:33
|
显示全部楼层
我试过了, 不稳定
我的是Win2k professional+SP4, M8烧的是下载包里提供的hex文件, M8插在面包板上.
测试时把M8的Rx和Tx相连, 然后用超级终端打开这个东东虚拟的串口, 开始还可以, 但是发了一定量(但是也不固定)的数据后, 超级终端里不回显. 坚持不懈的发, 后来回显的是前面发送的内容. 关闭串口重新打开也是如此, 只有从USB口断开或者M8复位才行. 而且把stk500, jtag的Hex烧到M16里, 通过这东东 AVRStudio 也检测不到. 分析工具检测表明, 确实是没有回传数据.
下回我试一下烧两个M8, 让这两个M8互相通信, 看看稳定性如何.
就USB协议来说, M8工作在12M是不够快的. 虽然有AVR309成功的范例, 但是前提条件是通信线路质量够好, 因为这里的CDC类还有AVR309都没有做CRC校验. 如果通信受干扰, 通信肯定出问题.
我的E文不好, 阅读USB协议非常的困难, 大致意思是: USB设备收到USB host的某些包, 是需要做ACK, NAK或其它的应答的. 如果CRC检验出错, 则不做任何应答.12M的M8, 只有时间接收一个USB通信包, 来不及做检验, 只能假装接收的数据是好的, 匆匆忙忙做了应答(熟悉USB协议的帮我纠正一下). 我还没有看缓冲处理那里的代码, 不知道这个CDC类会不会有缓冲溢出等问题(上面不是有回显滞后的现象吗?).
我本来打算为AVR309写一个串口驱动, 但是觉得实现一个CDC Frame更有意思(学习AVR嘛, 如果成功的话, 估计比cp2102等都好用), 因此在阅读USB协议文档. 此间看到这个帖子, 然后试了一下, 还大致浏览了一下它的代码.得上上述初浅的结论.不对还请诸位指出----先谢了.
如果armok提供c5131片子邮购的话, 大家自己做USB to UART倒不错. Atmel有一个USB2.0的CDC范例. 这东东的稳定性应该是不错的, 因为它的USB通信是硬件完成的. 其它片子如PIC也提供这样的范例.
6楼的驱动是多余的, 它实现的是标准的CDC类, Windows内置驱动, 不过需要下载包里的inf文件. |
|