usb鼠标制作调试记录
2010-07-26 20:07:00
制作调试过程
1,串口通信硬件设计。焊接了串口通信电路实验。由于我的usb转串口线是不能配max232的。而是要配一个反向器。于是自己焊接了74ls00。并且把圈圈电路板通过飞线改了下。至此,串口通信硬件完成。
2,串口通信软硬件调试。改了改之前的串口通信程序。并且下载测试。很顺利的通过串口通信测试。
3,做了一些51外围的led及按键的软硬件测试。很顺利的通过了。
4,D12的硬件焊接。东拼西凑的把电路板连接上了,买了TSSOP的D12,开始焊接引脚间距为0.65mm的贴片ic。运用拖拉方法,我成功地焊接了D12。接着从我家的废主板上插了几个电阻焊接了下。还在淘宝买了晶振和配晶振的贴片电容。其他的基本都是用其他板子通过杜邦线相连。能省略元件的就省略。
5,下载D12的测试程序。读D12的id。结果不成功。先检查硬件,原来漏焊了一个电阻。查了一下,这个电阻一定要焊接的。于是焊完电阻后,再次测试,ok。真是兴奋啊。
6,下载usbMouse程序调试。结果不成功,一会就挂起了。那么就开始一段一段调试吧。结果发现,单片机读出的数据和usb主机发送的数据不符。多了很多位。这就奇怪了。为什么会这样呢?
a,难道数据延时,单片机读的太快了。那么我就延时后再读,可结果一样。与延时没关系。
b,难道是usb延长线的延时,导致d12多接收了些0x00?于是通过修改程序,不去读前面的哪些个0x00,程序就可以继续运行一点。但是还是有问题,这是我人为的修改程序不读前7位数据,才能使usb和d12在正常通信,但是实际他们的通信是不正常的。print显示D12接收到usb主机的请求,也返回了枚举数据,但是USB主机并没收到,又挂起了。
c,难道是D12的缓冲区发送接收数据有问题?保险起见,我不连D+和D-,我让单片机发数据到D12的缓冲区,并从缓冲区再读取数据到单片机。问题终于出现了。写入的数据和读出的数据不相符。并且很明显是一条P0.0位的数据线有问题。终于有眉目了。P0.0输出的数据总是为高。那么我先检查硬件原理及连线。硬件没问题。天呢?那么他为什么总是拉不低呢?
d,用示波器看看此位与其他位的波形吧,终于看出,此位拉低时,电压为1.76v,再也低不了。这就是此位总是显示1的原因。但是为什么电压总是拉不下来,而其它位的电压能拉下来呢?是不是焊接的排阻没焊牢。但是查了下,外围硬件焊接及杜邦线连接都是好的。测了下不运行程序与运行程序时,他们各个引脚连接的电阻阻值。发现,一运行程序,则P0.0连接的电阻的阻值就比其他位要高。但是不运行程序时,阻值则一样。怎么会这样?
e,突然有种感觉,c51芯片坏了,还好,我上次在淘宝买了2片,换了一片,大功告成。果然是c51芯片引脚有问题。
7,串口调试助手成功的显示了从usb主机发送过来的设备描述符请求。并且d12也有反映,向usb主机返回数据。但是usb主机没收到,挂起了。为什么呢?我怀疑是这根便宜的usb延长线的问题。那该怎么查啊!另外还有就是单片机把数据发给d12,d12再通过usb延长线给usb主机。那么也有可能是单片机数据没写入d12,导致设备没返回给usb主机数据。
8,调试单片机与d12之间的数据收发。根据d12缓冲区的数据格式,第一个字节为保留字,数据为0。第二个字节为数据长度。第三个字节为真正的数据。通过修改程序,多次调试,查看数据变化后,发现。一个字节为保留字,但是单片机不能向它写0x00,否则d12会自己填补第一个字节,并且把0x00作为第二个字节。难道规格书上描述错了。反正我这样改下程序,枚举过程就能读能写了。但是数据还是不稳定。有些位拉不高等问题。
9,接着再调试吧,没想到买的一个usb延长线断了。没办法,买根好点的吧,可能数据传输不稳定的现象就能解决。期待明天的usb线。
10,usb线到了。接着我把之前调试比较成功的hex文件重新烧进c51,结果发现很不稳定,一会好一会不好。尝试了好几次,决定data线不用杜邦线连接,还是把40pin排针插了,然后焊接40pin的ic座,还好上次多买了一个,现在派上用了。如何拆20pin排针?
11,网上查了下,20pin的直插排针,可以把塑料先插下,然后把排针一个个焊下。于是就用这个方法,花了点时间,终于搞定。但是孔都不焊锡堵上了。还要一个个把孔给搞出来吗?
12,尝试了下,好难搞啊,算了,40ic座就直接焊在top面。感谢圈圈板子设计的好,top和bottom都能焊接。顺利焊接完40ic座,接着把晶振和晶振电容也焊上了。查看完其他连接线。连到电脑,按下复位键后,呵呵呵~主机usb识别出了设备。此次调试宣告成功。
很有成就感,不经一番彻骨寒 哪来梅花扑鼻香。
调试总结:
曾经有4个高级工程师和我说过,编编小程序,很快就可以查出问题。这次我用上了自己编写的验证测试程序,发现在调试排查过程中真的很管用,我有潜质去做警方的侦查员,呵呵。
发现的重大问题就是d12芯片的写缓冲区的第一个字节不能写0,虽然规格书及圈圈的程序上都是写0。而我写0或者说直接烧圈圈的hex文件就是有问题了。
usb鼠标制作调试记录的更多相关文章
- [未完] Linux 4.4 USB —— spiflash模拟usb大容量存储设备 调试记录 Gadget Mass Stroage
linux 4.4 USB Gadget Mass Stroage 硬件平台: licheepi nano衍生 调试记录 驱动信息 │ This driver is a replacement for ...
- Android USB Camera(1) : 调试记录【转】
转自:http://blog.csdn.net/eternity9255/article/details/53069037 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 前言 ...
- 【Linux开发】【Qt开发】嵌入式Qt程序使用触屏或USB鼠标方式
上文<嵌入式Qt开发-移植到ARM开发板 >介绍了Qt程序的移植,本文再说下如何使开发板Qt程序使用触摸屏或USB方式进行交互. 之前刚把一个qt程序移植到arm板上成功运行显示时就开心的 ...
- 学习Linux下s3c2440的USB鼠标驱动笔记
1.ARM-Linux下USB驱动程序开发1.1.1.linux下USB配置:*********(MassStorage:存储设备)********************************** ...
- T450设置插入USB鼠标时自动禁用触摸板
刚入手T450,打字时经常碰到触摸板,很是恼火,于是求助万能的度娘,找了卡饭基佬的教程,实测可行,大家可以试试.<win7下如何设置插入USB鼠标时自动禁用触摸板>,地址:www.kafa ...
- USB鼠标过一段时间后失灵问题的修复
现象: USB鼠标计算机锁屏一段时间后,不能动了,拔下来重新插上后,又恢复正常了. 原因: 这是系统默认USB电源管理造成的.一段时间不用后,自动关闭了USB电源. 解决方法: 1.进入设备管理器 在 ...
- synaptics驱动,插入USB鼠标禁用触控板注册表
Title:synaptics驱动,插入USB鼠标禁用触控板注册表 --2010-11-01 22:21 记得以前用过一个synaptics的驱动,自带有插入USB鼠标禁用触控板的选项的,有些没有自带 ...
- Linux usb子系统(一) _写一个usb鼠标驱动
USB总线是一种典型的热插拔的总线标准,由于其优异的性能几乎成为了当下大小设备中的标配. USB的驱动可以分为3类:SoC的USB控制器的驱动,主机端USB设备的驱动,设备上的USB Gadget驱动 ...
- USB鼠标键盘数据格式以及按键键值
鼠标发送给PC的数据每次4个字节 BYTE1 BYTE2 BYTE3 BYTE4 定义分别是: BYTE1 -- |--bit7: 1 表示 Y 坐标的变化量超出-256 ...
随机推荐
- python3 使用ldap3来作为django认证后台
首先先使用ldap3测试ldap服务是否正常 我们先要拿到dc的数据,以及连接ldap的密码,还有搜索的字段(search_filter), 一般来说search_filter 这个是从负责ldap运 ...
- python机器学习包 Windows下 pip安装 scikit-learn numpy scipy
1.到PIP的目录中C:\Python34\Scripts;2. 2.1 pip安装numpy pip install numpy 2.2 pip安装sklearn pip install -U ...
- Tomcat以Daemon的方式启动(CentOS6&7)
1 前言 一直以来都觉得Tomcat以root身份运行非常不安全,故研究Tomcat如何以普通用户身份运行,以下是参考网络上的一些配置实现Tomcat以daemon方式运行于CentOS 6& ...
- kafka---->kafka stream的使用(一)
kafka stream的简单使用,这里是官方文档上面的例子. kafka的简单使用 一.启动Kafka server huhx@gohuhx:~/server/kafka_2.11-1.1.0$ b ...
- [原][openstack-pike][controller node][issue-4][horizon] dashboard access too low reasons[dashboard 访问太慢]
本文持续更新... 原因一: 访问dashboard 很慢. 输入了用户名和密码还有project后,一直处于首页状态,等很久才进入(暂且不考虑硬件.硬件暂时假设都满足条件) 首先想到的是memca ...
- flask将日志写入日志文件
import logging logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别 filename='log_new.log', # 将日志写入lo ...
- 2017-2018 ACM-ICPC Latin American Regional Programming Contest GYM101889
挺有意思的一套题,题也没有啥毒瘤了,本来是队切的结果种种原因大家全挂机了. 只补了百人题,一共7个,其他的暂时先不补了,,也不会嘛qwq H:签到 #include <bits/stdc++.h ...
- axis2与cxf区别
1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile.Axis2不支持WS-Policy,但是承诺在下面的版本支 ...
- git最佳实践之feature和hotfix分支
先来复习一波,git的最佳分支管理流程: 再简单复习各个分支: master: 主分支,主要用来版本发布. develop:日常开发分支,该分支正常保存了开发的最新代码. feature:具体的功能开 ...
- elk-Kibana设置登录认证-通过nginx转发(六)
一.kibana的登录认证问题 kibana是nodejs开发的,本身并没有任何安全限制,直接浏览url就能访问,如果公网环境非常不安全,可以通过nginx请求转发增加认证,方法如下: tips:ki ...