历史上的今天
返回首页

历史上的今天

今天是:2025年02月26日(星期三)

正在发生

2020年02月26日 | AVR单片机内部RC振荡器校正方法

2020-02-26 来源:eefocus

简介:VR单片机具有内部RC振荡器,对于内部振荡器的校正一直是一个比较难的问题,由于这个问题的困扰,导致很多正常的程序无法正常工作,特此整理该文档供读者参考。


操作理论 – 内部 RC 振荡器

在产品中内部 RC 振荡器在 5V 或 3.3V 下校正。工厂校正的精度在 +/-3 或 +/-10% (参考数据手册)。如果一个设计需要比工厂标准校正更高的精度,就需要再次校正 RC 振荡器,这样可以得到大约 +/-1%(对于工厂校正精度是+/-10%的器件是 +/-2%)的精度。


时钟选择

AVR 熔丝的设置控制了系统使用的时钟源。为了使用内部 RC 振荡器,需要选择正确的熔丝。数据手册中说明了可以使用的熔丝设置。


晶体参数


对于所有可以调整的振荡器,不推荐调整频率超过指定基本频率的 10%,因为内部定时是依赖于 RC 振荡器的。


知道了 RC 振荡器的基本特性,就可以在 10% 的范围内,在任何工作电压和环境温度下,将给定的频率校正到 +/-1% 的精度。


进行校正

这一节分为协议和固件程序两部分。协议是为了适应任何支持校正的编程工具,如 AVR 的开发工具STK500, AVRISP, JTAGICE 和 JTAGICE mkII,这些工具校正的用法在后面说明。


STK500, AVRISP, JTAGICE 和 JTAGICE mkII 目前只支持命令行版本的校正,由 AVR Studio 4.11 SP1 (及以后版本)支持。最新版本的 AVR Studio 可以在 http://www.atmel.com/avr/ 下载。


校正协议

校正协议是简单快速的,以保证可以用于产品中。编程使用的管脚是 ISP 接口或 JTAG 接口(如果有),使其可以用于最终产品中(或PCB)。


两个管脚用于进行校正: ISP 中的 MOSI 和 MISO,或 JTAG 中的 TDI 和 TDO。这里为了简单只说明 MOSI 和 MISO,TDI 和 TDO 的用法是一样的。


基本概念就是编程器产生校正时钟(C-clock),单片机使用它作为参考来校正自己的内部 RC 振荡器。当单片机完成校正后通过 MISO 发送 “OK”信号给编程器。编程器允许 MISO 信号线上拉,而单片机允许 MOSI 信号线上拉,这是为了保证噪声不影响校正。


编程器使用 1024 C-cycles (C-clock 周期)作为溢出时间,校正程序在这个时间内完成


校正程序按一下步骤运行:

1. 编程器写入校正固件程序到单片机中,允许 MISO 上拉,并释放 reset 信号线。校正时钟发送到 MOSI 信号线。手表晶体(32.768kHz)的频率是合适的。

2. 单片机允许 MOSI 内部上拉,并开始监听 MOSI 上的校正时钟信号。

3. 当单片机检测到用于二进制搜索的校正时钟达到 1% 精度,如果不是需要的参数值,那么就把邻近值作为结果,并进行验证

4. 校正值存放到 EEPROM 中(在校正失败时,忽略这个步骤)。

5. 当成功完成校正后,翻转 MISO 信号 4 次。在 MOSI 时钟下降沿时执行 MISO 翻转 5 到 10 个 CPU 周期(C-clock)。在校正失败时,不进行这一步。

6. 如果单片机没有 EESAVE 熔丝,编程器必须取回 EEPROM 中的校正值以便恢复,因为稍后固件程序将被从 Flash 中擦除。如果有 EESAVE 熔丝,就设置这一位,这样在擦除 Flash 时就不会擦除 EEPROM 了。

必须在运行时从 EEPROM 复制校正参数到 OSCCAL 寄存器,为此需要在最终的固件程序中执行它。


校正固件程序

校正代码是用汇编写的,对于 AVR Studio 4.11 已经安装了带有校正包的汇编。


