打印

在MTK上使用GPIO+软件来实现USB功能(7日已更新)

[复制链接]
4662|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
李蓝蓝|  楼主 | 2007-12-1 14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人是手机开发软件工程师,但是对这个课题是菜鸟,一个是因为之前对USB的协议基本不了解,一个是之前没有做过MTK的平台;但是小气的老板为了想省掉几毛的美金,就把这个任务交给我了;

本人打算从今天开始在这里把我对这个整个开发过程给记录下来,包括系统设计和原理实现,以及一些问题的解决,希望大家在这个过程中批评指正,多给些意见,谢谢先;

2007-12-1 16:00:43 李蓝蓝
========================================================
谢谢大家的关注先,我还在看协议和构思整体软件架构阶段,所以目前还拿不出什么东西,我尽量每晚到这里更新一些已解或未解的问题,也肯定大家批评指正;

另回复6#朋友:USB数据传输中,所有的包都从同步字段开始,同步字段是用于同步的机制,我将在接收同步字段时调整数据位接收的频率为1.4775~1.5225M之间;

另回复7#朋友:程序所占存储器的价钱要超过省下的成本?不知你是怎么算的,哈哈

2007-12-2 23:20:40 李蓝蓝

========================================================
前几天比较忙(做的另外一个项目在收尾),然后USB还在看协议,就没有更新,谢谢大家的跟贴先,特别谢谢圈圈兄(请允许我这样称呼);
老板也是看展讯使用GPIO口模拟做出来,才让我做,当然展讯的做法看不到,感觉他是有用硬件的BUF。不管老板怎么想,我就当是自己学习吧,反正估计我在这里也呆不长了,哈哈

相关帖子

沙发
李蓝蓝|  楼主 | 2007-12-1 14:24 | 只看该作者

先放放我写文档的部分内容吧

前言
    该文档用于描述在MTK6223平台自主开发USB的方案, 其实明确的说是U盘功能,但是此方案的重点和难点是而不借助任何的USB接收或者处理芯片,而只基于GPIO口加软件来完成USB设备的开发。
    USB有3种信号的传送模式,其中全速设备的信号比特率定为480 Mbps,中速设备的信号比特率定为12 Mbps,低速设备的信号比特率定为1.5 Mbps。首先要确定的是,我们将设计的是低速设备。
该文档主要参考了USB1.1的规范,并根据MTK的平台,搭建了USB设备软件的架构,包括接口编程设计,总线管理,数据帧的解析,事务处理,Mass storige实现;
    

使用特权

评论回复
板凳
李蓝蓝|  楼主 | 2007-12-1 14:25 | 只看该作者

此楼用于放一些未解的问题(怎么大家也不发表一下意见呀

可能我这个菜鸟问的问题比较没水平,还请别笑,请众多高手给于意见;

1,USB是一种总线通信,那从这个角度来说,如果两个USB设备同时接在主机上,那USB设备1是不是也会收到主机发送给USB设备2的数据呢?
但是我在USB1.1的协议里边看到这句话:每个USB设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号。这个端点号是在设备设计时被给定的。USB的数据传送是以通道的方式进行,即以主机软件和一个USB设备的指定端点之间进行;

2007-12-2 23:29:25 李蓝蓝
=========================================================
2,关于USB设备的连接与断开检测
When no function is attached to the downstream port of the host or hub, the pull-down resistors present there will cause both D+ and D- to be pulled below the single-ended low threshold of the host or hub portwhen that port is not being driven by the hub.  This creates an SE0 state on the downstream port.
A disconnect condition (TDDIS) is indicated if the host or hub is not driving the data lines and an SE0 persists
on a downstream port for more than 2.5s。
A connect condition (TDCNN) will be detected when the hub detects that one of the data lines is pulled above its VIH threshold for more than 2.5s。
图贴不上来!!
这里不是很明白它的硬件原理,上面提到的the pull-down resistors应该是指Rpd而不是Rpu吧,此时Rpd电阻怎么使D+和D-上的电压低于主机或集线器端口的单终端电压呢?还有对低速设备连接时,D-的电压是怎么拉到2.0V的?

使用特权

评论回复
地板
李蓝蓝|  楼主 | 2007-12-1 16:02 | 只看该作者

此楼用于保存已解问题,若高手认为解错,请指正

1,关于MTK平台怎么发送数据来匹配PC的USB接收?
//由于低速数据发送率为1.50Mb/s,低速功能设备所允许的误差为±1.5%(15000ppm)。而MTK平台的基础频率为13M,假设以4倍频率运行,为52M/X在1.4775~1.5225之间,X的值为35,因此表明,我们必须在35个时钟周期发出一个bit的数据;

使用特权

评论回复
5
whereis| | 2007-12-1 22:55 | 只看该作者

.

占个位置,看你怎么死的。

使用特权

评论回复
6
eastbest| | 2007-12-1 23:04 | 只看该作者

用GPIO模拟有点难度

主要是接收数据方面.建议楼主先用CPU来接收一个SOF,看看CPU把它解析出来要花多少时间.

使用特权

评论回复
7
平常人| | 2007-12-1 23:20 | 只看该作者

恐怕程序所占存储器的价钱要超过省下的成本

软件模拟USB接口,我以为只有学生做练习玩一玩就罢了,没想到还有人当真,要做到产品里去。

拭目以待,静候佳音。做出来或做不出来,还请楼主通知大家一声,这样各位也长点见识,免得又有人走弯路。

使用特权

评论回复
8
icecut| | 2007-12-2 15:22 | 只看该作者

占座

反正不推荐,难度比较大,等于自己写个软核了。
先顶一个吧。估计你的设备投资可以和降低的成本媲美了

使用特权

评论回复
9
dragon_hn| | 2007-12-4 18:54 | 只看该作者

我来泼冷水

建议楼主马上放弃,如果老板执意,那就只有建议楼主马上辞职了.

难点:CPU响应速度要求快.如果是USB1.0,要求CPU至少有1.5MHz的响应速度,如果是USB1.1,要求CPU至少有12MHz的响应速度,当然别期待在OS上跑了,估计最好是裸奔.上述速度还不包括CRC和NRZ等,实际要去比这高得多

使用特权

评论回复
10
computer00| | 2007-12-4 19:18 | 只看该作者

网上有现成的在AVR MEGA8下用软件模拟的USB做的下载线

源代码也有,就我目前的使用情况来看,还是挺稳定的。


是低速设备,AVR跑在12MPIS。

使用特权

评论回复
11
zhongyb| | 2007-12-5 16:51 | 只看该作者

能搞定的话,估计你自己也难相信这是真的!

是模拟HOST还是DEVICE功能?真正能搞定的话,你可以做USB的IP了。还是花点钱加个USB芯片吧?你去花几个月时间摸索,最后把自己搞死,还不只浪费那几个钱,做项目和业余爱好其实还是有较大的差距。

使用特权

评论回复
12
aweyfan| | 2007-12-5 17:01 | 只看该作者

这是完全可行的,已经有成功案例了

你们的同行展讯已经实现了,mtk应该也可以吧

其实很多手机的usb都是io口模拟的,我怀疑连西门子的都是

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