首页 > 应用 > 智能硬件
[导读]摘要:随着计算机技术的更新换代,USB接口已经成为个人计算机上最重要的外部设备扩展接口,在进行USB外设开发的过程中需要编写其固件程序。在此对USB接口固件程序进行了开发,在Keil C51软件环境中,采用C语言开发。

摘要:随着计算机技术的更新换代,USB接口已经成为个人计算机上最重要的外部设备扩展接口,在进行USB外设开发的过程中需要编写其固件程序。在此对USB接口固件程序进行了开发,在Keil C51软件环境中,采用C语言开发。介绍了固件程序的主要功能,给出了固件程序的流程、结构和端点配置,并给出了重点地方的具体程序。该固件编写采用分层结构简洁且易于修改和测试,既增加了代码的可读性,又增加了程序的通用性和移植性。
关键词:PDIUSBD12;USB;固件程序;分层结构

    在设计开发一个USB外设的时候,开发者主要需要编写3部分的程序:固件程序、USB驱动程序和客户端应用程序。当把设备连接到主机上(USB连接线插入插孔)时,上位机可以发现新设备,然后建立连接。因此,编写固件程序的一个最主要的目的就是让Windows可以检测和识别设备。固件程序可以在Keil C51软件环境中,用C语言开发。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,KeilC51软件提供了大量的库函数和功能强大的集成开发调试工具,使用的是全Windows界面,具有方便实用的特点。另外,Keil C51生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。因此,本文考虑采用此方法开发PDIUSBD12芯片的USB固件程序。

1 固件程序主要完成的工作
    
固件设计的目标就是完成主机与设备之间的命令与数据传输与转换,使PDIUSBD12在USB上达到最大的传输速率。它的操作方式与硬件联系紧密,包括USB设备的连接、USB协议、中断处理等。在系统中,当PDIUSBD12从USB接收到一个数据包,就对CPU产生一个中断请求,CPU立即响应中断。在ISR(中断服务程序)中,固件读取数据,并将数据值保存到循环数据缓冲区,随后置相应事件的标志位,CPU继续前台程序,检测事件标志,执行完成相应的事件任务。
    USB单片机固件程序通常由3部分组成:初始化单片机和所有的外围电路(包括PDIUSBD12);主循环部分:这部分是可中断的;中断服务程序,可以中断执行。根据USB协议,任何传输都是由主机开始的,这样单片机作它的前台工作,等待中断。主机首先要发令牌包给USB设备(这里是PDIUSBD12),PDIUSBD12接收到令牌包后就给单片机发中断,单片机进入中断服务程序,首先读PDIUSBD12的中断寄存器,判断USB令牌包的类型,然后执行相应的操作,因此,USB单片机程序主要就是中断服务程序的编写,在USB单片机程序中要完成对各种令牌包的响应。
    单片机与PDIUSBD12的通信主要是靠单片机给PDIUSBD12发命令和数据来实现的。PDIUSBD12的命令字分为3种:初始化命令字、数据流命令字和通用命令字。PDIUSBD12给出了各种命令的代码和地址,单片机先给PDIUSBD12的命令地址发命令,根据不同命令的要求再发送或读出不同的数据。因此,可以将每种命令做成函数,用函数实现各个命令,以后直接调用函数即可。

2 固件程序的流程及结构
    
USB设备启动流程如下:
    (1)USB设备接入USB口,发出连接USB命令;
    (2)主机发出读设备描述符2次;
    (3)主机根据设备描述符(厂商ID、产品ID),启动相应设备驱动程序;
    (4)设备驱动程序初始化USB设备:
    ①读设备描述符;
    ②读配置描述符;
    ③选择接口、端点(管道),确定传输方式。
    在编写USB的单片机固件程序时,单片机的中断应设置为电平触发,中断后一定要读上次传输状态寄存器(命令40H~45H),以清除中断寄存器中的中断标志,这样PDIUSBD12的中断输出变回为高电平。
    PDIUSBD12固件编写采用分层结构简洁且易于修改和测试,既增加了代码的可读性,又增加了程序的通用性。PDIUSBD12固件的开发一般都是在周立功单片机公司提供的固件源码的基础上做相应的修改。由于该固件采用分层分模块的结构,在做移植的时候只要修改部分代码就可以运行于特定的平台,比较方便。
    固件程序采取如图1的积木式结构。

a.JPG


2.1 硬件提取层
    epphal.c文件是固件中的最底层代码,由于在具体应用时所提供的硬件平台都是不同的,因此该文件必须进行修改以适应当前应用。该文件里主要包含了读写PDIUSBD12寄存器的函数,PDIUSBD12芯片各控制线与单片机I/O口的连接等。
    读写PDIUSBD12主要有2种方式:多路复用地址/数据总线方式和A0地址位方式。不同的方式其电路连接完全不同,因此其读写函数也完全不同。本处采用多路复用地址/数据总线方式,即用地址/数据总线的最低位标识总线上是数据还是命令,1代表命令,0则代表数据。
