当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于ATmega128和CH374的USB接口设计

摘要:针对嵌入式MCU的USB接口需求,提出了以ATmega128为微处理器,采用USB控制器CH374,用SPI串口方式设计了一款USB接口,以解决嵌入式MCU与PC机进行通讯问题。文中介绍了该接口的硬件电路和软件设计方法,充分利用南京沁恒公司提供的资源,大大降低了软件设计的难度,提高了工作效率。在1KW碟式斯特林太阳能热发电装置中得到了应用,实践证明,该USB接口工作稳定、可靠,成本较低,取得了良好的应用效果。
关键词:ATmega128;CH374;SPI;USB接口

    随着嵌入式系统的发展,嵌入式MCU需要增加USB接口,以便实现与PC机等USB主机系统的通信。针对这样的需求,解决方案比较多,均有一个共同点,都采用PHILIPS公司的PDIUSBD12芯片,该芯片为并行总线接口,占用过多的MCU端口资源,且与MCU的软件接口编写复杂,同时芯片价格也不便宜。为此,采用南京沁恒电子有限公司的USB芯片CH374设计了一款USB接口,以解决嵌入式MCU与PC机通信问题。CH374不仅价格有优势,该公司还提供了完善的USB驱动程序,且在芯片内部集成了数据缓冲区、被动并行接口、串行接口、命令解释器、通用的固件程序等,这样,以CH374设计的USB设备,不需要详细了解USB通讯协议,开发编程非常方便。

1 系统硬件设计
1.1 系统原理
    该系统以ATmega128单片机和CH374接口芯片为核心。ATmega128单片机是基于AVR RISC结构8位低功耗CMOS微处理器,内部带有128 Kb的系统内可编程FLASH程序存储器;4 Kb的EEPROM;4 Kb的SRAM;串行外围设备接口(SPI);有53个可编程的通用I/O脚,32个通用工作寄存器;有4个灵活的具有比较模式和PWM功能的定时器/计数器(T/C);自带8通道10位ADC,可选的可编程增益;片内振荡器的可编程看门狗定时器:与IEEE1149.1规范兼容的JTAG测试接口,可以用于片上调试;6种可以通过软件选择的省电模式,采用64引脚TQFP与MLF封装;峰值运算速度达16 MIPS,非常适合应用在嵌入式系统中。
    USB器件采用CH374。该芯片支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式,内置3端口HUB根集线器,支持低速和全速的控制传输、批量传输、中断传输以及同步/等时传输。CH374具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP /MCU/MPU等控制器的系统总线上。在计算机系统中,CH374的配套软件提供了简洁易用的操作接口,与本地端的单片机通信就如同读写文件,降低了开发难度,除此之外,CH374还提供了节约I/O引脚的SPI串行通讯方式,通过SPI串行接口以及中断输出与单片机/DSP/MCU/   MPU等相连接。系统原理图如图1所示。


1.2 硬件电路
    CH374通过SPI串行接口以及中断输出与单片机连接,以便节约单片机的I/O引脚。CH374芯片的RD#引脚和WD#为低电平(接地)且CS#引脚为高电平(接正电源),则CH374将工作于SPI串口方式。在SPI串口方式下,CH374只需要与ATmega128单片机连接5个信号线:SCS#引脚、SCK
引脚、SDI引脚、SDO引脚以及INT#引脚,其它引脚都可以悬空。电路示意图如图2所示。


    ATmega128单片机配置为SPI主机时,SPI接口不自动控制PBO(SS#)引脚,必须由用户软件在通信开始前进行处理。对SPI数据寄存器写入数据即启动SPI时钟,将8比特的数据移入CH374芯片。CH374的SPI接口支持SPI模式0和SPI模式3,CH374总是从SPI时钟SCK的上升沿输入数据,并在允许输出时从SCK的下降沿输出数据,数据位顺序是高位在前,计满8位为一个字节。SPI的操作步骤如下:
    1)ATmega128产生CH374芯片的SPI片选,低电平有效;
    2)ATmega128按SPI输出方式发出一个字节的地址码,用于指定其后读写操作的起始地址;
    3)ATmega128发出一个字节的命令码指明操作方向,读操作命令码是COH,写操作命令码是80H;
    4)如果是写操作,ATmega128发出一个字节的待写数据,CH374收到并保存到指定地址后地址自动加1,ATmega128继续发出若干个字节的待写数据,CH374依次处理,直到ATmega128禁止SPI片选;
    5)如果是读操作,CH374从指定地址读出一个字节数据并输出后地址自动加1,ATmega128收到数据并保存,CH374继续从下一个地址读出数据并输出,直到ATmega128禁止SPI片选;
    6)ATmega128禁止CH374芯片的SPI片选,以结束当前SPI操作。
