基于C8051F120的参数动态配置设计

2017-06-10 17:25杨伟
移动通信 2017年8期

杨伟

【摘 要】参数的动态配置对于单片机控制设备而言至关重要。通过参数配置的需求分析,明确了参数的硬件相关性和参数数据量小的特点,选择C8051F120作为实现平台,在C8051F120上实现了对参数的读写及动态配置,并通过了实际使用和测试,简单实用。

【关键词】C8051F120 参数配置 FLASH

Design of Dynamic Parameter Configuration Based on C8051F120

YANG Wei

[Abstract] The dynamic parameter configuration is crucial for the control equipment of MCU. Based on the requirement analysis on parameter configuration, the features of hardware correlation and small amount of parameters were determined. C8051F120 selected as the implementation platform, the read-write and dynamic configuration of parameters was realized. The practical use and test demonstrate the simplicity and feasibility.

[Key words]C8051F120 parameter configuration FLASH

1 引言

对于单片机控制设备而言,或多或少都有些重要的参数需要配置。控制设备可以根据所配置的不同参数,实现不同的功能和作用。在硬件平台不改变的情况下,仅通过读取所配置的数据就可以启动不同的程序,完成不同的任务。同样,部分调试功能的程序也可以通过参数配置的方式进行开启或关闭。显而易见,参数动态配置对单片机控制设备极为重要。

在需要校准和基准需要调整的单片机控制设备上,校准数据和基准就是需要动态保存的参数。通常情况下,需要动态保存的参数的数据量较小。因此,在控制设备中实现参数的动态更新和保存,并不需要选择硬盘或光盘大容量的存储方式,只需要选择合适的平台。这样既可以简化设计,又提高了可靠性。

2 配置参数的需求分析

在控制设备中需要保存的参数包括2个基准值及3个补偿值。基准值和补偿值均是和硬件电路特性相关,受到滤波器、AD转换器、混频器等器件的影响。因此,在不同的硬件平台上基准值和补偿值有所差异。其中,基准值的范围为-60~5,补充值的范围为-10~10,均为有符号的数。根据需要选择参数类型signed char。所需配置的参数一共5个字节,数据量很小。定义参数语句如下:

signed char refValue//基准值,

signed char compAD9874 //补偿值。

3 实现平台C8051F120的FLASH简介

C8051F120芯片具有DA/AD转换器、片内看门狗定时器、VDD监视器和温度传感器等丰富的片内资源,同时具有高速、低功耗、工业级等特点,很适合用于控制场合。本文就选用C8051F120作为控制设备的实现平台。

C8051F120内部有128 kB的FLASH存储器,可用于程序代码和非易失性数据存储。另外,FLASH存储器中有两个附加的128字节的扇区(共256字节),只能用于非易失性数据存储。而且,FLASH写/擦除寿命在-40 ℃~+85 ℃的工业温度范围内保证在10 000次以上,适合多次配置。FLASH存储器中256字节很适合用来存储信息量小的数据,可以简化设计和节省成本。

FLASH存儲器可以每次写一个字节,但必须首先擦除整个扇区。如果要修改一个多字节数据集中的某一个字节,数据必须被移动到临时存储区域。128字节的扇区规模使数据更新更加容易,可以不浪费程序存储器。这两个128字节的扇区在128 k字节FLASH存储器中是双映射的,只能用MOVC读和用MOVX写,它们的地址范围是0x00~0x7F和0x80~0xFF。要访问这两个128字节的扇区,PSCTL寄存器中的SFLE位必须被设置为逻辑“1”。

SFLE位含义:临时FLASH存储器访问允许位。当该位为1时,软件对FLASH的读/写操作将指向两个128字节的FLASH临时存储扇区。当SFLE被设置为逻辑“1”时,不应访问0x00~0xFF以外的地址范围。

4 写参数与读参数的实现

参数的配置过程就是参数的写入和读出的反复过程。要实现参数的动态配置,首先可以做到参数的写入保存,再次做到参数的读取,即先写后读。由于选用FLASH存储器中的256字节作为参数保存区,读/写参数也就是对FLASH的写/读操作。FLASH写操作是用MOVX指令实现的,所以用于写(或擦除)操作的FLASH指针必须是xdata类型。由于FLASH读操作是用MOVC指令实现的,用于读操作的FLASH指针必须是code类型。

