单击这里下载本实验程序:http://bbs.21ic.com/upfiles/img/20093/200938205820165.rar
让圈圈休息一下,接下来将会把以前更多的USB程序移植过来,哈哈~~~
经过近2天的忙活,圈圈的第四个AT91SAM7S64程序终于跑起来拉。
这是一个简单的USB键盘测试程序,插到电脑上将显示一个USB键盘。
按键功能分布如下:
K1:Caps Lock键 K2:Num Lock键 K3:字母a键
K6:左Ctrl键 K5:左Shift键 K4:数字1键
LED2为NUM LOCK灯,LED3为CAPS LOCK灯。
按键使用定时器1产生5ms周期的中断进行扫描。当开关动作时,
同时会在LCD屏幕上显示相应的键。
本程序所用的实验平台是21IC的古道热肠设计的“DIY优盘开发板”,
详细的原理图可以去古道热肠的blog下载。
本程序由《圈圈教你玩USB》中的USB键盘程序移植而来,由于所
使用的USB芯片不一样,因而底层函数区别较大,很多地方做了修改。
程序依然使用原来的查询模式,通过查询中断寄存器来判断是否需要
对相应的端点做处理。当然,如果你感兴趣的话,也可以改成中断方式
来处理。在config.h文件中可以打开调试信息,通过串口0显示详细的
调试信息。
端点1作为中断输入端点,返回按键数据;端点2作为中断输出端点,
用来发送LED状态。
AT91SAM7S64芯片的USB部分比较特殊,有很多地方需要注意。
例如UDP_CSRx寄存器,在操作时要特别注意,需要等待数据写入。
而UDP_FADDR(地址寄存器)的使用也要注意,应该是在发送完0长度
的状态数据包后才能往该地址写入实际设置的地址,然后再设置
UDP_GLB_STAT寄存器中的FADDEN为1。而像D12这样的USB芯片,则
刚好相反,应该先写地址,再返回0长度的状态包,当主机用ACK确认
这个状态包时,芯片会自动启用新地址。圈圈在调试这个芯片的设置
地址阶段时,费了很多时间...另外还要注意的是端点的使能操作。
应该在收到非0的设置配置请求后,才对非0端点使能。否则事先初始化
好的端点,在收到总线复位时,会复位到非使能的状态。圈圈在这个
问题上也费了不少时间,老是无法正确发送出数据(状态寄存器显示
发送完毕了,但是实际上主机没收到数据)。另外该芯片的端点是单
向,只能配置它为输入或者输出,因此总共也就只有3个非0的端点可用。
不像D12,端点1和端点2都是双向的,可以同时有4个非0端点。另外还
需要注意端点1和2的双缓冲机制,在清除端点缓冲区满标志时要自己决定。
共1条
1/1 1 跳转至页
圈圈的第四个AT91SAM7S64测试程序横空出世~~~USB键盘实现~~~
关键词: 圈圈 四个 AT91SAM7S64 测试 程序 横
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】智能可穿戴设备AR/VR如何引领科技新潮流! | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? |
打赏帖 | |
---|---|
【换取手持数字示波器】N32G430点亮数码管与串口打印、ADC被打赏40分 | |
老胖子聊电路--分析一个反馈电路被打赏50分 | |
【换取手持数字示波器】+点亮WS2812RGB灯被打赏50分 | |
【换取手持数字示波器】+线性调整器理论知识分享被打赏40分 | |
放大↔震荡被打赏50分 | |
【换取手持数字示波器】RTduino驱动ssd1306+sht31温湿度计被打赏40分 | |
【换取手持数字示波器】称植国产开源TobudOS到雅特力AT32F425被打赏40分 | |
【分享评测,赢取加热台】+Telink-泰凌微电子B91点灯篇被打赏20分 | |
【换取手持数字示波器】+精英板驱动LCD屏被打赏50分 | |
【换取手持数字示波器】+DFR0216全彩灯带WS2812示例分享被打赏50分 |