2.2 D12命令接口
    
d12ci.c文件中定义了一套访问D12功能的命令接口。
    D12的命令包括:4个初始化命令、24个数据流命令和2个普通命令。该文件包含了单片机对上述命令的实现函数,基本无须修改。
2.3 中断服务程序
     isr.c部分的代码主要处理PDIUSBD12产生的中断请求。
    硬件设计中,将PDIUSBD12中断一般连到单片机的外部中断0或者1中。由于只有一个中断源,如果要知道是什么中断,就需要读取PDIU SBD12中的中断寄存器的值进行判断。该文件包含了需要处理的各个中断的处理函数。其中许多处理函数仅仅是将相应标志位置1,用来在主函数中处理各类事务。在各个输入/输出端点引发的中断处理函数中,分别进行了读取缓冲区数据和发送数据到缓冲区等动作。其中,控制输入端点的中断处理函数还将相应控制位置1,以用来在主函数中触发标准设备请求和厂商请求。
2.4 主循环
    
主函数文件mainloop.c是一个大循环。在该文件中要执行各个初始化函数,发送USB请求和处理USB总线事件等。设备的各项功能需要在该文件中添加。
     首先,初始化I/O口;然后初始化定时器2,设置中断,设置DMA(设备未用到DMA方式,置为00)等,通过连接指令指示D12完成软连接(SoftConnect)后,电脑就会检测到新设备。
    在进入主循环后,需要用51的定时器2每隔1 ms检测一次电键的电平高低,并且将此信号通过USB接口发送出去,同时将P1.2口取反,以产生500 Hz的方波信号作为电键音。
2.5 协议层
    
chap_9.c:标准设备请求文件。该文件包含了所有设备相关的描述符,以及各个USB设备标准请求的实现函数。一个USB设备的各个特性都包含在了其所有的描述符内,而各个设备都有各自的特点,因此每个设备的描述符都要进行相应修改。其中,设备描述符里的idVendor与idProduct是联系PC端驱动的标志,必须与驱动一致。而各类标准设备请求是每个标准USB设备都要能够响应的,因此也就无须修改了。
    protodma.c:该文件用来描述厂商请求。如果USB设备需要响应厂商请求,那么就要编写该厂商请求的实现函数。由于终端操作平台无须定义特殊的厂商请求,因此该文件不用修改。

3 端点配置
    
在D12芯片内存在三套输入/输出端点,根据配置不同可完成不同的工作,终端操作平台中的固件中是按照表1配置的。

b.JPG


    根据端点的配置和各端点的特点,设置端点1为控制命令的传输端点,接收来自电脑的状态控制指令,共两个字节,如表2所示。

c.JPG


    设置端点2为电键信号传输端口,手电键的按下或抬起通过00和01来标识,传输间隔为1 ms。

4 固件程序
    
多路复用地址/数据总线方式的实现,通过地址线的最低位来分辨命令和数据:
    d.JPG
    e.JPG
    主循环程序首先做初始化I/O口,设置中断等准备工作,然后进入主循环,在主循环内查询事件标志,并做出相应处理。

5 结语
    
本文实现了USB固件程序的开发。该固件编写采用分层结构简洁且易于修改和测试,既增加了代码的可读性,又增加了程序的通用性和移植性。

换一批

延伸阅读

[智能硬件] 12nm或称为中国智能手机应用处理器新宠

12nm或称为中国智能手机应用处理器新宠

据DIGITIMES Research统计和分析,今年第2季度,中国智能手机应用处理器(AP)出货量提前拉货,较前期预估(季增34.6%)幅度加大。但该机构预估第3季度因第2季已提前拉货,因此,虽在旺季,预估大陆市场AP出货量季增长仅0.......

关键字:智能手机 12nm 处理器

[智能硬件] 你见过能同时给20台设备充电的充电器吗?

你见过能同时给20台设备充电的充电器吗?

随着家里的智能手机、平板电脑、耳机、智能音箱等设备的增多,充电已经变成了一个麻烦事,每个设备通常都带有自己的充电器,万一出个门就要带一大堆充电头。......

关键字:ACA-IP64 充电器 USB充电器

[智能硬件] 12nm的AMD Radeon RX 590究竟长什么样呢?

12nm的AMD Radeon RX 590究竟长什么样呢?

在这篇文章中,小编将为大家介绍一款12nm的显卡——AMD Radeon RX 590,它的具体情况和配置如何呢?看完全文你就知道了。......

关键字:AMD Radeon RX 590 12nm 显卡

[测试测量] 玩家风暴MF120S超低噪音运转,你值得拥有

玩家风暴MF120S超低噪音运转,你值得拥有