校正固件程序是按照方便修改为任何型号的单片机(表1中)来组织的。同样,校正的接口也可以被修改。如果使用 AVR 的开发工具,所有需要进行的修改都在文件 “RC_Calibration.asm”中。


文件包括下面内容:

1. 指定芯片文件(选择和你的系统对应的),如 “m16.asm”是 Atmega16 的。芯片指定文件包括下面内容:

a. AVR Studio 的寄存器和位定义。

b. 定义的内存映射文件,指定代码的位置和存放在 EEPROM 的校正数据的位置。

c. OSCCAL 访问的宏,控制怎样对 OSCCAL 寄存器进行访问。访问 OSCCAL 寄存器的方法与 IO 文件和 OSCCAL 寄存器的位置有关。

d. 振荡器版本文件。这个文件定义了二进制搜索的初始化步骤,因为一些 OSCCAL 寄存器是 7 位,另外的是 8 位的。

e. 返回堆栈初始化宏文件。一些芯片有硬件堆栈,另外的使用软件堆栈,需要进行初始化。

f. 端口访问宏文件,定义了怎样访问与校正相关的端口的相关寄存器。需要这个文件是因为一些寄存器在 IO 文件的高端部分,而其它的在低端部分。

g. 重定义位和寄存器名。

请注意使用 ATmega169 修订版F 的芯片时需要修改芯片的特殊文件,在“m169.asm”文件中振荡器版本要设置成 5。

2. 校正接口文件。这个文件指定使用 ISP 或 JTAG 端口,以及使用的管脚名。校正时钟频率也在这里指定。

3. 包含使用宏定义的文件 - “macros.inc”。

4. 公共的校正代码文件 “main.asm”。

校正代码的结构是按照易于修改而设计的,可以更简单的适应目标系统的单片机和接口。此外,广泛使用了宏定义保证了代码可以只要最小的改动。最后,芯片和校正接口的设计使得只需很小的改动就可以支持新的器件。


编译校正固件

校正固件的主程序是 RC_Calibration.asm。这个文件需要在AVR Studio中添加到一个汇编工程里。在这个文件中指定了单片机型号和使用的校正接口:STK500, AVRISP, JTAGICE 或 JTAGICE mkII。甚至还可以指定校正的精度。


一旦修改这些选项,编译工程产生一个二进制文件 “rc_calib.hex”,就是使用这个文件进行校正。


注意正确设置熔丝很重要:如果选择了 1MHz RC 振荡器,就不能校正为单片机 8MHz。

推荐阅读

史海拾趣

Black Box Corporation公司的发展小趣事

Black Box意识到,在电子行业中,不同的行业细分市场有着不同的需求和特点。因此,公司决定采取深耕行业细分市场的策略,针对金融、教育、制造等不同行业提供定制化的解决方案。这一策略使Black Box能够更好地满足客户的实际需求,提高了客户满意度和忠诚度。

Endicott Research Group Inc (ERG)公司的发展小趣事

近年来,随着全球对环保和节能的日益重视,ERG积极响应绿色发展的号召,开始研发更加高效节能的电源产品和LED照明解决方案。他们通过优化电路设计、采用新型材料和改进生产工艺,成功降低了产品的能耗和废弃物产生。这些环保举措不仅提升了公司的社会形象,还为其赢得了更多环保意识强的客户的青睐。同时,ERG也积极参与各种环保公益活动,为推动行业的绿色发展做出了积极贡献。

以上五个故事,客观地描述了ERG在电子行业中的发展历程和主要成就。从初创时期的艰苦奋斗,到不断拓展业务范围、加强技术研发、与科研机构合作以及积极响应环保号召,ERG始终保持着创新精神和进取心,为电子行业的发展做出了重要贡献。

HellermannTyton公司的发展小趣事

面对全球经济波动和行业竞争加剧的挑战,Heimann Optoelectronics Gmbh果断实施转型升级战略。公司加大在物联网、人工智能等新兴技术领域的研发投入,成功开发出了一系列智能光电传感器和解决方案。这些产品能够实时监测环境变化、智能控制设备运行,为智慧城市、智能家居等领域提供了强有力的支持。通过转型升级,公司不仅巩固了传统市场的领先地位,还成功开拓了新的增长点。

