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页