专利名称:一种基于通用输入输出口实现手机usb功能的方法
技术领域:
本发明涉及一种实现手机USB功能的新方法,尤其涉及手机利用两个GPIO口 (General Purpose Input/Output即通用输入输出,简称10 口 ), 一个中断来实现USB (Universal Serial Bus通用串行总线)功能的方法。
背景技术:
以往的手机U盘功能是通过增加一块USB控制芯片或基带芯片内部集成USB控制器来实现USB采样和一些底层的协议分析,上层的协议才由软件负责。对于一些低端的手机基带芯片本身并不带USB功能,增加USB控制器会带来成本的提高,如果能用软件的方法来实现采样和底层协议的分析,那么将会有效降低生产成本。
发明内容
针对已有技术的不足,本发明的目的在于提供一种基于输入输出口,一个中断来
实现手机USB功能的方法,该方法简单,成本低。 本发明的发明目的是通过如下技术方案实现的 —种基于输入输出口实现手机USB功能的方法,该方法包括手机的通用输入输出口分别连接USB差分数据正信号和USB差分数据负信号,USB差分数据正信号还连着一个外部中断口; 当接收数据的时候,USB的同步前导码发送过来时触发了采样中断,开始进行采样,通过两个通用输入输出口采集电平的变换,等待同步前导码结束;采样后进行协议处理; 当发送数据的时候,先发送同步前导码,根据USB协议,对电平进行改变,直到发送数据结束。 在采样时,通过精确计算采样代码的耗时,来使得所有的采样点都能落在USB数据有效范围内。 在处理协议时,行写操作时,通过中断触发来回复PC端NAK信号,进行读操作时在代码的固定位置(即时序上固定位置)插入等待USB信号并返回NAK的代码。
USB的数据传输速率是根据总线带宽动态调整的,对于在进行大范围数据传输的时候,采样时间点的安排,需要进行精确测试和计算。 本发明利用两个GPIO口和一个中断来进行USB数据的采样,采用汇编语言来实现USB底层的数据采样,用C语言实现USB上层协议的实现,整个采用软件实现,无需增加硬件。利用USB的大容量存储协议来完成U盘的所有功能。 本发明可以在实际使用中省去专用的USB芯片,可以使手机的成本得到有效下降
图1为本发明的结构示意3
图2为本发明的采样周期 图3为本发明的数据接收流程 图4为本发明的数据发送流程图。
具体实施例方式
下面结合附图1-图4进一步说明本发明是如何实现的 实施例 USB的理论速率 USB1. 1低速1. 5Mbits,除去开销约0. 8Mbits,理论速率在100Kbytes左右。
如果按照1. 5MBits的速率,按照手机基带ARM7 52MHz主频(Advanced RISCMachine高级精简指令集机器)的CPU,每个Bit有34. 6个CPU时钟周期,那么如果CPU的处理速度足够快,是完全可以采用GPIO采样实现慢速USB。当然这个时候对CPU的消耗很大,可能不能进行其他的操作。可以实现关机U盘的功能。我们运用精确的指令加延时来完成对USB的采样。 可以使用沿触发中断来开始进行采样,通过同步前导码来进行时钟同步,这样的话实现较为简单。 如图1所示,GPIO 口分别连接USB的DP (Differential-Plus, D+, USB差分数据正信号),DM(Differential-mi皿s, D_, USB差分数据负信号)。DP还连着一个外部中断口 。当USB的同步前导码发送的时候,会触发中断,然后就通过两个GPIO采集电平的变换。
如图2所示,在采样周期内取一点对DP,匿进行采样。通过对在涉及采样的程序部分,根据ARM (Advanced RISC Machines)汇编指令进行精确计算,使得所有的采样点都能落在USB数据有效范围内。 在处理协议的时候,由于USB的时序要求很苛刻,在进行文件写操作的时候,通过中断触发来回复PC端NAK信号,来增加延迟。并且在文件写操作失败的时候,根据协议进行相应的操作。而当在进行文件读操作的时候,我们仅在代码的固定地方(在时间轴上来看,就是固定的时间点)等待PC的要求读取数据的请求,并恢复NAK信号。
由于USB的数据传输是根据总线带宽动态调整的,对于在进行大范围数据传输的时候,采样时间点的安排,需要进行精确测试和计算。 如图3流程所示,接收数据的时候,同步前导码发送过来时触发了采样中断,开始进行采样,等待同步前导码结束。如流程所示,根据USB协议,如果电平有变化,确定该bit位为O,无变化则为l,依次接受该包所有字节内容,直到收到结束标志SEO (Single EndedZero)或者收到的字节数超出包的最大长度限制,其间需要注意USB协议的填充规则,和采样周期的精确调整。 如图4流程所示,发送数据的时候,由于发送数据包之前必须要先同步,所以先发送同步前导码,其发送规则和后面的数据是一样的,根据USB协议,该bit位为l,则维持和前一位bit电平一致,该bit位为0,则改变电平,其间需要注意USB协议的填充规则和采样周期的精确调整,直到发送数据结束,发送结束标志SEO。
权利要求
一种基于通用输入输出口实现手机USB功能的方法,该方法包括手机的通用输入输出口分别连接USB差分数据正信号和USB差分数据负信号,USB差分数据正信号还连着一个外部中断口;当接收数据的时候,USB的同步前导码发送过来时触发了采样中断,开始进行采样,通过两个通用输入输出口采集电平的变换,等待同步前导码结束;采样后进行协议处理;当发送数据的时候,先发送同步前导码,根据USB协议,对电平进行改变,直到发送数据结束。
2. 根据权利要求1所述的一种基于通用输入输出口实现手机USB功能的方法,其特征 是在采样时,通过精确计算采样代码的耗时,来使得所有的采样点都能落在USB数据有效 范围内。
3. 根据权利要求1所述的一种基于通用输入输出口实现手机USB功能的方法,其特征 在于在处理协议时,行写操作时,通过中断触发来回复PC端NAK信号。
4. 根据权利要求1所述的一种基于通用输入输出口实现手机USB功能的方法,其特征 在于在处理协议时,进行读操作时在代码的固定位置入等待USB信号并返回NAK的代码。
5. 根据权利要求1所述的一种基于通用输入输出口实现手机USB功能的方法,其特征 在于USB的数据传输速率是根据总线带宽动态调整的,对于在进行大范围数据传输的时 候,采样时间点的安排,需要进行精确测试和计算。
全文摘要
本发明公开了一种基于通用输入输出口口实现U盘的功能,通过两个GPIO口和一个外部中断来完成USB的采样,协议处理,数据传输,来实现完整的U盘功能。本发明可以在实际使用中省去专用的USB芯片,可以使手机的成本得到有效下降。
文档编号G06F13/40GK101739376SQ20081020295
公开日2010年6月16日 申请日期2008年11月19日 优先权日2008年11月19日
发明者张征磊, 杨恒 申请人:龙旗科技(上海)有限公司