BESTECH公司的发展小趣事

面对全球经济波动和行业竞争加剧的挑战,Heimann Optoelectronics Gmbh果断实施转型升级战略。公司加大在物联网、人工智能等新兴技术领域的研发投入,成功开发出了一系列智能光电传感器和解决方案。这些产品能够实时监测环境变化、智能控制设备运行,为智慧城市、智能家居等领域提供了强有力的支持。通过转型升级,公司不仅巩固了传统市场的领先地位,还成功开拓了新的增长点。

奇力新(chilisin)公司的发展小趣事

在电感器领域,技术创新是推动产业升级的关键因素。奇力新始终将技术创新作为公司发展的核心驱动力。公司不断投入研发资金,加强与国际知名企业和研究机构的合作,推出了一系列具有自主知识产权的新技术和新产品。这些技术和产品不仅提升了奇力新的市场竞争力,还推动了整个电感器行业的升级和发展。

ddm hopt + schuler GmbH & Co KG公司的发展小趣事

ddm hopt + schuler GmbH & Co KG公司自创立之初,就专注于电子制造设备的研发与生产。在20世纪90年代,公司成功研发出一款具有革命性意义的自动化生产线,极大地提高了电子产品的生产效率和质量。这一技术突破迅速赢得了市场的认可,公司开始在全球范围内扩张业务,与多家知名电子品牌建立了长期合作关系。

问答坊 | AI 解惑

闭路电视监控系统防雷简介

一、 闭路电视监控系统简介:   CCTV系统结构:   电视监控系统(Closed Circuit Television,简称CCTV),一般由以下三部分组成:   前端部分:   主要由黑白(彩色)摄像机、镜头、云台、防护罩、支架等组成。   传输部分:    ...…

查看全部问答>

功率集成电路中自举元件的选择

设计指南 功率驱动集成电路中自举元件的选择 1. 自举电路工作原理 Vbs(驱动电路Vb 和Vs 管脚之间的电压差)给集成电路高端驱动电路提供电源。该电源电压必须在10-20V之间,以确保驱动集成电路能够完全地驱动MOS栅极器件(MGT)。IR公司的部分驱动集 ...…

查看全部问答>

请教:DMA中断

我在写一个S3C2440的SPI驱动时需要用到DMA中断,但发现该中断号unsigned int irq已经被其他设备占用,请问有什么办法可以解决么。 我能想到的暂时就是修改内核代码,允许中断共享,或者干脆不要先前的设备。但请问有什么更好的方法吗,谢谢! …

查看全部问答>

ADS AXD调试不能进入main函数

如题,按F5运行之后,直接就全速运行了,根本就没有进入main函数,并且编译器在main函数处还有一个断点的嘛,不知道怎么处理??…

查看全部问答>

quartusII中simulation report

每次仿真查看报告时出现the\"simulation waveform\" section could not be opened,求达人解答!!!…

查看全部问答>

wince5.0进度条问题

wince5.0中的开机进度条该如何去掉,以节省启动时间。 我菜鸟,各位高手最好详细点。…

查看全部问答>

DVI/HDMI多路复合光传输系统

DVI/DHMI光端机,由发送和接收两部分组成. 发送端,4路DVI信号输入,通过DVI reciver把TMDS信号变成TTL信号,在FPGA中完成信号的复合,再把数据进行光调制. 接收端,收到的光信号按照协议分成多路DVI信号,分别通过DVI translater送出去.…

查看全部问答>

TC9012红外遥控器的,请教高手

弄不清楚为什么处理后的红外码液晶显示会是00 FF 数据码 数据码反码而不是客服码、客服码、数据码、数据码反码 /*-----------------------------------------------  名称:遥控器红外解码液晶显示  但是------------------------------ ...…

查看全部问答>

IO口设置为

pic单片机端口设置为输入时,他的IO口端的电平为高电平,这个能改变吗…

查看全部问答>

我是廖平茂

刚刚来着个地方 有不懂得 多多关注 谢谢!!…

查看全部问答>