scoolboys
驱动牛犊
驱动牛犊
  • 注册日期2009-03-09
  • 最后登录2009-04-20
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望111点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:926回复:1

请教:最基础的USB连接&答疑。

楼主#
更多 发布于:2009-03-09 17:18
       本菜鸟(仅限于用51做产品不用仿真器而已)在论坛逛了好久,大概了解了USB最基础的东西,自己做了一块板子,功能就是:把USB键盘差到我的板子上以后,当按下某个键以后,我可以识别并显示出来,识别与显示的程序我没问题,现在就卡到了USB的连接上。
    我用的是CH375芯片做HOST,51做MCU,硬件搭好(用的是UART连接方式,外加一个INT#,三线方式连接51,因此51串口需要设置成方式3,第九位用来控制命令与数据的转换)了以后开始测试命令代码(因为功能简单,因此没用库文件)
    首先,给375命令01H,收到0B7H,版本号应该为37H,说明硬件链接没问题。继续测试;
    然后,给375命令06H,数据任意,然后返回一个按位取反的数据,至此足予说明硬件没问题了吧。
    接下来开始连接,不知道步骤对不对,有错误希望指正!多谢!!!
    先设置工作模式:给375命令15H,数据05H,然后把USB键盘插上后,给375命令15H,数据07H,返回51H,说明操作成功;给375命令15H,数据06H,返回51H,说明操作成功。至此模式已经搞定,但是ACT#脚还是高电平,说明未连接,因为375的PDF里只有说明对存储器的初始化命令,而我要用的是键盘,没有必要用那个初始化命令吧?
    我就卡到这里了,用16H命令检查USB状态,返回16H,说明是未连接状态;用22H获取中断状态,返回06H,说明是从睡眠中唤醒时间,这就怪了,也没有进入睡眠啊,唤醒个鸟啊!
    之后又仔细看了下PDF文档,觉得应该是因为没有使用事务的关系吧,接着用命令4FH,数据0DH,发起控制传输;然后命令4FH,数据09H,执行in事务=》按键后还是没反映,读取USB状态为16H,依然未连接提示,获取中断状态为24H,不知道啥意思。读取缓冲区数据为“00”。
    我知道我的这个流程肯定有问题,但是我不知道是哪里有问题,所以请高人来指点一二,我只是想达到一个"USB桥梁"的作用,只要能握上手就OK了,然后我就用USB传输数据,我的HOST只是接收键盘发来的数据,就这么简单,搞了一个星期了也没搞定,唉!无语……
scoolboys
驱动牛犊
驱动牛犊
  • 注册日期2009-03-09
  • 最后登录2009-04-20
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望111点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-03-10 09:06
我说版主啊,你是不屑还是不懂啊?我晕倒!
游客

返回顶部