[!--empirenews.page--]
2 系统软件设计
    软件开发采用ATMEL公司的AVR STUDIO 3.53集成开发环境,包括:AVR ASSEMBLER编译器、AVR STUDIO调试功能、AVR PROG串行、并行下载功能、JTAG ICE仿真功能,本设计采用的是JTAG ICE仿真调试。软件设计主要包括固件程序设计、应用程序设计和驱动程序设计3个部分。
2.1 固件程序设计
    CH374内置了USB通信中的底层协议,因此单片机程序非常简洁。在外置固件模式下,在完成CH374的初始化工作后,由外部单片机根据需要自行处理各种USB请求,从而完成USB总线连接过程。初始化CH374主要完成USB设备的枚举,CH374初始化程序的程序如下:
    void CH374_PORT_INIT() /*进行初始化*/
    { unsigned char i;
    PORTB |=0x03;/*禁止SPI片选,设置SCS#默认为高电平*/
    DDRB |=0x07;/*设置SCS#,SCK,SDI为输出*/
    DDRB&=0x08;/*SDO输入*/
    SPCR=0x5C;/*设置SPI模式3*/
    CH374_DAT_PORT=1;/*设置为使用外置固件的USB设备方式*//*下述启用中断,CH374连接在INT0*/
    IT0=0;/*置外部信号为低电平触发*/
    IE0=0;/*清中断标志*/
    EX0=1;/*允许CH374中断*/
    }
2.2 应用程序设计
    CH374在计算机端提供了应用层接口,应用程序的设计可根据用户的需求进行适当调整。应用层接口是由CH374动态链接库DLL提供的面向功能应用的API,包括设备管理API、数据传输API和中断处理API。
    设备管理API主要包括:1)打开、关闭设备;2)获取USB设备,配置描述符;3)复位USB设备。
    数据传输API主要包括:1)读取数据块;2)写出数据块。
    中断处理API主要包括:1)读取中断数据;2)设定中断服务程序。
    使用这些API函数,可以很容易地开发出与硬件电路相配套的应用软件,CH374与计算机连接的上位机总体程序流程图如图3所示。


2.3 USB驱动程序设计
    USB驱动程序可以采用WDM(Windows Driver Mode)模式设计。WDM驱动程序采用灵活的分层驱动方法,在用户和物理设备之间存在着几个不同的驱动程序层次,且各层上的WDM驱动程序具有不同优先级。利用WDM设计的驱动程序可根据用户的需要调整,灵活性好,但需要了解操作系统原理及相关硬件工作细节,而且工作量较大。所以,USB驱动程序设计采用CH374芯片厂家提供的通用驱动程序,直接下载后安装即可,大大降低了开发的难度。

3 应用结果
    文中所设计的USB接口在1kW碟式斯特林太阳能热发电装置中得到了应用,实现对太阳高度角和方位角的跟踪,系统结构如图4所示。该发电装置对太阳的跟踪采用视日运动轨迹法,所需要的太阳赤纬度角δ、纬度角δ和时角δ由计算机通过USB接口芯片CH374写入ATmega128单片机,然后单片机通过一套计算公式计算出太阳的位置,即实际时刻太阳所在高度角和方位角,输出一定的脉冲数,驱动伺服电机转动,使发电装置转到要求的位置,实现对太阳的跟踪。同时,通过CH374把整个发电装置的状态数据发给计算机,在计算机显示,以便实现人机对话,为今后在25 kW碟式斯特林太阳能热发电系统的研制打下基础。实践证明,该USB接口工作稳定、可靠,成本较低,完全能够满足碟式斯特林太阳能热发电装置的控制指标要求,取得了良好的应用效果。



4 结束语
    以ATmega128和CH374为核心,通过SPI串口通讯方式设计了一款USB接口,系统硬件简单,不需要编写复杂的USB驱动程序,利用其动态链接库即可实现USB与PC的通信,研发简单,易于实现。该设计在实际项目中投入了使用,效果良好,具有一定的设计参考价值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