• 1
  • 2
尊龙凯时最新
      尊龙新版官网网页版的产品展示

c8051f340的usbxpress开发包usb通信设计-尊龙凯时最新

c8051f340的usbxpress开发包usb通信设计
2018-6-14
来源:未知
点击数:  2390        作者:未知
  • c8051f340usbxpress开发包usb通信设计
    (本文详细介绍了usb通信的开发过程、电路设计和设备端的驱动设计,简单说明了usbxpress开发包在主机端应用的条件设置。所有
    设计思路和方法都通过了实验验证,可以直接用于工程项目开发。通过此方法,程序员可以很容易地进行一系列usb通信应用的设计
    和编程。)
         传统的usb设备驱动程序编写异常复杂,程序员往往很难入手。silicon laboratories公司提供的usbxpress开发包大大简化了
    usb通信的应用和相关驱动程序的开发,只要做好开发前的准备工作,usbxpress开发包完全可以实现usb通信的所有功能。本文
    介绍了usb通信开发的全过程,以及在开发过程中需要注意的事项。(主要针对设备端usb通信进行讲解)
    1、usbxpress简介
        由silicon laboratories公司推出的usbxpress开发包涵盖了主机端和设备端的所有函数功能,支持c8051f32x、c8051f34x
    cp210x设备的usb通信。usbxpress开发包中包含主机端的设备驱动、主机端设备驱动安装程序、主机端的动态链接库(dll)和
    设备端的函数库文件。
        设备端的函数库文件提供了支持c805if32x和c8051f34x设备usb通信的api函数,这些函数可以在keil uvision3编译环境下
    被编译通过。编译前需要在工程中添加相关的文件,详见下文。
        设备端函数库中主要的api函数如下:
        usb clock start()            -初始化usb时钟
        usb init()                        -usb接口初始化
        block write()                   -向buffer中写数据
        block read()                    -从buffer中读数据
        get interrupt source()    -获取api函数的中断标志值
        usb int enable()             -允许api函数中断
        usb int disable()             -不允许api函数中断
        usb disable()                  -不允许usb接口通信
        usb suspend()                -延缓usb中断
    2 设备端的电路设计
        (1)usb插座引脚识别
        在没备端电路设计的过程中,对usb插座引脚必须对应连接,否则将直接影响到与主机端的通信。usb插座一般分为a型插座和b

        型插座,    如图1所示,其引脚说明如表1所列。


    2)基于c8051f340的usb通信电路

        基于c8051f340的usb通信电路如图2所示。 


        (3)usb通信电路说明
        ①电路中的d-和d 不应连接其他负载电路,因为任何负载将影响数据线路上的电流,从而影响数据传输,直接后果将导致主机端
        无法识别设备。
        ②jtag口线中的vdd引脚为 3 v输入,输入电压过大将损坏器件。usb插口引脚与c8051f340引脚应对应连接,不要有误。

        ③c8051f340的vbus、regin和vdd引脚的连接有多种方式(稳压器配置),详见表2。


    3 设备端的驱动程序设计
        在keil uvision3编译环境下,用usbxpress 工具包中的api函数设计设备端的usb通信,前提是在工程中添加
        c8051f340.h、usb_api. h和usbx_f34x.lib文件(usbxpress工具包提供相关文件)。
        下面介绍设备端usb的数据传输。在进行数据传输之前,必须对usb时钟和usb接口初始化:
        usb_clock_start();  //usb时钟初始化
        usb_init(usb_vid,usb_pid,usb_mfrstr,usb_productstr,usb_serialstr,usb_maxpower,usb_pwat-tributes,
        usb_bcddevice);//usb接口初始化,参数之前被定义。
        (1)usb接口初始化参数定义
        ①usb_vid,16位二进制卖主id号,一般用siliconlab的id号(oxl0c4)。
        ②usb_pid,16位二进制产品id号,一般usbxpress规定为oxea61。
        ③usb_mfrstr,byte型指针,指向描述厂商的字符串,不能为空。
        若定义byte usb mfrstr[]={}
        数组中第1个数说明数组中元素的个数(元素个数=字符串元素个数*2 2),第2个数说明字符串描述符的类型,
        0起间隔作用。以下的字符串定义同上。
        ④usb_productstr,byte型指针,指向描述产品的字符串,不能为空。
        ⑤usb_serialstr,byte型指针,指向描述序列号的字符串,不能为空。
        ⑥usb_maxpower,byte型,说明总线******电流,极限为500 ma。若取值0x32,则表示******电流为100 ma。
        ⑦usb_pwattributes,byte型,用于供电配置。如果设备自己供电第6位置“1”,若为总线供电则为“o”。如果设备提供弱上
        拉作用,第5位置“l”,位0~4必须为“o”,位7必须为“1”。
        ⑧usb_bcddevice,无符号int型,用bcd码表示设备的版本号,如2.13版为ox0213。
        (2)usb中断函数
        设备端usb通信中api函数的功能,都在一个中断模块里面实现,为此必须提供一个中断向量。其中,0x008b(interrupt 17)是
        f34x设备的中断向量。在main函数中,只有允许了usb中断(调用usb int enable函数),才能进入中断。一旦进入中断服务程序,
       必须先获得中断标志(调用get_interrupt_source函数,返回byte型中断标志),后续操作根据获得的中断标志值与工具包自定义的
       中断标志值判断执行。自定义的中断标志值主要有:usb_reset(复位中断)、tx_complete(发送完成中断)、rx_complete
       (允许接收中断)、deviceopen(设备实例在主机端打开)、device suspend(延缓信号)等。
        中断函数如下:
        void usb_isr(void) interrupt 17{
        byte intval=interrupt_source();
       //获取中断标志值存入intval变量
       if(intval  & usb_reset){}//判断执行
       if(intval  & device_open){}
       if(intval  & tx_complete){}
       if(intval  & rx_complete){block_read(存储单元
       首地址,读取的字节数);}
       //读取字节数不超过64
       if(intval  & device_close){}
       if(intval  & fifo_purge){}
       }
        在main函数中进行初始化之后,若中断允许,通过函数block_write来发送数据,发送数据的字节数不能超过4096。发送结束
        后将触发中断,从而进入中断服务程序进行判断操作。如果主机端向设备端的buffer写入数据完成,也将触发中断,判断执行
        block_read操作将buffer中的数据存入指定的存储单元。
        发送数据的函数原型为:block_write(数据存储单元首地址,发送的字节数)。
        (3)主机端usb应用程序设计
        在vc 6.o编译环境下开发主机端的usb通信应用程序,需要注意在编译之前向工程中添加开发包提供的siusbxp.dll、
        siusbxp.h和siusbxp.lib文件。
        为了能让主机端识别usb设备并与之通信,在运行应用程序之前,要安装主机端的驱动程序(开发包已提供)。安装了驱动程序,
        主机端才能识别usb设备,在设备管理器中可以找到usb设备的相关描述信息。
        对usb设备的描述信息,除了可以修改设备端发送过来的描述符之外,还可以修改在主机端驱动安装目录下*.inf文件中的信息。
热门评论
  • 暂无信息

验证码: 验证码,看不清楚?请点击刷新验证码
尊龙凯时最新 copyright(c)2016-2024 深圳市桥桥科技有限公司 自动化让工作成为一种乐趣

1529920203


jojo-tech

尊龙凯时最新
网站地图