新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于CY7C646xx的通用串行总线接口

基于CY7C646xx的通用串行总线接口

作者: 时间:2012-04-11 来源:网络 收藏

该应用采用Keil51编译环境,用C语言完成固件源代码的编写。采用标准的结构框架,修改或者添加自己的代码,完成所需要的任务。

需要注意,如果开发者没有使用片外接存储器,需将Keil51编译环境的L51 Location选项中的Code(指令码部分)始于0x0080,而且xdata(数据部分)始于0xl000,以保证在同一个RAM中指令代码和数据不混迭。

6 计算机端应用程序的编写

应用程序与设备进行通信的通用函数包括打开关闭设备、传输数据等:

6.1 打开和关闭设备

该应用程序基于Ezusb.sys驱动程序,利用VisualC++针对该电路进行操作,完成数据的传输。

打开设备: HANDLE hDevice=CreateFile (DeviceName,
GENERIC_WRITEIGENERIC_READ,FILE_SHARE_WRITE︱FILE_SHARE_READ,
NULL,OPEN_EXISTING,0,NULL);

程序打开设备"DeviceName''的方式为通用读写方式,文件共享读写。

关闭设备:CloseHandle (hDevice)。

6.2 数据传输

其代码为BOOL bResult = DeviceloControl (hDevice,direction,Control,sizeof xxxx_TRANSFER_CONTROL),buffer,length, (unsigned long*)nBytes,NULL),其中,hDevice为设备句柄;direction为数据传输的方向;Control为4种USB数据传输的方式选择;size(xxxx_TRANSFER_CONTROL)为数据格式所需存储空间的大小;buffer为所传输数据的缓冲区地址指针;nBytes为传输完成后实际传输的数据个数:数据传输格式为USB设备的统一规范,可参照Windows DDK中的相应文件。

基于CY7C646xx的通用串行总线接口

6.3 数据传输的

每个数据包由包头和数据或者只由包头组成,最大的数据长度为64字节,由于本应用所采用的该系列的80引脚的CY7C64603没有"数据空"对外标志,所以,外部电路读写逻辑每次渎写64字节。传输的字节不足64时由固件补零:·数据包格式如图3所示。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