正在加载图片...
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 (接上表) 函数返回值0发送成功:>0发送失败(错误码,见表1) 特殊说明如果用户需要无限等待,那么请在该函数返回超时错误时再次调用该函数,直至函数返 和注意点 回0(发送成功)为止。 表7至表10中提到的函数返回值所代表的错误码的定义如表11所示,这些错误码的定 义在D2 Driver h文件中 表11读写端点AP函数返回值 错误码宏定义 宏定义值 USB NO ERR 0x00 函数执行成功 USB ERR NO CONFIG USB总线未配置完成错误 USB ERR BUFF INVALID 接收或发送缓冲区错误 USB ERR WR TIMEOUT 0x03 接收或发送超时错误 调用读写端点函数: Write Port10、 WritePort2(、 Read Port1(、 Read Port20必须遵守以下 规则 读写端点的任务必须保证有机会能调用到以上函数,才能成功收发数据。 这是因为以上函数给出了接收数据的缓冲区或发送数据的缓冲区。只有给出了缓冲区 从主机发来的数据才有“地方(接收缓冲区)”让它存放。否则本驱动程序将收到的数据都 扔掉”。同理,只有这些函数给出了需要发送的数据在什么“地方(发送缓冲区)”,驱动 程序才能有目的地把数据发送出去。 15软件包使用例子 下面举一个例子来说明怎样使用表5至表10的API函数,例子演示了两个任务之间在 争着从端点2发送1024个字节。编写USB应用程序需要编写两个程序: (1) PDIUSBD12设备端程序。 (2)USB主机(PC机)端程序。 1. PD USBD12设备端程序分析 设备端的程序运行由μOS操作系统控制,它被动地等待来自PC机的命令,操作系 统的启动任务为 ask Start0,它初始化 PDIUSBD12以及创建各个任务以后,其运作过程如 图4所示。图中以及下面提到的 RW NUMS宏定义的值为1024 其中优先级为0的任务为 Task Setup,它负责完成USB的控制传输处理(枚举和标准设 备请求)。经过 PDIUSBD2的初始化以及枚举成功之后,μCOSⅡ操作系统的运作过程为 (1)任务1( Task Recl)和任务2( TaskRec2)分别在等待信号量 Task Recl Sem和 TaskRec2Sem。而起动任务( Task Start)一直在等待主机命令 (2) TaskStart如果收到命令字0x01,就发送信号量给 TaskRecl,使其就绪。如果收到 其它命令字,则发信号量给 TaskRec2,使其就绪 (3)任务1收到信号量以后,发一个字节ack给主机,作为应答。主机收到应答后 发1024个字节给该任务,该任务用 Reaport2(接收这1024个字节。然后延时1个时钟节拍, 最后该任务将收到的1024个字节发送给PC机( WritePo2()。 (4)任务2收到信号量以后,它的动作也与任务1一样,只是任务2接收到1024字节 没有延时就立即发送1024个字节给PC机。广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 (接上表) 函数返回值 0: 发送成功; > 0: 发送失败(错误码,见表 11) 特殊说明 和注意点 如果用户需要无限等待,那么请在该函数返回超时错误时再次调用该函数,直至函数返 回 0(发送成功)为止。 表 7 至表 10 中提到的函数返回值所代表的错误码的定义如表 11 所示,这些错误码的定 义在 D12Driver.h 文件中。 表 11 读写端点 API 函数返回值 错误码宏定义 宏定义值 含义 USB_NO_ERR 0x00 函数执行成功 USB_ERR_NO_CONFIG 0x01 USB 总线未配置完成错误 USB_ERR_BUFF_INVALID 0x02 接收或发送缓冲区错误 USB_ERR_WR_TIMEOUT 0x03 接收或发送超时错误 调用读写端点函数:WritePort1()、WritePort2()、ReadPort1()、ReadPort2()必须遵守以下 规则: 读写端点的任务必须保证有机会能调用到以上函数,才能成功收发数据。 这是因为以上函数给出了接收数据的缓冲区或发送数据的缓冲区。只有给出了缓冲区, 从主机发来的数据才有“地方(接收缓冲区)”让它存放。否则本驱动程序将收到的数据都 “扔掉”。同理,只有这些函数给出了需要发送的数据在什么“地方(发送缓冲区)”,驱动 程序才能有目的地把数据发送出去。 1.5 软件包使用例子 下面举一个例子来说明怎样使用表 5 至表 10 的 API 函数,例子演示了两个任务之间在 争着从端点 2 发送 1024 个字节。编写 USB 应用程序需要编写两个程序: (1)PDIUSBD12 设备端程序。 (2)USB 主机(PC 机)端程序。 1. PDIUSBD12 设备端程序分析 设备端的程序运行由 µC/OS-II 操作系统控制,它被动地等待来自 PC 机的命令,操作系 统的启动任务为 TaskStart(),它初始化 PDIUSBD12 以及创建各个任务以后,其运作过程如 图 4 所示。图中以及下面提到的 RW_NUMS 宏定义的值为 1024。 其中优先级为 0 的任务为 TaskSetup(),它负责完成 USB 的控制传输处理(枚举和标准设 备请求)。经过 PDIUSBD12 的初始化以及枚举成功之后,µC/OS-II 操作系统的运作过程为: (1)任务 1(TaskRec1)和任务 2(TaskRec2)分别在等待信号量 TaskRec1_Sem 和 TaskRec2_Sem。而起动任务(TaskStart)一直在等待主机命令。 (2)TaskStart 如果收到命令字 0x01,就发送信号量给 TaskRec1,使其就绪。如果收到 其它命令字,则发信号量给 TaskRec2,使其就绪。 (3)任务 1 收到信号量以后,发一个字节 ack 给主机,作为应答。主机收到应答后, 发 1024 个字节给该任务,该任务用 ReaPort2()接收这 1024 个字节。然后延时 1 个时钟节拍, 最后该任务将收到的 1024 个字节发送给 PC 机(WritePort2())。 (4)任务 2 收到信号量以后,它的动作也与任务 1 一样,只是任务 2 接收到 1024 字节 后,没有延时就立即发送 1024 个字节给 PC 机。 - 8 -
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有