4.1 写参数操作

写参数就是把参数写到FLASH中。由于写一个FLASH字节只能对各位写入0,因此在写一个FLASH字节之前,该字节必须被初始化为0xff。而一个FLASH擦除操作将一页内的所有字节初始化为0xff。即写入FLASH前,需要对FLASH进行擦除操作。flash_write是用C语言实现的写参数操作,可以将l_len个字节的数据写入到以0x00地址为开头的FLASH内。

4.2 读参数操作

读参数就是把参数从FLASH中读取出来并赋值给指定的参数中。flash_read是用C语言实现的读参数操作,可以将l_len个字节的数据读取出来,并拷贝到以l_string为开头的地址内。

4.3 参数的动态配置

参数的动态配置是由上位机通过串口完成的,连接图如图2所示。上位机和控制设备的信息交互是按照预定的串口协议进行的。上位机软件是VC++6.0编写的串口程序。配置参数时,由上位机通过串口向单片机发送携带参数信息的指令。单片机接收到相关指令后,进行解析,提取出基准值和补偿值,写入FLASH,再从FLASH中读出,通过串口向外发送确认信息。用户在上位机通过反馈信息,就可以识别参数配置过程是否成功。

C8051F120具有两个UART串行端口。通过软件设置,串行口以115 200 bps的波特率和上位机进行通信。串行口接收数据的方式采用中断方式。

控制设备中涉及参数的动态配置包括参数的首次写入、参数的更改。参数的首次写入指单片机程序刚下载时FLASH中数据不是预期的数据,需要通过上位机发送设置指令,把参数保存到单片机的FLASH中。参数的更改指单片机的使用环境或硬件特性等发生改变时,参数也需要随之改变。

参数的动态配置就是调用参数读寫的过程。由于上面已经实现了将参数写入FLASH和从FLASH中读取参数操作,这里主要介绍参数的解析和读写函数的调用。exec_data()将上位机发送过来的数据拷贝到write _buf数组中,并写入FLASH中,再从FLASH中读取数据到read_buf,最后设置给参数refValue和comp_AD9874。

5 参数的有效性

考虑到参数的读写过程中可能会受到周围干扰误码,进而导致所获取的参数超出预定范围。所以,对读取出来的参数进行有效性判断,采用范围判断和奇偶检验判断。范围判断指判断读取的参考值和补偿值是否超出预定范围,如果超出,则给出错误提示,如亮灯指示。奇偶检验判断指对读取出来的参数进行奇偶检验判断,如果校验的结果不对,表明所读取的参数不正确,则给出错误提示,如亮灯指示。

6 总结

本文根据参数配置的需求,选择了C8051F120芯片作为平台,并介绍了如何在C8051F120芯片进行参数的读写操作,实现了上位机对控制设备参数的动态配置。该实现方法已在控制设备上使用,操作方便,且效果良好。

参考文献:

[1] SILABS. C8051F120芯片的datasheet[Z].

[2] 冯顺萍,刘文泽,方昌始. 单片机系统运行参数的保存及有效性判别[J]. 信息化研究, 2002,28(6): 1-3.

[3] 陈富安,张莹. C8051F35X单片机内部FLASH存储器的擦写方法[J]. 电子设计工程, 2010,18(2): 105-106.

[4] 江贤志,刘华章,张教育,等. 基于C8051F020单片机的RS485串行通信设计[J]. 电子测量技术, 2014,37(3): 121-124.

[5] 张培仁,孙力. 基于C语言C8051F系列微控制器原理与应用[M]. 北京: 清华大学出版社, 2007.

[6] 潘琢金,施国君. C8051FXXX高速SOC单片机原理及应用[M]. 北京: 北京航空航天大学出版社, 2003.

[7] 王幸之,王雷,翟成,等. 单片机应用系统抗干扰技术[M]. 北京: 北京航空航天大学出版社, 2000.

[8] 尹海宏,陈雷. 基于单片机技术的数据采集系统的设计[J]. 信息技术, 2008(12): 5-7.

[9] 傅务谨. Flash存储器在嵌入式系统设计中的应用[J]. 福建电脑, 2008,7(22): 91-93.

[10] 赵海舰. 嵌入式系统的Flash编程技术研究[J]. 计算机工程与设计, 2005,11(26): 3006-3008.