搜索
bottom↓
回复: 78

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

  [复制链接]

出0入25汤圆

发表于 2014-7-29 16:36:07 | 显示全部楼层 |阅读模式
本帖最后由 hecat 于 2014-7-29 22:12 编辑

代码基于坛友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编译软件,我是以前从坛子里搜索的,刚才测试了下链接,貌似已经失效。
其实你可以自己创建新工程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2014-7-29 16:40:09 | 显示全部楼层
沙发。不顶不行。

出0入0汤圆

发表于 2014-7-29 16:57:44 | 显示全部楼层
关注中,谢谢分享

出0入0汤圆

发表于 2014-7-29 16:59:19 | 显示全部楼层
关注很久了,终于离楼主这么近

出0入0汤圆

发表于 2014-7-29 17:03:13 | 显示全部楼层
关注中,谢谢分享                                                                                                         

出0入90汤圆

发表于 2014-7-29 17:05:53 | 显示全部楼层
顶。。。
另外,由于流水线和对齐的影响,NOP的调整不一定会影响到时序

出0入0汤圆

发表于 2014-7-29 17:33:34 | 显示全部楼层
这个要顶起来

出0入0汤圆

发表于 2014-7-29 18:06:49 | 显示全部楼层
lz你好,有1.41.1的安装文件吗?我的1.3.1无法打开项目

出0入0汤圆

发表于 2014-7-29 20:47:14 | 显示全部楼层
楼主简单介绍下怎么用吧~ 这个不需要驱动程序吗?还是直接cdc虚拟成串口?

出0入0汤圆

发表于 2014-7-29 21:53:19 | 显示全部楼层
本帖最后由 leifeng 于 2014-7-29 21:54 编辑

经过测试可行,传个hex吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-7-29 21:55:13 | 显示全部楼层
关注中,谢谢分享           

出0入25汤圆

 楼主| 发表于 2014-7-29 22:08:41 | 显示全部楼层
embeddev_1 发表于 2014-7-29 20:47
楼主简单介绍下怎么用吧~ 这个不需要驱动程序吗?还是直接cdc虚拟成串口? ...

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

出0入25汤圆

 楼主| 发表于 2014-7-29 22:09:36 | 显示全部楼层
aammoo 发表于 2014-7-29 17:05
顶。。。
另外,由于流水线和对齐的影响,NOP的调整不一定会影响到时序

是的,忘记了STM8S是32位取指。

出0入25汤圆

 楼主| 发表于 2014-7-29 22:10:34 | 显示全部楼层
leifeng 发表于 2014-7-29 18:06
lz你好,有1.41.1的安装文件吗?我的1.3.1无法打开项目

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

出0入0汤圆

发表于 2014-7-30 07:47:42 来自手机 | 显示全部楼层
这个好,谢谢

出0入25汤圆

 楼主| 发表于 2014-7-30 09:15:06 | 显示全部楼层
对于IAR for STM8S,官方有8k代码限制版可用,不限使用时间。STM8S003也就只有8K flafh,等于是免费正式版了。可以从IAR官方自助申请8k代码限制版license。

出0入0汤圆

发表于 2014-7-30 09:18:12 | 显示全部楼层
辛苦了,谢谢分享,这是个好东西呀

出0入0汤圆

发表于 2014-7-30 09:29:56 | 显示全部楼层
似乎很不错啊

出0入0汤圆

发表于 2014-7-30 09:37:45 | 显示全部楼层
测试OK! win7 32bit 平台!楼主威猛!

出0入0汤圆

发表于 2014-7-30 09:40:42 | 显示全部楼层
顶楼主,关注好久了

出0入0汤圆

发表于 2014-7-30 09:41:09 | 显示全部楼层
顶楼主,关注好久了                                                                  

出0入0汤圆

发表于 2014-7-30 10:17:52 | 显示全部楼层
问问楼主,USB  HID  可以用来做 免驱的 鼠标 键盘 还可以 做点 什么 功能呢??

出0入0汤圆

发表于 2014-7-30 12:11:26 | 显示全部楼层
楼主威武  造福人类啊

出0入0汤圆

发表于 2014-7-30 13:52:48 | 显示全部楼层
等到花儿也谢了,千呼万唤始出来,好!

出0入0汤圆

发表于 2014-8-1 11:36:36 | 显示全部楼层
能做成一个USB转SPI或UART或I2C就更好了!

出0入0汤圆

发表于 2014-8-1 15:13:07 | 显示全部楼层
leifeng 发表于 2014-7-29 21:53
经过测试可行,传个hex吧

用这个hex,我在XP下也可以了

出0入0汤圆

发表于 2014-8-1 15:18:52 | 显示全部楼层
经过耐心测试,,手机和  MAC无法识别

出0入25汤圆

 楼主| 发表于 2014-8-1 22:01:35 | 显示全部楼层
这个代码的确还存在一些问题。

我测试就发现在WIN2000下无法识别;在XP和WIN7下,不断电二次插入,系统也不能正常识别。

这有可能是我移植的时候画蛇添足引起的,也可能是原代码就有问题。