在“智能硬件”栏目里,小编对玩家风暴MF120S从硬件方面进行过详细介绍。此次,小编将对它抑制噪音的能力加以测评,一起来了解下吧。......

关键字:玩家风暴 MF120S 噪音

[智能硬件] 好PC需配备好风扇——玩家风暴MF120S风扇

好PC需配备好风扇——玩家风暴MF120S风扇

在这篇文章中,小编将为大家介绍一款可能不是特别了解的智能硬件——玩家风暴MF120S风扇,它的具体情况和配置如何呢?看完全文你就知道了。......

关键字:玩家风暴 MF120S 风扇

[智能硬件] USB设计和调试的7条布局经验

USB设计和调试的7条布局经验

USB是一种快速、双向、同步传输、廉价、方便使用的可热拔插的串行接口。由于数据传输快,接口方便,支持热插拔等优点使USB设备得到广泛应用。目前,市场上以USB2.0为接口的产品居多,但很多硬件新手在USB应用中遇到很多困扰,往往PCB装配......

关键字:USB设计 布局 PCB

[工业控制] 国内首台"巨无霸"NTE120AT无人驾驶电动轮矿车成功下线

国内首台

一辆巨大的矿用车稳稳地在测试场行进,驾驶室内却不见人影。这辆“巨无霸”就是中国兵器北重集团北方股份公司研制的国内首台110吨NTE120AT无人驾驶电动轮矿车。它于今年1月24日成功下线,使我国成为继美国、日本后第三个涉足矿用车无人驾驶技......

关键字:NTE120A 无人驾驶 电动轮矿车

[测试测量] ROG GL12CX主机功耗、散热能力测评,不管哪方面,“我”都是王者

ROG GL12CX主机功耗、散热能力测评,不管哪方面,“我”都是王者

在前面的文章里,小编对ROG GL12CX主机进行过常规性能测评和游戏性能测评。此次,小编将对它的功耗和散热能力加以测评,以帮助大家全面了解这款主机。......

关键字:ROG GL12CX 华硕 功耗

[测试测量] 华硕GL12CX主机测评之游戏性能测评

华硕GL12CX主机测评之游戏性能测评

在前面的文章里,小编对华硕GL12CX主机进行过常规性能测评。此次,小编将对它的游戏性能加以测评,一起来看看吧。......

关键字:华硕 GL12CX 游戏性能

[测试测量] 华硕GL12CX主机测评之常规性能测评

华硕GL12CX主机测评之常规性能测评

在前面的文章里,小编对华硕GL12CX主机从硬件方面进行过相关介绍。此次,小编将对它的常规性能加以测评,一起来看看吧。......

关键字:华硕 GL12CX主机 常规性能

[智能硬件] 超级超级超级贵的主机——华硕ROG GL12CX

超级超级超级贵的主机——华硕ROG GL12CX

此次,小编将为大家介绍一款售价将近3万元的主机——华硕ROG GL12CX,它的具体情况如何呢?一起来看看吧。......

关键字:华硕 ROG GL12CX 主机

[智能硬件] 新版USB Type-C新规范出炉

新版USB Type-C新规范出炉

USB Type-C接口有可能成为未来多数笔记本电脑、智能手机的唯一数据接口,但这些仅支持USB接口的设备仍必须与那些非USB接口的设备进行交互,比如显示器、电视机等。因此,设计人员需要考虑如何在单个连接器中实现USB和其他高速接口的转换......

关键字:USB Type-C 数据接口

[RFID] RFID读写器的分类以及其优势

RFID读写器的分类以及其优势

RFID读写器作为应用系统中必不可少的一部分,其选型正确与否将关系到客户项目能否顺利实施和实施的成本,在读写器选用方面最好经过严密的流程才能保证项目的成功。接下来本文就给大家讲解下RFID读写器的分类以及其优势都有哪些,有兴趣的小伙伴可以......

关键字: RFID读写器 125K RFID读卡器

[智能硬件] 美国制裁之后台湾厂商跟进,联电宣布暂停为晋华开发DRAM技术 ...

美国制裁之后台湾厂商跟进,联电宣布暂停为晋华开发DRAM技术 ...

被限制进口美国公司的设备及软件之后,晋华合作方联华电子也宣布将暂停与晋华的技术合作,原因是台湾主管部门依照美方要求限制某些设备。......

关键字:联电 DRAM 内存

[消费类电子新闻] 字节跳动副总裁张羽:抖音知识类视频累计播放量近6600亿次

字节跳动副总裁张羽:抖音知识类视频累计播放量近6600亿次

字节跳动副总裁张羽披露抖音成绩。5月7日消息,在第二届数字中国建设峰会期间,字节跳动副总裁张羽对外披露,截至今年4月底,抖音平台上与城市形象有关的视频数量超过5.4亿个,用户点赞量达624.8亿;抖音上粉丝过万的知识类创作者近2.9万个,相......

关键字:字节跳动 张羽

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客