各位先进好目前 我司 要开发一个 产品
是 HOST <=====>DEVICE 这两个 中间 插入 USB 数值
如
HOST <==>MPU <===> DEVICE
这时 要让 HOST 不要 发现 DEVICE 变成 MPU 继续通讯.. (MPU 取代 HOST)
且 DEVICE 也不要发现现 HOST 已经断开 由 MPU 取代 HOST
这样能做到吗? 要用 什么MPU 及 周边?
麻烦有先进能 指教!
谢谢
各位先进好目前 我司 要开发一个 产品
是 HOST <=====>DEVICE 这两个 中间 插入 USB 数值
如
HOST <==>MPU <===> DEVICE
这时 要让 HOST 不要 发现 DEVICE 变成 MPU 继续通讯.. (MPU 取代 HOST)
且 DEVICE 也不要发现现 HOST 已经断开 由 MPU 取代 HOST
这样能做到吗? 要用 什么MPU 及 周边?
麻烦有先进能 指教!
谢谢
您好,根据您的描述,可以使用我们双USB型MCU实现,同时支持1路Host,1路Device。如果是全速的话可以使用CH32F103系列,高速的话可以使用CH567。
相关产品链接如下:
感谢你的回答
因为我之前 不知道 有这个技术论坛!
所以 我自己选的型号是 CH549 也跟 贵司申请到 样品
幕前正在研究中
正因为 研究了 才发现 贵司 有其它型号 的产品 可供 选择!
因为 最近实在太忙了! 且 看贵司的型号 有些也不是太明白
所以想直接问 也许快些!
目前 我想先从 CH549 着手 先作单边 USB 通讯.完成后 再改成双边 通讯,这样是否可行?
另外你提供 的建议 CH567 是 32bit RISC MPU 这个我比较不熟悉
.需要 较多的时间研究!
是否 有 8051 内核 的MPU 我比较熟悉 的推荐!
或是 我用 贵司 独立的USB 晶片 再配上 MPU 一样可以做到
我目前选的型号是 CH376S 来使用.
-------------------------------------------------
另外 再问一个问题
如果 我使用 2个 USB 晶片 可否 由
HOST==> MPU收到 直接传给 >DEVICE
然后 DEVICE==>>收到 MPU 直接传给 HOST
还是 需要 用 USB SWITCH 切换 会比较好
谢谢你
你好,听你的描述推荐使用CH32F103,Cortex M3内核芯片,有两个U口,可一颗芯片实现HOST <==>MCU<===> DEVICE。
下面链接为芯片手册:
/downloads/CH32F103DS0_PDF.html
感谢你的推荐CH32F103,Cortex M3内核芯片 但是我对 CH32F103 不熟悉
现在因为 急着完成 所以就先选用 CH549 先作单边!
如果单边能完成 我再研究看看 是否 能用 CH549 + CH376 来完成!
或是 用 你推荐 CH32F103,Cortex M3
===============================
目前 我是用 贵司 CH549 的实验板试 做!
并 参考贵司 提供的程式
CompatibilityHID.C
目前 完成度 已经99%
现在遇到两个小问题
上图是 我用贵司 USB2.0分析仪抓取数据资料
前面的数据都没问题
最后 OUT 76 77 78 3C ......收到 HOST 的资料 CH549 应该要 回答 一样的资料
可是 我目前 看到 回传的是 A1 A1 ....30Bytes
后面 没收到资料 应该是 回 ACK 就可以
但是 CH549 仍然会 回
A1 A1 .......30Bytes
我已经有把 端点2 关闭了 还是一样...
可否请教一下在程式 哪的部分 出的问题?
PS:程式就是用 贵司的
CompatibilityHID.C 修改 的 主程式 都没变 只改 数据!
感謝你
你好,我们CH549目前支持5个端点,包括端点0-端点4。你端点5下发的数据芯片应该是收不到的。
了解!
所以 我看到 A1 A1 .....这一串 资料 是 端点3发的!
那我关闭 端点2 就没用了,是吧!
感谢你 我再找找 从哪里发出的!
=================================
我查了程式根本没有启动端点3
怎么会从端点3传出资料?
另外请问一下收到主机的资料是从哪个临时存器读进来的?
还是只要设UEP0_DMA_H,UEP0_DMA_L就可以吗?
不好意思我是用汇编写的不是用C写的。
主机的数据是你这边控制的嘛?你先初始化端点1-4中的任意一个你没有用到的端点的接收和发送,让主机通过这个端点下发数据。然后在相应端点接收到数据后再去发送你想要发送的数据。
你好!
主机不是我控制的! 主机是 LINUX 的系统程式!
这边我又有几个疑问?
1-主机 为什么会用 端点5 OUT 资料给 CH549 ?
是不是 在枚举阶段 我误给了主机 我的装置错误的讯息?
所以 主机才会认为 我有端点5
2- CH549 我查了贵司 CompatibilityHID.C 端点3 根本 没有启动
为什么 贵司 USB2.0分析仪抓取数据资料 会有端点 3 IN 的资料?
这有 2种可能 A-CH549 端点3 有启动 我没找到 启动典在哪?
B-贵司 USB2.0分析仪抓取数据资料的端点 显示错误 .
可否 解惑一下!
---------------------------------------------
另外 前面曾经问过 如何读取端点x 资料 我看完datasheet 大概知道
是不是 在 UEPx_DMA 位置 设好.然后等 中断. 通知收到资料,
然后直接取读取UEPx_DMA 位置的资料既可.
-------------------------------
谢谢你
可以看一下配置描述符中的端点描述符,里面是有对端点进行配置的。可以电脑端先装一个bushound,自己先通过电脑模拟主机下发数据,看一下是哪个流程出了问题。
好的谢谢 你 ,我研究看看!
经过研究 我发现
应该是 贵司的 USB2.0分析仪抓取数据资料的端点 显示错误 .
CH549 不是没有 端点 5吗?
可是 我用贵司的 USB2.0分析仪抓取数据资料的端点 就是 端点 5
怎么会这样?
我研究了
我在 USB_INT_ST 这个寄存器 后面增加了判断
如果 USB_INT_ST 的端点 3 以上 我就
CLR IE_USB
这样 就不会有后面的继续乱发了!
只是 我 IE_USB =0 不是应该不会 中断了吗?
为什么 后面 还会有 NAK 的回答 ?
是不是 哪里 有设 自动回答 NAK 的指令?
谢谢 你
您好,出现NAK是因为主机在不停的请求端点数据,NAK是正常流程中的拒绝回复数据。USB数据传输的一个特点就是收发都是主机发起的,所以主机需要不停的IN数据,才能在设备需要上传的时候及时上传。这个IN的操作不同的类型设备在逻辑上可能会有所不同。
谢谢回答!
了解了!
请问贵司 是否有 用 端点3 回答的范例 汇编 程式?
我现在尝试修改 不知道 怎魔改的 稍微改错 主机就会当机 然后从开机
这样 我程式 要 修改完成 需要 很多时间
如果 有 范例来套套看 就会快多了!
你好 感謝你們的幫助 我設計的 CH549L 已經大致上可以正確動做了!
目前 我想在下一代的產品 先作開發研究
我看上面的推薦是用 CH32F103 ,但是我在下載資料的時候 貴司的 CH32V103 MPU 跟 CH32F103 好像是一樣的
只是一個是用 ARM 核心 一個是用 RISC -V 核心 請問兩者 對貴司 有差別嗎?
我要用 貴司 會推薦用 哪個?