控制/MCU
1 引言
智能测量在各行各业已得到广泛的应用,测量所得到的数据可以通过串口或经外部的 USB 桥接器桥接后经 USB 口与上位机 交换 数据。如果单片机本身已集成了 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)。
图3 10位ADC威廉希尔官方网站 图
智能测量模块在数据采集时,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 功能,集测量控制、数据采集、数据通讯为一体,便于软件开发,并减小了整机的体积,提高了整机的性价比和可靠性。
全部0条评论
快来发表一下你的评论吧 !