基于 C8051F 的智能测量系统
扫描二维码
随时随地手机看文章
1 引言
智能测量在各行各业已得到广泛的应用[1][2][3],测量所得到的数据可以通过串口或经外部的 USB 桥接器桥接后经 USB 口与上位机交换数据[2] [3][4]。如果单片机本身已集成了 USB通讯模块,这将大大降低系统成本,提高系统的可靠性。本系统正是基于此而选用 C8051F34x 芯片,它是 Silicon Laboratories 公司最新推出的一款可提供 USB 功能的混合信号微控制器 的高度集成产品[1],包含了高速管线的 8051 兼容微控制器核心,可以在高达 48 MIPS 的速率下工作,它提供 64 KB 的芯片内建闪存以及 5376 字节的 RAM,其中 70%的指令可以在一个或两个机器周期中执行,并获得同等级中最佳的 CPU 传输率;USB 功能控制器具有完整的 USB 2.0 认证,支持全速与低速操作并包含 8 个端点管线;模拟外设包含一个真正 10位 200 ksps 差分或单端 ADC,可以支持高达 17 个外部模拟输入;时序功能可以通过 4 个通用型 16 位定时器或一个 5 通道的可编程计数器/定时器阵列(PCA)来实现,在此有 5 个全功 能端口可以提供 40 个可控制的 I/O 引脚(5 个 8 位口)。
图 1 系统结构框图
智能数据采集系统包括:步进电机控制、数据采集、数据传输、数据处理等部分(如图1 所示)。为了进一步提高系统的可靠性和降低成本,本文提出了采用片上系统(SOC)的解决方案——基于 C8051F340 的智能测量模块,该模块接收上位机的指令来控制步进电机的动 作,对传感器送来的信号进行 A/D 转换,向上位机传送测量数据。
2 模块的工作原理和功能
智能测量模块的核心是片上系统(SOC),即 C8051F340 单片机,它具有 USB 通信端口和 A/D 转换模块。通过应用 C8051F340 内含的数字端口实现对步进电机的控制,A/D 模块 对模拟输入端的信号进行数据采集,通过芯片中的 USB 端口与上位机进行数据交换。采用C8051F340 单片机后,可以充分利用芯片的内部资源,从而节约系统成本。
2.1 步进电机控制功能
步进电机的控制量为时钟脉冲、启、停和方向控制信号。在实际应用中启、停信号和方 向控制信号相对来说比较简单,只要向指定的数字端口输出高、低电平就能控制步进电机的启动、停止、正向和逆向转动。 步进电机所需的时钟脉冲则要通过对片内定时器进行编程,使用定时中断在指定的数字端口输出脉冲信号。C8051F340 内含的定时器 2 是一个 16 位的计数器/定时器(见图 2),由两个 8 位的 SFR 组成:TMR2L(低字节)和 TMR2H(高字节)。定时器 2 可以工作在 16 位自动 重装载方式、8 位自动重装载方式(两个 8 位定时器)或 USB 帧起始(SOF)捕捉方式。当T2SPLIT =“0”且 T2SOF =“0”时,定时器 2 工作在自动重装载的 16 位定时器方式。
图 2 定时器 2 的 16 位方式原理图
定时器 2 可以使用 SYSCLK、SYSCLK/12 或外部振荡器时钟/8 作为时钟源。当 16 位定 时器寄存器发生溢出(从 0xFFFF 到 0x0000)时,定时器 2 重载寄存器(TMR2RLH 和 TMR2RLL) 中的 16 位计数初值被自动装入到定时器 2 寄存器对 TMR2H:TMR2L,并将定时器 2 高字节 溢出标志 TF2H 置“1”。如果定时器 2 中断被允许,每次溢出都将产生中断。在定时器 2 的中断服务程序中,可根据上位机下达的指令,对中断次数进行计数。当中 断次数达到指定数值时立即改变指定端口的数值(0 变 1、1 变 0),从而就能在该数字端口产 生一个指定脉宽的脉冲信号。智能测量模块采用 C8051F340 片内振荡器(12MHz)产生的 SYSCLK/12 作为定时器的时钟源,数字端口设置为推挽输出,当重载寄存器的值为 0xFF64 时能在数字端口输出最高为3205Hz 的方波。由于所选用的芯片是低电压、低功耗的高速器件,有时还存在着数字端口与步进电机控制电路之间信号电平的匹配问题,为此可选用相应的电平转移电路来解决。
2.2 数据采集和处理功能
C8051F340 内部有一个 10 位 SAR ADC 和一个差分输入多路选择器。该 ADC 工作在200ksps 的最大采样速率时可提供真正 10 位的线性度。ADC 系统包含一个可编程的模拟多 路选择器,用于选择 ADC 的正输入和负输入以及测量信号源。A/D 转换可以有 6 种启动方式:软件命令、定时器 0 溢出、定时器 1 溢出、定时器 2 溢出、定时器 3 溢出或外部转换启动信号。这种灵活性允许用软件事件、周期性信号(定时器溢出)或外部硬件信号触发转换。 一个状态位用于指示转换完成,或产生中断(如果被允许)。转换结束后 10 位结果数据字被锁存到 ADC 数据寄存器,即 ADC0H 和 ADC0L 中(见图 3)。
智能测量模块在数据采集时,GND 被选择为负输入,则 ADC0 工作在单端方式,转化 码为 10 位无符号整数,所测量的输入信号范围为 0 ~VREF×1023/1024。VREF 为 A/D 转换 时的参考电压,可用片内提供的基准电压。转换数据在寄存器对 ADC0H:ADC0L 中的存储 方式可以是左对齐或右对齐,采用右对齐时测量结果的数值范围为 0 ~0x3FF。向 AD0BUSY 写“1”方式提供了用软件控制 ADC0 转换的能力。AD0BUSY 位在转换期间被置“1”,转 换结束后复“0”。在定时器 2 的中断服务程序中,可根据步进电机的工作模式和上位机的指令,确定步进 电机运动多少步后再启动 A/D (AD0BUSY 写“1”)——采集数据,并将数据保存在闪存中。 对于被测信号电平有严格的要求,前置放大器的输出级可用运放 OP07 组成电压跟随电路,并在输出端加装限压保护电路以保证单片机模拟输入端的安全。
2.3 数据通信功能
C8051F340 集成了 USB 功能控制器,用于实现 USB 接口的外部设备(C8051F340 不能作 USB 主设备),USB 功能控制器和收发器具有完整的 USB 2.0 认证,支持全速与低速操作 并包含 8 个端点管线,控制端点(端点 0)总是作为双向 IN/OUT 端点,其它端点被作为 3 对IN/OUT 端点管线,通信速度可通过特殊功能寄存器 USB0XCN 中的 SPEED 位选择,要使USB0 工作在全速方式,USB0 的时钟必须为 48 MHz。当 USB 接收数据时,串行接口引擎SIE)在接收完一个完整的数据包后中断处理器;相应的握手信号由 SIE 自动产生。当发送 数据时,SIE 在发送完一个完整的数据包并且收到相应的握手信号后中断处理器。智能测量模块采用 C8051F340 片内振荡器(12MHz)产生的 SYSCLK,经内置的 4 倍时钟 乘法器产生 48MHz 时钟,使 USB0 工作在全速方式。模块设置成通过端点 1 向上位机发送数据,端点 2 接收上位机送来的数据,USB 工作在中断方式。
3 软件设计及系统测试
模块通讯协议的三层结构模型为:物理层、数据链路层和应用层。物理层和数据链路层的功能包括各种通讯帧结构的组织和收发, 是由 SOC 本身实现的, 因此系统的开发将集中在应用层软件的设计。
固件程序主要包括初始化、主控程序和 3 个中断服务程序。模块初始化部分就是要定义SOC 的工作频率,定义模拟、数字端口的输入/输出模式,定义 USB 中断、定时器 2 中断和A/D 中断的工作模式;主控程序处理前台任务,主要是响应各类中断和利用公共数据区进行数据交换;步进电机的控制、数据的采集和数据的通信都将利用中断服务程序在后台实现。
图 5 上位机程序框图
上位机程序采用 VC 可视化开发平台,对 USB 端口形成的通信管道进行标准的读写操作,从而实现上位机与 C8051F340 的数据通讯,实时显示现场参数、绘制图形,并对现场参数进行系统分析。上位机程序采用主线程和辅线程协调工作模式, 可以降低主程序处理时间, 提高通讯效率。
对图 1 所示的系统进行测试:分别对椭圆偏振片、圆偏振片组成的光路进行光强分布测试,步进电机由 C8051F 单片机控制,每秒钟转一圈测 200 个数据;PC 机通过 USB 口接收数据,并对数据进行分析和拟合,根据偏振片的不同组合,可得到圆形、椭圆形、腰果形等不同类型的图形。
4 结束语
论文提出的基于 C8051F340 的智能测量系统由于采用小体积贴装芯片,不必外接其它A/D 转换和 USB 通信接口器件,减小了整机的体积,提高了整机的性价比和可靠性。测试表明,该模块在实际检测过程中能够准确的提取被测对象的信号特征,各项指标都符合测试要求。
本文作者创新点:采用 Silicon Laboratories 公司最新推出的一款微控制器 C8051F340 为 智能测量系统的核心,因其可提供 USB 功能,集测量控制、数据采集、数据通讯为一体,便于软件开发,并减小了整机的体积,提高了整机的性价比和可靠性。