微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > C8051F064单片机在远端测控装置中的应用

C8051F064单片机在远端测控装置中的应用

时间:09-28 来源:互联网 点击:

且需要掉电保持的数据,如模拟量的修正值等;实时时钟内114字节的RAM读写速度较快,而且访问方便,所以用它存放需要掉电保持的中间变量,这样可以随意读写;8KB的E2PROM受总线逻辑的限制,读写较慢,但数据区较大,用来存放功能的设定值,在程序初始化的时候把它读出并放到中间变量区,以后不对其操作,修改内部数据操作不宜在中断中进行,防止延长中断时间。

  看门狗

  本文采用的是22.1184MHz晶振,那么看门狗监控时间最长只有47.4ms,这对实时性要求不高。本文采用中断喂狗的方式。一般来说单纯的中断喂狗是不可以的,因为程序中起作用的是主循环,而当主循环进入非正常状态时,中断往往还在进行,所以用中断喂狗还需主循环配合。这里采用的是5ms中断喂狗,在中断中用变量a累加,当a累加到100时,就不再喂狗;而主循环内不断将a清0,这样就可以把看门狗的时间延长到500ms。

  模拟量滤波

  C8051F064的ADC是逐次逼近型的,虽然速度快至1MSPS,但数据的抖动特别大,所以在混合系统中应用时,外围一定要加滤波电路,如果在硬件设计中没有考虑也没关系,可以充分利用它的速度,在内部采用软件滤波的方式。本系统对模拟量的采集速度要求不高,只求稳定和准确,在内部采用了20个点的中位值平均滤波,然后再用20次平均值算法,这样,就算外围没有任何滤波措施,也能得到很好的效果。

串口

  C8051F064内部带有两个UART,其中串口0经光电隔离转换为RS-485信号,用于跟现场的其他设备连接,串口1再加上6个GPIO口经电平转换后成为全功能标准的RS-232接口,用于与Modem、电台、CDMA等连接。用C8051F064的SPI口经MAX3100扩展成UART,通过外部的可选配件,转变成RS-232或RS-485信号。

  模拟量

  C8051F064的模拟量输入最高不超过3.6V,所以接入信号时要注意其范围,针对此系统,由于现场信号大部分是4mA~20mA电流,因此用100Ω的精密电阻,配上2.5V的精密电压源,可以将模拟量的精度调整到1‰。另外,启动内部ADC0的窗口检测功能,可以方便地实现模拟量的上下限越限报警功能。

  数字量

  大部分数字量直接挂在总线上,另外,有两路开关量输入直接接到单片机引脚,并在内部分配这两个引脚为定时/计数器的输入,这两路就可以兼做脉冲量了。

  单片机资源分配

  C8051F064的端口功能分配使用交叉开关的方式,而且还带有优先级,这种方式很灵活,但是要求设计师在电路设计时就要将内部的功能分配就绪,也就是说电路板加工完成后就不可以随意修改交叉开关了。

  复位

  C8051F064除了实现传统的RESET信号复位外,还有上电、掉电、外部信号、软件命令、比较器0、时钟丢失检测及开门狗等复位功能,共7种复位方式。单片机复位后可以通过查询寄存器得知是何原因引起的复位,这对数据的处理和故障分析都是很有用的。本系统使用的是上电、软件命令、时钟丢失和看门狗,增加软件命令复位的原因是:由于这些设备的安装地点都是比较偏远的,当中心站察觉此设备异常时,可以将其重新启动,以解决一些异常问题。

  

  三 一些技术问题

  数据的存储

  在这个系统中有多个可以存储数据的存储器,如256字节的内部RAM、4KB的内部扩展RAM、32KB的外扩RAM、128字节的Flash、实时时钟内114字节的电池保持RAM和外扩8KB的E2PROM,这么多的数据存储区,一定要仔细分配其用途,以便充分发挥功能和速度。本系统作如下分配:256字节的内部RAM读写速度最快,而且它是单片机内核所占用的,所以要减少使用,它用在对速度要求较高且频繁使用的地方,如中断内的变量等;4KB内部扩展RAM和32KB外扩RAM的地位是等同的,一般用作程序的中间变量;128字节的Flash是整片修改的,所以修改之前要把所有数据读到缓冲区,将要修改的字节改掉,再把整片擦除,然后把数据写入。虽然写比较麻烦,但是读取很方便,所以用它存放一些不经常改动而且需要掉电保持的数据,如模拟量的修正值等;实时时钟内114字节的RAM读写速度较快,而且访问方便,所以用它存放需要掉电保持的中间变量,这样可以随意读写;8KB的E2PROM受总线逻辑的限制,读写较慢,但数据区较大,用来存放功能的设定值,在程序初始化的时候把它读出并放到中间变量区,以后不对其操作,修改内部数据操作不宜在中断中进行,防止延长中断时间。

  看门狗

本文采用的是22.1184MHz晶振,那么看门狗监控时间最长只有47.4ms,这对实时性要求不高。本文采用中断喂狗的方式。一般来说单纯的中断喂狗是不可以的,因为程序中起作用的是主循环,而当主循环进入非正常状态时,中断往往还在进行,所以用中断喂狗还需主循环配合。这里采用的是5ms中断喂狗

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top