查看: 1174|回复: 0
打印 上一主题 下一主题

为 STM8 USB 再添一把火 —— 调试通过的IAR工程(VUSB)

[复制链接]
跳转到指定楼层
沙发
发表于 2016-5-17 18:37:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码基于坛友aammoo的帖子

"STM8 USB 这把火应该可以烧起来了, 大家一起来颤抖"
http://www.amobbs.com/thread-5586352-1-1.html

移植到IAR编译环境,调试通过。
原理图请参阅上面帖子里坛友aammoo代码托管github里的压缩包。

IAR版本1.41.1。

移植的过程中走了不少弯路。由于对STM8S不太熟悉,Option Byte没有配置,接收始终进不了中断,折腾了好久。

在此提醒大家,一定记得配置Option Byte的AFR0,使能PC6,PC7的Alternate Function。

Option Byte在IAR里貌似不能配置,我是通过STVD套件里的ST Visual Programmer配置的。

STM8S的TIM1好复杂,到现在没有搞清楚。原作者对于接收代码设计得很巧妙,大致是由USB同步信号的第一个沿触发定时器开始计数,同时产生中断,在中断里读取计数器的值,再根据计数值跳过适当数量的NOP,平衡不同指令引起的中断时间差。

该代码TX部分的时序做得非常完美。
RX部分的冗余度不够大,当然RX难度比TX大很多,而且没法直接观察。
我测试出的结果,RX只有两个NOP的范围可以正常工作。

大家调试的时候,如果不能正常识别设备,增加或减少汇编文件usb_rx_c.s里L_Delay_Begin标号后的NOP数量应该就可以了。

附件是7z格式,因为论坛不支持7z附件,请下载后手动更名为7z:


编辑添加的内容:

这个工程是基于坛友aammoo的工程移植而来,程序功能没有作任何更改。
这是个USB HID设备,免驱动,模拟一个USB鼠标,在屏幕上随机跳动。

关于IAR编译软件,我是以前从坛子里搜索的,刚才测试了下链接,貌似已经失效。
其实你可以自己创建新工程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

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