找回密码
 立即注册
查看: 431|回复: 6

USB在IRC频率为40M和44.2368M时,认不到设备

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-8-15 14:50:38 | 显示全部楼层 |阅读模式
芯片STC8H8K64U:在对USB读写等相关函数展开处理时发现一个问题:
在使用INDEX来选择目标端点0后,读取CSR0寄存器,用40M和44.2368M下载时会认不到设备,选用其它更高或更低IRC正常。具体位置如下图

截图202408151415568419.jpg

后反复调试发现在此处加_nop_();可以解决,40M认得到设备。
截图202408151421459041.jpg

猜想INDEX为端点索引寄存器,在选定端点0后,是否需要等待端点0相关寄存器到位后才能进行下一步操作?
查看手册发现端点0相关寄存器有(INMAXP )、(CSR0)、( COUNT0)共3个,于是加3个_nop_();屏蔽while (USBADR & 0x80);发现40M也可以认到设备。
截图202408151440382758.jpg

提问:1.猜想是否正确?
          2.为什么只有40M和44.2368M会出现这个问题?
          3.怎么才能得到需要等待的时间,其他端点1到5是否也有相关问题?
HID.rar (39.15 KB, 下载次数: 51)



回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-8-15 15:18:45 | 显示全部楼层
可能是BUSY状态没有及时更新,while条件不满足直接跳过了
USB时钟48M,可能会和主时钟之间存在某种关系导致不同步,猜的,不一定对
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-8-16 10:42:01 | 显示全部楼层
Debu*** 发表于 2024-8-15 15:18
可能是BUSY状态没有及时更新,while条件不满足直接跳过了
USB时钟48M,可能会和主时钟之间存在某种关系导致 ...

有没查看BUSY状态的方式?主要怕其他端点也有同样的问题

点评

像这样就可以,不正常的时候加几个nop  详情 回复 发表于 2024-8-16 10:50
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-8-16 10:50:03 | 显示全部楼层
匿0*** 发表于 2024-8-16 10:42
有没查看BUSY状态的方式?主要怕其他端点也有同样的问题

像这样就可以,不正常的时候加几个nop
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-8-22 10:23:42 | 显示全部楼层
Debu*** 发表于 2024-8-16 10:50
像这样就可以,不正常的时候加几个nop

发现端点1,2,3,4,5都有同样的问题。
再问个问题有没USB FIFO连续块读取的例子,目前连续写没问题,连续读就不行
截图202408221021324162.jpg

点评

AUTORD=1不行吗?  详情 回复 发表于 2024-8-22 11:03
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-8-22 11:03:20 | 显示全部楼层
匿0*** 发表于 2024-8-22 10:23
发现端点1,2,3,4,5都有同样的问题。
再问个问题有没USB FIFO连续块读取的例子,目前连续写没问题,连 ...

AUTORD=1不行吗?
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-11-29 13:37:33

2

主题

12

回帖

70

积分

注册会员

积分
70
发表于 2024-8-22 11:28:33 | 显示全部楼层

不行,有没相关测试的例子?
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:36 , Processed in 0.150713 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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