在楼主位,我对代码的一些理解也许有误,由于精力和能力有限,算是给大家开个头吧。

剩下的由大家自由发挥吧。

请不要对我、坛友aammoo和原作者要求太多。

出0入8汤圆

发表于 2014-8-1 22:50:00 来自手机 | 显示全部楼层
看热闹比做的人多
不过这个库的接收貌似没做bitstuff
发送个0xff估计收不到正确数据

出0入25汤圆

 楼主| 发表于 2014-8-2 00:03:25 | 显示全部楼层
canspider 发表于 2014-8-1 22:50
看热闹比做的人多
不过这个库的接收貌似没做bitstuff
发送个0xff估计收不到正确数据

高人。

测试看来是的,接收没做BITSTUFF。

出0入0汤圆

发表于 2014-8-16 09:57:16 | 显示全部楼层
已经测试了,偶尔无法识别,偶尔能枚举成功!

出0入0汤圆

发表于 2014-8-16 10:04:23 | 显示全部楼层
顶,我只有IAR1。3.1

出0入0汤圆

发表于 2014-8-16 10:08:18 | 显示全部楼层
leifeng 发表于 2014-7-29 21:53
经过测试可行,传个hex吧

你的HEX文件经过测试,我这里偶尔是可以枚举成功的!
但是楼主的经过IAR编译后,一直无法识别!你是用的楼主的这个工程吗?

出0入0汤圆

发表于 2014-8-16 10:42:08 | 显示全部楼层
xp枚举成功。

出0入0汤圆

发表于 2014-8-16 10:56:49 | 显示全部楼层
LingYi 发表于 2014-8-16 10:08
你的HEX文件经过测试,我这里偶尔是可以枚举成功的!
但是楼主的经过IAR编译后,一直无法识别! ...

用的论坛开源的那个stm8 usb的板子,一直识别不了!

出0入0汤圆

发表于 2014-8-16 11:45:24 | 显示全部楼层
chaplin1999 发表于 2014-8-16 10:56
用的论坛开源的那个stm8 usb的板子,一直识别不了!

没有关系吧!我随便焊接的,都是飞线!

出0入0汤圆

发表于 2014-8-16 11:49:01 | 显示全部楼层
楼主,中断函数在哪儿呀?

出0入0汤圆

发表于 2014-8-16 11:49:48 | 显示全部楼层
本帖最后由 leifeng 于 2014-8-16 11:51 编辑
LingYi 发表于 2014-8-16 10:08
你的HEX文件经过测试,我这里偶尔是可以枚举成功的!
但是楼主的经过IAR编译后,一直无法识别! ...


是的,要用iar1.41的版本编译
你的问题可能是这个:
在此提醒大家,一定记得配置Option Byte的AFR0,使能PC6,PC7的Alternate Function。

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

出0入0汤圆

发表于 2014-8-16 12:13:21 | 显示全部楼层
学习一下。谢谢!

出0入0汤圆

发表于 2014-8-16 12:30:28 | 显示全部楼层
本帖最后由 LingYi 于 2014-8-16 12:35 编辑
leifeng 发表于 2014-8-16 11:49
是的,要用iar1.41的版本编译
你的问题可能是这个:
在此提醒大家,一定记得配置Option Byte的AFR0,使能 ...


哦!那可能是编译器的问题,我的版本是1.301的

出0入0汤圆

发表于 2014-8-16 12:33:02 | 显示全部楼层
是楼主位的工程

出0入0汤圆

发表于 2014-8-16 12:37:22 | 显示全部楼层
leifeng 发表于 2014-8-16 12:33
是楼主位的工程

为什么没有看到TIM1的中断函数呢?

出0入25汤圆

 楼主| 发表于 2014-8-16 13:48:48 来自手机 | 显示全部楼层
接收代码就是中断入口。

出0入25汤圆

 楼主| 发表于 2014-8-16 13:59:26 来自手机 | 显示全部楼层
这个接收代码没有stuff处理,不建议继续。

AVR的VUSB代码应该可以移植过来。

STM8的指令多数是单周期,执行速度比AVR快,但是分支和跳转太蛋疼了。

还有办法就是把STM8超频用,我试过27M能跑。没作稳定性测试。

出0入0汤圆

发表于 2014-8-16 14:04:25 | 显示全部楼层
楼主,装了1.41版本的IAR for stm8 已经可行了。谢谢
我也来慢慢研究一下。

出0入25汤圆

 楼主| 发表于 2014-8-16 14:24:22 来自手机 | 显示全部楼层
IAR 1.42开始支持Option byte 配置。

出0入0汤圆

发表于 2014-8-16 14:25:17 | 显示全部楼层
虽然不知道是干嘛的,表示支持一下。

出0入0汤圆

发表于 2014-8-16 16:31:29 | 显示全部楼层
hecat 发表于 2014-8-16 14:24
IAR 1.42开始支持Option byte 配置。

在调试模式下 是可以配置        选项字节的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-8-16 23:06:44 | 显示全部楼层
不知能否移植到keil环境,先下来研究下

出0入0汤圆

