Application Note

Spansion® 模拟和微控制器产品
本文档包含有关 Spansion 模拟和微控制器产品的信息。尽管本文档内有原来开发该产品规格的公司名称
“富士通”或 “Fujitsu”, 该产品将由 Spansion 提供给现有客户和新客户。
规格的延续
本文档内容并不因产品供应商的改变而有任何修改。文档内容的其他更新,均为改善文档而进行,并已记录在文档
更改摘要。日后如有需要更改文档,其更改内容也将记录在文档更改摘要。
型号的延续
Spansion 将继续提供型号以“MB”开始的现有产品。如欲订购该类产品,敬请使用本文档内列出的产品型号。
查询更多信息
如欲查询更多关于 Spansion 存储器、模拟产品和微控制器产品及其解决方案的信息,请联系您当地的销售办事
处。
书末出版说明
本文档介绍的产品,其设计、开发和制造均基于一般用途,包括但不限于普通工业使用、普通办公使用、个人使用及家庭使用,不应用于:(1)
存在严重风险或危险,除非能够保证极高的安全性,否则可能对公众造成严重影响,甚至可能直接造成死亡、人员伤害、物品损坏或其他损失
的用途(如核设施的核反应控制、飞机飞行控制、空中交通控制、公共交通控制、医学生命支持系统、武器系统的导弹发射控制),或者(2) 不
允许出现故障的用途(如潜艇中继器和人造卫星)。请注意,对于您和 / 或任何第三方由于将产品用于上述用途而造成的任何索赔和损失,
Spansion 不承担任何责任。任何半导体设备都可能发生故障。您必须在自己的设施和装置中加入安全设计措施,如冗余、防火、防止电流过
载及其他异常运行情形等,以防由于此类故障而造成伤害、损坏或损失。如果根据日本 Foreign Exchange and Foreign Trade Law、美国US Export
Administration Regulations 或其他国家(地区)的适用法律的规定,本文档中介绍的任何产品是在出口方面受到特别限制的商品或技术,则这
些产品的出口必须预先得到相关政府的许可。
商标和声明
本文档的内容如有变更,恕不另行通知。本文档可能包含Spansion 正在开发的 Spansion 产品的相关信息。 Spansion 保留变更任何产品或停
止其相关工作的权利,恕不另行通知。本文档中的信息 “ 按原样 ” 提供,对于其精确性、完整性、可操作性、对特定用途的适用性、适销性、
不侵犯第三方权利等不提供任何担保或保证,也不提供任何明确的、隐含的或法定的其他担保。对于因使用本文档中的信息而造成的任何形式
的任何损失,Spansion 不承担任何责任。
版权所有© 2013 Spansion Inc. 保留所有权利。Spansion®、Spansion 标识、MirrorBit®、MirrorBit® Eclipse™、ORNAND™ 以及它们的组合,
是Spansion LLC 在美国和其他国家(地区)的商标和注册商标。使用的其他名称只是一般性参考信息,可能是其各自所有者的商标。
富士通半导体(上海)有限公司
应用笔记
MCU-AN-500080-Z-10
F²MC-8FX 家族
8 位微型控制器
MB95F430 系列
运算放大器
应用笔记
运算放大器 V1.0
修改记录
修改记录
版本
日期
作者
修改记录
1.0
2010-03-22
Folix
初稿
本手册包含20页。
1. 本文档记载的产品信息及规格说明如有变动,恕不预先通知。如需最新产品信息和/或规格说明,联系富士
通销售代表或富士通授权经销商。
2. 基于本文档记载信息或示意图的使用引起的对著作权、工业产权或第三方的其他权利的侵害,富士通不承
担任何责任。
3. 未经富士通明文批准,不得对本文档的记载内容进行转让、拷贝。
4. 本文档所介绍的产品并不旨在以下用途: 需要极高可靠性的设备,诸如航空航天装置、海底中继器、核控制
系统或维系生命的医用设施。
5. 本文档介绍的部分产品可能是“外汇及外贸管理法”规定的战略物资(或专门技术),出口该产品或其中部
分元件前,应根据该法获得正式批准。
版权©2009 富士通半导体(上海)有限公司
MCU-AN-500080-Z-10- 第2页
运算放大器 V1.0
目录
目录
修改记录 ....................................................................................................................................... 2 目录 ............................................................................................................................................... 3 1 介绍 .......................................................................................................................................... 4 2 放大器概要 .............................................................................................................................. 5 2.1 运算放大器的结构图 ............................................................................................................. 6 2.2 运算放大器的引脚 ................................................................................................................. 6 2.3 OPAMP控制寄存器 ............................................................................................................... 7 3 运算放大器的操作 ................................................................................................................... 9 4 放大器的设置程序 .................................................................................................................. 10 5 放大器驱动器 .......................................................................................................................... 11 5.1 外围设备的使用 ................................................................................................................... 11 5.2 驱动代码 ............................................................................................................................... 11 5.2.1 一般定义 ................................................................................................................ 11 5.2.2 放大器程序 ............................................................................................................ 12 6 典型应用 ................................................................................................................................. 13 6.1 硬件设计 ............................................................................................................................... 13 6.2 范例代码 ............................................................................................................................... 14 7 更多信息 ................................................................................................................................. 15 8 附录 ......................................................................................................................................... 16 9 范例代码 ................................................................................................................................. 17 MCU-AN-500080-Z-10 - 第3页
运算放大器 V1.0
第 1 章 介绍
1 介绍
本文档介绍了如何在 MB95F430 系列上使用运算放大器功能。
第二章简要介绍了运算放大器。
第三章介绍了运算放大器的操作。
第四章介绍了运算放大器的设置程序。
第五章介绍了放大器驱动器。
第六章介绍了放大器的应用演示。
MCU-AN-500080-Z-10- 第4页
运算放大器 V1.0
第 2 章 放大器概要
2 放大器概要
运算放大器用于感知地面电流,它支持 A/D 转换前的前端模拟信号调节,可在闭环模式或独
立开环模式中运行。
ƒ
闭环模式
运算放大器可配置为同相闭环运算放大器。
它有六个闭合回路增益选项(软件选择),可根据不同的电压值感知地面电流。
ƒ
独立开环模式
在该模式下,运算放大器输入引脚被连接至外部信号,没有任何输出反馈。
该模式的外部电阻器让用户有更多的增益选择。
MCU-AN-500080-Z-10 - 第5页
运算放大器 V1.0
第 2 章 放大器概要
2.1
运算放大器的结构图
图2-1: 运算放大器的结构图
2.2
运算放大器的引脚
OPAMP 把 OPAMP_P 引 脚 和 OPAMP_N 引 脚 用 作 运 算 放 大 器 的 模 拟 输 入 引 脚 ; 把
OPAMP_O 引脚用作运算放大器的模式输出引脚。
GS [5] 设置为“1B”且 GS [4:0] 设置为“00000B”时,OPAMP 用作一个独立开环运算放大
器。
GS [5] 设置为“0B”时,OPAMP 用作一个同相闭合回路运算放大器,通过软件提供六种不
同的闭环增益设置。
MCU-AN-500080-Z-10- 第6页
运算放大器 V1.0
第 2 章 放大器概要
2.3
OPAMP控制寄存器
OPAMP 控制寄存器(OPCR)用于开启-关闭 OPAMP,启用-禁用 OPAMP 模拟输出,以及
启用-禁用 OPAMP 模拟输入。
该寄存器还可以把 OPAMP 设置为一个独立开环运算放大器,或一个有六种不同闭环增益设
置(可通过软件选择)的同相闭环运算放大器。
图2-2:OPAMP 控制寄存器
MCU-AN-500080-Z-10 - 第7页
运算放大器 V1.0
第 2 章 放大器概要
ƒ
OPAMP 控制寄存器(OPCR)位的功能
ƒ
OPAMP 运算模式设置
注意:
OPAMP 运行时,可以修改 RES2,RES1 和 RES0 的设置。但在 OPAMP 输出稳定前,
不要使用 OPAMP 的输出信号,也不要执行 A/D 转换。
修改 RES2,RES1 和 RES0 设置前,建议关闭运算放大器。
MCU-AN-500080-Z-10- 第8页
运算放大器 V1.0
第 3 章 运算放大器的操作
3 运算放大器的操作
使用软件设置 OPCR 寄存器的 PD 位可激活运算放大器。根据 OPCR 寄存器中 RES2,
RES1 和 RES0 位的设置,运算放大器可在闭环模式或开环模式下运行。
ƒ
软件激活运算放大器
根据图 3-1 中的设置激活运算放大器。
图 3-1 : 激活运算放大器的设置
按照上图设置好 OPCR 寄存器中的所有位,运算放大器在稳定后,开始操作。
ƒ
闭环模式的 OPAMP 操作
在激活前,事先设置 OPCR 寄存器的 RES [2:0] 为“000B”,“001B”,“010B”,
“011B”,“100B ”或“101B”,可让运算放大器在闭环模式中运行。
闭环模式有六种不同的闭合回路增益。设置 OPCR 中的 RES[2:0] 至相应值,可选择期望的闭
环回路增益。
注意:
建议在闭环模式下,接地 P61/OPAMP_N 引脚。
OPAMP 运行时,可以修改 RES2,RES1 和 RES0 的设置。但在 OPAMP 输出稳
定前,不要使用 OPAMP 的输出信号,也不要执行 A/D 转换。
修改 RES2,RES1 和 RES0 设置前,建议关闭运算放大器。
ƒ
开环模式下的 OPAMP 操作
在激活前,事先设置 OPCR 寄存器的 RES [2:0] 为“110B”,可让运算放大器在开环模式中
运行。
注意:
OPAMP 运行时,允许开环模式和闭环模式之间的切换。但在 OPAMP 输出稳定
前,不要使用 OPAMP 的输出信号,也不要执行 A/D 转换。
MCU-AN-500080-Z-10 - 第9页
运算放大器 V1.0
第 4 章 放大器的设置程序
4 放大器的设置程序
本章举例说明了运算放大器的设置程序。
初始设置
1). 设置 OPCR :OPID 和 OPCR :OPOD 为“0”启用 OPAMP 模拟输入和 OPAMP 模拟
输出。
2). 设置 OPCR 中的反馈电阻器和 RES [2:0]。
3). 设置 OPCR :PD 为“0”启动运算放大器。
4). 等待运算放大器稳定。
5). 如果需要,启动 A/D 转换。
MCU-AN-500080-Z-10- 第10页
运算放大器 V1.0
第 5 章 放大器驱动器
5 放大器驱动器
本章描述了 OPAMP 驱动器。
5.1
外围设备的使用
MCU 引脚的使用如下:
OPAMP_N:用作放大器负输入
OPAMP_P:用作放大器正输入
OPAMP_O:用作放大器输出
5.2
驱动代码
5.2.1 一般定义
typedef unsigned char
BOOLEAN;
typedef unsigned char
INT8U;
/* Unsigned
8 bit quantity */
typedef signed
INT8S;
/* Signed
8 bit quantity */
char
typedef unsigned int
INT16U;
/* Unsigned 16 bit quantity */
typedef signed
INT16S;
/* Signed
int
typedef unsigned long
typedef signed
long
INT32U;
/* Unsigned 32 bit quantity */
INT32S;
/* Signed
#define BOOL
BOOLEAN
#define BYTE
INT8U
#define UBYTE
INT8U
#define WORD
INT16U
#define UWORD
INT16U
#define LONG
INT32S
#define ULONG
INT32U
#define UCHAR
INT8U
#define UINT
INT16U
#define DWORD
INT32U
#define TRUE
1
#define FALSE
0
16 bit quantity */
MCU-AN-500080-Z-10 - 第11页
32 bit quantity */
运算放大器 V1.0
第 5 章 放大器驱动器
#define BYTE_LO(w)
((UBYTE)(w))
#define BYTE_HI(w)
((UBYTE)(((UWORD)(w)>>8)&0xFF))
5.2.2 放大器程序
void AmpOpenLoop()
返回
:无
参数
:无
描述
: 开环设置
示例
: AmpOpenLoop();
void AmpOpenLoop()
{
DDR6_P60=0;
DDR6_P61=0;
DDR6_P62=1;
OPCR=0x60;//Amplifier gain is R3/R1
}
void AmpCloseLoop()
返回
:无
参数
:无
描述
: 闭环设置
示例
: AmpCloseLoop();
void AmpCloseLoop()
{
DDR6_P60=0;
DDR6_P61=0;
DDR6_P62=1;
OPCR=0x40;//Amplifier gain is 20V/V
}
MCU-AN-500080-Z-10- 第12页
运算放大器 V1.0
第 6 章 典型应用
6 典型应用 本章介绍了运算放大器的典型应用。
6.1
硬件设计
该应用将测试 MB95F430K 的运算放大器。硬件设计如下图所示,R1,R2 和 R3 用于开环放
大器。
图6-1: 硬件设计
MCU-AN-500080-Z-10 - 第13页
运算放大器 V1.0
第 6 章 典型应用
6.2
范例代码
void main(void)
返回
:无
参数
:无
描述
: 系统主程序
示例
: main();
void main(void)
{
__DI();
__set_il(3);
InitIrqLevels();
WDTH =0xA5;//Disable WTG
WDTL =0x96;
WATR =0xEE;
SYCC =0xF0;//Main Clock
SYCC2=0xF4;//Main Clock
SYSC
=0xBC;//BUZZ(P01)
SYSC2 =0x02;//PPG(P73),Disable I2C
while(!STBC_MRDY);
__EI();
AmpOpenLoop();
AmpCloseLoop();
}
MCU-AN-500080-Z-10- 第14页
运算放大器 V1.0
第 7 章 更多信息
7 更多信息
关于富士通半导体更多的产品信息,请访问以下网站:
英文版本地址:
http://www.fujitsu.com/cn/fsp/services/mcu/mb95/application_notes.html
中文版本地址:
http://www.fujitsu.com/cn/fss/services/mcu/mb95/application_notes.html
MCU-AN-500080-Z-10 - 第15页
运算放大器 V1.0
第 8 章 附录
8 附录
图 2-1: 运算放大器的结构图 .............................................................................................................. 6 图 2-2:OPAMP控制寄存器 ................................................................................................................ 7 图 6-1: 硬件设计 ................................................................................................................................ 13 MCU-AN-500080-Z-10- 第16页
运算放大器 V1.0
第 9 章 范例代码
9 范例代码
main.c
#include "mb95430.h"
#include "TypeDef.h"
/*--------------------------------------------------------------------------*/
/* Amplifier Setting
/*--------------------------------------------------------------------------*/
void AmpOpenLoop()
{
DDR6_P60=0;
DDR6_P61=0;
DDR6_P62=1;
OPCR=0x60;//Amplifier gain is R3/R1
}
void AmpCloseLoop()
{
DDR6_P60=0;
DDR6_P61=0;
DDR6_P62=1;
OPCR=0x40;//Amplifier gain is 20V/V
}
void main(void)
{
__DI();
__set_il(3);
InitIrqLevels();
WDTH =0xA5;
WDTL =0x96;
WATR =0xEE;
SYCC =0xF0;//Main Clock
MCU-AN-500080-Z-10 - 第17页
运算放大器 V1.0
第 9 章 范例代码
SYCC2=0xF4;//Main Clock
SYSC
=0xBC;//BUZZ(P01)
SYSC2 =0x02;//PPG(P73),Disable I2C
while(!STBC_MRDY);
__EI();
AmpOpenLoop();
AmpCloseLoop();
}
VECTORS.C
#include "mb95430.h"
void InitIrqLevels(void)
{
/*
ILRx
ILR0 = 0xFF;
ILR1 = 0xFF;
ILR2 = 0xFF;
ILR3 = 0xFF;
IRQs defined by ILRx */
//
IRQ0:
external interrupt ch0 | ch4
//
IRQ1:
external interrupt ch1 | ch5
//
IRQ2:
external interrupt ch2 | ch6
//
IRQ3:
external interrupt ch3 | ch7
//
IRQ4:
UART/SIO ch0
//
IRQ5:
8/16-bit timer ch0 (lower)
//
IRQ6:
8/16-bit timer ch0 (upper)
//
IRQ7:
Output Compare ch0
//
IRQ8:
Output Compare ch1
//
IRQ9:
none
//
IRQ10: Voltage Compare ch0
//
IRQ11: Voltage Compare ch1
//
IRQ12: Voltage Compare ch2
//
IRQ13: Voltage Compare ch3
//
IRQ14: 16-bit free run timer
//
IRQ15: 16-bit PPG0
MCU-AN-500080-Z-10- 第18页
运算放大器 V1.0
第 9 章 范例代码
ILR4 = 0xFF;
ILR5 = 0xFF;
//
IRQ16: I2C ch0
//
IRQ17: none
//
IRQ18: 10-bit A/D-converter
//
IRQ19: Timebase timer
//
IRQ20: Watch timer
//
IRQ21: none
//
IRQ22: none
//
IRQ23: Flash Memory
}
/*-------------------------------------------------------------------------Prototypes
Add your own prototypes here. Each vector definition needs is prototype. Either do it here or include a header file containing them.
----------------------------------------------------------------------------*/
__interrupt void DefaultIRQHandler(void);
/*-------------------------------------------------------------------------Vector definiton
Use following statements to define vectors.
All resource related vectors are predefined.
Remaining software interrupts can be added hereas well.
----------------------------------------------------------------------------*/
#pragma intvect DefaultIRQHandler 0
ch4
//
IRQ0:
external interrupt ch0 |
#pragma intvect DefaultIRQHandler 1
ch5
//
IRQ1:
external interrupt ch1 |
#pragma intvect DefaultIRQHandler 2
ch6
//
IRQ2:
external interrupt ch2 |
#pragma intvect DefaultIRQHandler 3
ch7
//
IRQ3:
external interrupt ch3 |
#pragma intvect DefaultIRQHandler 4
//
IRQ4:
UART/SIO ch0
#pragma intvect DefaultIRQHandler 5
//
IRQ5:
8/16-bit timer ch0 (lower)
MCU-AN-500080-Z-10 - 第19页
运算放大器 V1.0
第 9 章 范例代码
#pragma intvect DefaultIRQHandler 6
//
IRQ6:
8/16-bit timer ch0 (upper)
#pragma intvect DefaultIRQHandler 7
//
IRQ7:
Output Compare ch0
#pragma intvect DefaultIRQHandler 8
//
IRQ8:
Output Compare ch1
#pragma intvect DefaultIRQHandler 9
//
IRQ9:
none
#pragma intvect DefaultIRQHandler 10
//
IRQ10: Voltage Compare ch0
#pragma intvect DefaultIRQHandler 11
//
IRQ11: Voltage Compare ch1
#pragma intvect DefaultIRQHandler 12
//
IRQ12: Voltage Compare ch2
#pragma intvect DefaultIRQHandler 13
//
IRQ13: Voltage Compare ch3
#pragma intvect DefaultIRQHandler 14
//
IRQ14: 16-bit free run timer
#pragma intvect DefaultIRQHandler 15
//
IRQ15: 16-bit PPG0
#pragma intvect DefaultIRQHandler 16
//
IRQ16: I2C ch0
#pragma intvect DefaultIRQHandler 17
//
IRQ17: none
#pragma intvect DefaultIRQHandler 18
//
IRQ18: 10-bit A/D-converter
#pragma intvect DefaultIRQHandler 19
//
IRQ19: Timebase timer
#pragma intvect DefaultIRQHandler 20
//
IRQ20: Watch timer
#pragma intvect DefaultIRQHandler 21
//
IRQ21: none
#pragma intvect DefaultIRQHandler 22
//
IRQ22: none
#pragma intvect DefaultIRQHandler 23
//
IRQ23: Flash Memory
/*-------------------------------------------------------------------------DefaultIRQHandler()
This function is a placeholder for all vector definitions.
Either use your own placeholder or add necessary code here
(the real used resource interrupt handlers should be defined in the
main.c).
----------------------------------------------------------------------------*/
__interrupt void DefaultIRQHandler(void)
{
__DI();
// disable interrupts
while(1)
__wait_nop();
// halt system
MCU-AN-500080-Z-10- 第20页