0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于ATmega128单片机和CH375模块实现USB接口电路的设计

电子设计 来源:微计算机信息 作者:杨全玖;张大伟; 2020-06-30 07:50 次阅读

正离子静电加速器在运转过程中会产生能量较高的γpX和快中子等多种放射性辐射,对周围的环境造成污染,对生命造成危害。由于其体积庞大,辐射范围广,需设计一个多探测端的多通道同步核辐射监测系统,针对加速器周围环境进行辐射防护监测。每个探测端属于一个探测通道,它们相互独立。各通道将采集到的数据传输给上位机(主控计算机)。上位机进行数据处理并显示各个探测端的辐射强度及吸收剂量。

若采用串口(RS232)实现多通道传输,各通道每次向上位机传输的数据容量大(16K),而串口传输速度慢,花费的时间长。在通信过程中,相应通道进入中断服务程序后,不能够再采集新的信号,更加严重地影响了系统的探测效率。于是就采用CH375构成的USB接口进行数据传输。速率可提高到1Mbit/s以上。同时USB所具有的即插即用、通用性强、易扩展、可靠性好等优点也极大地改善了接口的使用性能。

1、CH375模块简介

USB模块CH375是一个USB总线的通用设备接口芯片,用户无需编写驱动程序,内置有USB通讯中的底层协议,完全满足USB1.1标准。具有8位数据总线(D0~D7)、地址输入(A0)、读(RD#)、 写(WR#)、片选控制线(CS#)以及中断输出(INT#),可以方便地挂接到单片机的数据总线上。当A0为低电平时选择数据端口,单片机通过8位并口对CH375进行读写数据;为高电平时选择命令端口,可以向其写入命令。

在本地端,单片机对CH375的操作是采用命令加数据的I/O操作方式,任何操作都是先发命令(其命令格式参考文献3)给CH375,然后执行数据输入输出。CH375接收到上位机发送的数据或者发送完给上位机的数据后,以中断方式通知单片机。

将CH375芯片的驱动程序、动态链接库拷贝到上位机中,利用CH375动态链接库DLL提供的API函数对其进行操作,对USB设备的通信就几乎和访问本地硬盘中的文件差不多了。

2、具有多个USB接口的多通道数据采集系统

图1是加速器的核辐射监测系统。是个具有多个USB接口的多通道数据采集系统。该系统可安装连接多个探测端(最多128个)。监测不同的放射性辐射时,装配相应的探测器。每个探测通道的工作原理电子线路都相同,分别连接到USB扩展卡上。多道分析器采用高性能AVR单片机ATmega128作为控制器。ATmega128运用Harvard结构概念,具有预取指令功能,机器周期为1个时钟周期,绝大多数指令为单周期指令,工作频率为16MHz时可达到16MIPS的性能。用其控制高速模数转换电路,把探测器输出的模拟量转换成计算机可接收的数字量,进行存储,等待上位机的读取。

基于ATmega128单片机和CH375模块实现USB接口电路的设计

单一探测通道,用CH375构成的USB接口电路原理如图2所示。各通道接收到上位机发出读取数据命令后,由ATmega128控制将所有探测数据通过USB接口电路传输给上位机。

3、多个通道USB接口的软件设计

各通道的USB模块CH375在计算机应用层与其本地端单片机ATmega128之间提供了端对端的连接。统一采用数据加应答方式进行通信,所有的通信都由计算机应用层发起,然后以接收到单片机的应答结束。单一通道完整的通信过程包括:

① 计算机应用层按事先约定的格式将数据请求发送给CH375;

② CH375以中断方式通知单片机。

③ 单片机进入中断服务程序,获取CH375的中断状态并分析;

④ 如果是上传(上传缓冲区的数据被计算机成功读取),则释放当前USB缓冲区,然后退出中断程序;

⑤ 如果是下传(下传缓冲区成功接收到计算机发送的数据),则从数据下传缓冲区读取数据块;

⑥ 分析接收到的数据块,如果是数据请求上传命令,准备应答数据(采集数据);

⑦ 单片机将采集数据写入数据上传缓冲区中,然后退出中断程序;

⑧ CH375将采集数据返回给计算机;

⑨ 计算机应用层接收到应答数据,传输结束;

该通讯方式具有数据自动同步、程序设计简单、较好的交互性和可控性等优点。计算机定时以此方式顺次访问各通道,获取各通道采集到的数据。

3.1 单片机端的程序设计

各通道单片机端程序设计相同。ATmega128中断1(INT1)作为USB的中断入口(参考图2),采用数据加应答方式,其中断1服务处理程序设计流程图如图3所示。

采用C语言编程,编写单片机端ATmega128中断1服务处理程序的基本框架如下所示:

void int1_isr (void) //USB中断入口程序

{

CH375_WR_CMD_PORT(CMD_GET_STATUS); //向CH375发送中断状态获取命令

InterruptStatus = CH375_RD_DAT_PORT();//获取中断状态,并通知CH375取消中断请求

// 分析中断状态,并做相应处理

if ( InterruptStatus= =USB_INT_EP2_OUT) // 数据下传

{

CH375_WR_CMD_PORT( CMD_RD_USB_DATA );// 向CH375发送读数据命令

RD_Data =CH375_RD_DAT_PORT( );//从CH375下传缓冲区读取数据块

……… //分析接收到的数据块

CH375_WR_CMD_PORT(CMD_WR_USB_DATA7); // 向CH375发送写数据命令

CH375_WR_DAT_PORT( DATA);// 将采集数据DATA写入CH375数据上传缓冲区

return;

}

If(InterruptStatus= = USB_INT_EP2_IN) // 数据上传

{

CH375_WR_CMD_PORT( CMD_UNLOCK_USB );// 释放当前USB缓冲区

return;

}

}

3.2 计算机端的程序设计

采用Visual C++作为计算机端应用软件的开发平台,以实现两通道USB数据传输为例,计算机端程序设计流程图如图4所示。USB设备1即指通道1;USB设备2即指通道2。

图4 计算机端两通道USB数据传输程序设计流程图

利用MFC(微软基础类)定时器函数,计算机定时顺序访问两通道,获取采集数据。编写计算机端定时中断处理程序的基本框架如下所示:

OnTimer(UINT nIDEvent) //定时函数入口

{

if (CH375OpenDevice(0 )= =INVALID_HANDLE_VALUE) // 打开USB设备1(通道1 USB模块CH375),返回句柄,出错无效

………

if (CH375OpenDevice(1 )= =INVALID_HANDLE_VALUE) //打开USB设备2

………

if ( CH375WriteData( 0, WriteBuf, length) ) //发送数据请求命令给USB设备1,成功发送后返回真。WriteBuf指向放置准备写出数据的缓冲区。Length指向长度单元,输入时为准备写出的长度,返回后为实际写出的长度。

………

if ( CH375ReadData( 0, ReadBuf, length) ) //从USB设备1读取采集数据,成功读取后返回真。ReadBuf为指向用于保存读取数据的缓冲区。Length指向长度单元,输入时为准备读取得长度,返回后为实际读取得长度。

………

CH375CloseDevice( 0 ); //关闭USB设备1

if ( CH375WriteData( 1, WriteBuf, length) ) //发送数据请求命令给USB设备2

………

if ( CH375ReadData( 1, ReadBuf, length) ) //从USB设备2读取采集数据

………

CH375CloseDevice( 1 ); //关闭USB设备2

}

4 、结束语

采用CH375进行USB数据传输速率高,达到1Mbit/s以上。而且无需编写复杂的USB驱动程序,利用其动态链接库即可实现多通道USB接口与PC机通信。研发简单,易于实现,可以使数据传输系统非常方便的从RS232总线转向USB总线,弥补其速度慢的缺点,进行系统升级。并且USB所具有的各种优越性能,也必将使这种接口电路在数据传输中得到更广泛的应用。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    453

    文章

    50360

    浏览量

    421638
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632696
  • usb
    usb
    +关注

    关注

    60

    文章

    7888

    浏览量

    263929
收藏 人收藏

    评论

    相关推荐

    USB总线接口芯片CH375

    单片机/DSP/MCU/MPU等控制器的系统总线上。在USB主机方式下,CH375还提供了串行通讯方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU等相连接。
    发表于 03-08 14:28

    采用CH375多通道USB接口实现与PC的通信

    采用C语言编程,编写单片机ATmega128中断1服务处理程序的基本框架如下所示:void int1_isr (void)//USB中断入口程序{CH375
    发表于 05-05 09:29

    采用CH375接口电路实现LPT-USB打印机驱动器设计

    单片机通过CH375控制USB打印机的硬件电路CH375通过被动并行接口
    发表于 06-18 05:00

    基于CH375多通道USB接口与PC通信的实现

    利用USB接口技术,采用USB模块CH375,在加速器核辐射监测系统中实现了多个探测通道
    发表于 06-26 08:51 39次下载

    CH375中文资料,pdf datasheet(USB总线接口芯片)

    CH375 是一个USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式。在本地端,
    发表于 07-22 11:07 300次下载

    USB接口芯片CH375的原理及应用

    USB接口芯片CH375的原理及应用:对USB 接口芯片CH375 的功能、原理做了较详细的介绍
    发表于 09-20 18:07 133次下载

    基于CH375实现单片机读写U盘

    摘要:介绍了一种USB总线的通用接口芯片CH375,并在此基础上提出了一种外部单片机读写U盘的基本方法及其硬件连接方法。单片机只要在原硬件系
    发表于 09-10 14:40 187次下载

    基于CH375USB文件加解密系统设计

    介绍了采用CH375单片机实现的基于USB HOST 技术的嵌入式文件加密解密系统,该系统采用基于随机算子的轻量级加密算法对USB 移动
    发表于 05-17 15:43 32次下载
    基于<b class='flag-5'>CH375</b>的<b class='flag-5'>USB</b>文件加解密系统设计

    ATmega128CH374的USB接口设计

    ATmega128CH374的USB接口设计
    发表于 10-31 08:28 27次下载
    <b class='flag-5'>ATmega128</b>和<b class='flag-5'>CH</b>374的<b class='flag-5'>USB</b><b class='flag-5'>接口</b>设计

    CH375的MSP430读写U盘的设计与实现方案

    给出了一种基于CH375 实现MSP43OF44g 单片机读写U 盘的设计方案该方案以油井电量采集仪为应用背景, 利用 MSp43O 单片机CH3
    发表于 04-26 09:15 32次下载
    <b class='flag-5'>CH375</b>的MSP430读写U盘的设计与<b class='flag-5'>实现</b>方案

    USB总线通用接口芯片CH375对比色计仪器的设计

    常用的 USB全速设备,外部单片机可以通过 CH375按照相应的协议与 USB设备通讯。CH375支持 5V和 3.3V电源电压和低功耗模式
    发表于 07-17 15:21 2315次阅读
    <b class='flag-5'>USB</b>总线通用<b class='flag-5'>接口</b>芯片<b class='flag-5'>CH375</b>对比色计仪器的设计

    沁恒股份USB总线接口芯片:CH375概述

    方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。在USB 主机方式下,CH375还提供了串行通讯方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU
    的头像 发表于 11-01 11:16 2657次阅读
    沁恒股份<b class='flag-5'>USB</b>总线<b class='flag-5'>接口</b>芯片:<b class='flag-5'>CH375</b>概述

    DAC1230与单片机Atmega128接口技术

    DAC1230与单片机Atmega128接口技术(开关电源技术课程设计报告)-文档为DAC1230与单片机Atmega128
    发表于 09-17 15:45 5次下载
    DAC1230与<b class='flag-5'>单片机</b><b class='flag-5'>Atmega128</b>的<b class='flag-5'>接口</b>技术

    用51单片机ch375实现键鼠功能

    。若真想实现键鼠功能,推荐使用32及类似的单片机做。简单介绍:ch375CH375 是一个 USB 总线的通用
    发表于 11-20 14:06 19次下载
    用51<b class='flag-5'>单片机</b>和<b class='flag-5'>ch375</b><b class='flag-5'>实现</b>键鼠功能

    基于ATmega128CH374的USB接口设计

    电子发烧友网站提供《基于ATmega128CH374的USB接口设计.pdf》资料免费下载
    发表于 10-25 10:07 1次下载
    基于<b class='flag-5'>ATmega128</b>和<b class='flag-5'>CH</b>374的<b class='flag-5'>USB</b><b class='flag-5'>接口</b>设计