发表于 2014-8-18 14:51:51 | 显示全部楼层
楼主,这个代码的移植型太差了,想改成 HID 设备收发64字节数据,发现难度很大。似乎,该工程就只是为了证明 USB_RX USB_TX是正常的一样。目前,还不清楚USB_RX_BUFF是从第几字节开始存储USB数据的。

出0入8汤圆

发表于 2014-8-18 15:19:28 来自手机 | 显示全部楼层
低速的USB设备貌似只能发8字节

出0入0汤圆

发表于 2014-8-19 13:21:28 | 显示全部楼层
这个是新更新的?回头试试

出0入0汤圆

发表于 2014-8-19 13:44:27 | 显示全部楼层
比较强悍

出0入0汤圆

发表于 2014-8-21 17:34:08 | 显示全部楼层
hecat 发表于 2014-8-16 13:59
这个接收代码没有stuff处理,不建议继续。

AVR的VUSB代码应该可以移植过来。

楼主,为啥是跑27M呢?怎么不是24M ?

另外,接收数据总是出错,可能用处不大了。除非 重写 汇编部分的代码。

出0入0汤圆

发表于 2014-8-21 20:03:49 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-8-22 09:55:13 | 显示全部楼层
thanks for share

出0入0汤圆

发表于 2014-8-22 10:36:50 | 显示全部楼层
stm8竞争 51

出0入0汤圆

发表于 2014-8-22 11:47:42 | 显示全部楼层
看到这么好的帖子,  赞一个

出0入8汤圆

发表于 2014-8-22 15:44:22 | 显示全部楼层
不错~味道好极了~

出0入25汤圆

 楼主| 发表于 2014-8-22 21:48:28 | 显示全部楼层
LingYi 发表于 2014-8-21 17:34
楼主,为啥是跑27M呢?怎么不是24M ?

另外,接收数据总是出错,可能用处不大了。除非 重写 汇编部分的 ...

用基频晶振作的测试。

基频晶振一般只到27MHz,更高的基本是泛音晶振了。

出0入0汤圆

发表于 2014-8-24 12:59:42 | 显示全部楼层
关注,学习学习。。。。。。

出0入0汤圆

发表于 2014-9-14 10:39:42 | 显示全部楼层
不错,iar版本比cos好看点,可以打开,找个板子试下。

出0入0汤圆

发表于 2014-9-14 10:49:02 | 显示全部楼层
谢谢分享            

出0入0汤圆

发表于 2014-9-14 10:52:21 | 显示全部楼层
楼主威武,顶之!

出0入0汤圆

发表于 2014-9-19 16:40:35 | 显示全部楼层
非常牛,希望楼主把它完善做成精品

出0入0汤圆

发表于 2014-9-22 11:25:18 | 显示全部楼层
非常牛,谢谢楼主分享。

出0入0汤圆

发表于 2014-9-22 15:22:10 | 显示全部楼层
今天烧写了文件,可惜xp连不上,不知道咋回事。

出0入0汤圆

发表于 2014-9-23 11:00:41 | 显示全部楼层
lovecxm 发表于 2014-9-22 15:22
今天烧写了文件,可惜xp连不上,不知道咋回事。

估计是你下程序时没有设置option byte中PC5引脚的原因。之前我也是没有设置option byte所以不能用,楼主后来发了这个贴子里面说得很清楚,我看了几遍才明白其中的意思。
用STVP软件下载程序时,要在OPTION BYTE选项页中将 AFR0   prot C5的功能选为TIM1_CH1然后一起下载才可以。

出0入0汤圆

发表于 2014-9-23 13:38:48 | 显示全部楼层
shuailong0411 发表于 2014-9-23 11:00
估计是你下程序时没有设置option byte中PC5引脚的原因。之前我也是没有设置option byte所以不能用,楼主 ...

原来如此,马上再试。

出0入0汤圆

发表于 2014-11-3 17:50:49 | 显示全部楼层
让这火继续激情燃烧!

出0入0汤圆

发表于 2014-11-19 15:58:29 | 显示全部楼层
多谢,多谢  。

出0入0汤圆

发表于 2015-2-13 09:01:06 | 显示全部楼层
不顶不行,谢谢楼主分享,回去我也试试

出0入0汤圆

发表于 2015-2-13 09:14:37 | 显示全部楼层
我尝试过自已写USB的收发部分,时序一直和自己设想的有出入,只好放弃

出0入0汤圆

发表于 2015-5-21 11:49:06 | 显示全部楼层
好1块钱的 usb芯片

出0入0汤圆

发表于 2015-5-21 14:31:09 | 显示全部楼层
不顶不行,谢谢分享

出0入0汤圆

发表于 2015-5-21 15:53:21 | 显示全部楼层
楼主厉害。有没有移植日志?想移植到其他CPU去。

出0入0汤圆

发表于 2015-5-21 16:18:41 | 显示全部楼层
nice,寓乐于学。

出0入0汤圆

发表于 2015-7-14 16:27:00 | 显示全部楼层
hecat 发表于 2014-8-22 21:48
用基频晶振作的测试。

基频晶振一般只到27MHz,更高的基本是泛音晶振了。 ...


楼主:你的外部晶振是多少M的?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-19 13:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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