机电之家资源网
单片机首页|单片机基础|单片机应用|单片机开发|单片机文案|软件资料下载|音响制作|电路图下载 |嵌入式开发
培训信息
赞助商
基于CH375多通道USB接口与PC机通信的实现
基于CH375多通道USB接口与PC机通信的实现
 更新时间:2008-8-19 13:35:26  点击数:64
【字体: 字体颜色
摘要:利用USB接口技术,采用USB模块CH375,在加速器核辐射监测系统中实现了多个探测通道USB接口与计算机通信。给出了CH375与单片机接口电路的原理简图,并详细介绍了实现多通道USB数据传输的上、下位机的程序设计。

关键词:USB接口,加速器,核辐射监测系统,多通道

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

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

1 CH375模块[4]简介

  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的性能[5]。用其控制高速模数转换电路,把探测器输出的模拟量转换成计算机可接收的数字量,进行存储,等待上位机的读取。


图1加速器多通道核辐射监测系统结构图

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


图2 CH375构成的USB接口电路原理图

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

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

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

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

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

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

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

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

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

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

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

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

3.1 单片机端的程序设计

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


图3 单片机端ATmega128中断服务处理程序流程图

  采用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。

[1] [2]  下一页
  • 上一篇: 用ST72141实现无刷直流电机的控制
  • 下一篇: 基于nRF24E1的无线点菜系统架构
  • 发表评论   告诉好友   打印此文  收藏此页  关闭窗口  返回顶部
    热点文章
     
    推荐文章
     
    相关文章
    网友评论:(只显示最新5条。)
    关于我们 | 联系我们 | 广告合作 | 付款方式 | 使用帮助 | 机电之家 | 会员助手 | 免费链接

    点击这里给我发消息66821730(技术支持)点击这里给我发消息66821730(广告投放) 点击这里给我发消息41031197(编辑) 点击这里给我发消息58733127(审核)
    本站提供的机电设备,机电供求等信息由机电企业自行提供,该企业负责信息内容的真实性、准确性和合法性。
    机电之家对此不承担任何保证责任,有侵犯您利益的地方请联系机电之家,机电之家将及时作出处理。
    Copyright 2007 机电之家 Inc All Rights Reserved.机电之家-由机电一体化网更名-声明
    电话:0571-87774297 传真:0571-87774298
    杭州滨兴科技有限公司提供技术支持

    主办:杭州市高新区(滨江)机电一体化学会
    中国行业电子商务100强网站

    网站经营许可证:浙B2-20080178-1