AN205508 F²MC-8FX Family MB95200 Series Keyboard development using AD (Chinese).pdf

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-500037-Z-10
F²MC-8FX 家族
8 位微型控制器
MB95200 系列
使用 AD 的键盘开发
应用笔记
使用 AD 的键盘开发 V1.0
修改记录
修改记录
版本
日期
作者
修改记录
1.0
2/24/2009
Benjamin. Yang
初稿
本手册包含16页。
1. 本文档记载的产品信息及规格说明如有变动,恕不预先通知。如需最新产品信息和/或规格说明,联系富士
通销售代表或富士通授权经销商。
2. 基于本文档记载信息或示意图的使用引起的对著作权、工业产权或第三方的其他权利的侵害,富士通不承
担任何责任。
3. 未经富士通明文批准,不得对本文档的记载内容进行转让、拷贝。
4. 本文档所介绍的产品并不旨在以下用途: 需要极高可靠性的设备,诸如航空航天装置、海底中继器、核控
制系统或维系生命的医用设施。
5. 本文档介绍的部分产品可能是“外汇及外贸管理法”规定的战略物资(或专门技术),出口该产品或其中部
分元件前,应根据该法获得正式批准。
版权©2009 富士通半导体(上海)有限公司
MCU-AN-500037-Z-10- 第2页
使用 AD 的键盘开发 V1.0
目录
目录
修改记录.................................................................................................................................. 2
目录 ......................................................................................................................................... 3
1 概要 .................................................................................................................................... 4
2 AD功能介绍 ........................................................................................................................ 5
2.1
AD转换功能 ............................................................................................................... 5
2.2
键盘抖动消除............................................................................................................. 5
3 硬件设计 ............................................................................................................................. 6
3.1
硬件电路 .................................................................................................................... 6
3.2
键状态和输入电压的关系........................................................................................... 6
4 资源使用 ............................................................................................................................. 7
4.1
8/10 位A/D转换器控制寄存器 1(ADC1) ................................................................ 7
4.2
8/10 位A/D交换器控制寄存器 2(ADC2) ................................................................ 8
4.3
8/10 位A/D转换器数据寄存器上/下(ADDH, ADDL) ............................................ 9
4.4
AD转换过程 ............................................................................................................. 10
5 软件设计 ........................................................................................................................... 11
6 代码示例 ........................................................................................................................... 12
7 更多信息 ........................................................................................................................... 15
8 附录 .................................................................................................................................. 16
MCU-AN-500037-Z-10 - 第3页
使用 AD 的键盘开发 V1.0
第 1 章概要
1 概要
使用 MB95200 系列 MCU 设计键盘的方法一共有三种:外部中断/AD/matrix。
本文档描述了如何使用 AD 设计键盘。
本文档同时也以实例介绍了 AD 转换的实现理论。
MCU-AN-500037-Z-10- 第4页
使用 AD 的键盘开发 V1.0
第 2 章AD 功能介绍
2 AD 功能介绍
本章介绍了使用 AD 转换设计键盘的功能。
2.1
AD转换功能
AD 转换器的功能是把模拟输入引脚的模拟电压值(输入电压)转换为一个 10 位的数值。
MB95200 系列 MCU 至少有 2 个模拟输入引脚。启用 AD 转换器后,所选通道上的模拟输入
信号将在 AD 转换器中被取样和比较,最终转换成一个数值,存储在 A/D 转换器数据寄存器
(ADDH,ADDL)。
2.2
键盘抖动消除
抖动消除是键盘设计中最重要的问题之一。对于硬件电路设计,在模拟输入引脚中增加一个电
容可以减弱抖动。对于软件设计,反复确认数据可以有效避免键盘抖动。
MCU-AN-500037-Z-10 - 第5页
使用 AD 的键盘开发 V1.0
第 3 章硬件设计
3 硬件设计
本章介绍了使用 AD 转换进行键盘开发的硬件设计。
3.1
硬件电路
以下硬件电路的电阻用于分压。模拟输入引脚将从电路获得一个不同的电压。下图中的电路供
用户参考。
图3-1:使用 AD 进行键盘硬件设计
3.2
键状态和输入电压的关系
表3-1:键状态和输入电压的关系
按键
AN00 电压
ADDL值
有效值区域
SW1
0V
0x00
0x00>=ADDL<=0x05
SW2
2.5 V
0x7F
0x79>=ADDL<=0x85
SW3
3.3 V
0xAA
0xA1>=ADDL<=0xB2
SW4
3.75 V
0xBF
0xB5>=ADDL<=0xC8
MCU-AN-500037-Z-10- 第6页
使用 AD 的键盘开发 V1.0
第 4 章资源使用
4 资源使用
本章介绍了 AD 转换的资源使用。
参见 MB95200 系列硬件手册的第 17 章了解更多关于寄存器设置的详细信息。
4.1
8/10 位A/D转换器控制寄存器 1(ADC1)
8/10 位 A/D 转换器控制寄存器 1(ADC1)用于启用和禁用 8/10 位 A/D 转换器的个别功能:
选择模拟输入引脚,以及检查转换器的状态。
图4-1:ADC1 寄存器
MCU-AN-500037-Z-10 - 第7页
使用 AD 的键盘开发 V1.0
第 4 章资源使用
4.2
8/10 位A/D交换器控制寄存器 2(ADC2)
8/10 位 A/D 转换器控制寄存器 2(ADC2)用于控制 8/10 位 A/D 转换器的不同功能:选择输
入时钟,启用和禁用中断。
图4-2:ADC2 寄存器
MCU-AN-500037-Z-10- 第8页
使用 AD 的键盘开发 V1.0
第 4 章资源使用
4.3
8/10 位A/D转换器数据寄存器上/下(ADDH, ADDL)
8/10 位 A/D 转换器数据寄存器上/下(ADDH, ADDL)用于在 10 位 A/D 转换期间存储 10 位
A/D 转换的结果。10 位数据的上面二位存储于 ADDH 寄存器,下面的八位存储于 ADDL 寄存
器。
图4-3:AD 数据寄存器
10 位 A/D 数据的上面二位对应 ADDH 寄存器中的 bit1 和 bit0,下面八位对应 ADDL 寄存器
的 bit15-bit8。
如果 ADC2 寄存器的 AD8 位设置为“1”,则选择 8 位精确度。读 ADDL 寄存器可以得到一个 8
位数据。
MCU-AN-500037-Z-10 - 第9页
使用 AD 的键盘开发 V1.0
第 4 章资源使用
4.4
AD转换过程
转换后,转换结果存储于 ADDH 和 ADDL 寄存器。在 A/D 转换完成后,下一次 A/D 转换开始
前,需要读取 A/D 数据寄存器(转换结果)并在 ADC1 寄存器中清除 ADI 标志位(bit3)。
MCU-AN-500037-Z-10- 第10页
使用 AD 的键盘开发 V1.0
第 5 章软件设计
5 软件设计
本章介绍了使用 AD 转换进行键盘开发的软件设计。
一旦启用 AD 转换器,它将获取键盘的状态信息。如果该值(Distem0)属于键值,恢复它;
如果不是,AD 转换器继续采样。然后,停止 AD 转换器,让系统等待约 20ms 后,重新启动
AD 转换器并再次获取采样值(Distem1)。最后,判断该值是否等于 Distem0。如果与
Distem0 不同,视为抖动发生;否则,表示按键发生。
下图为软件设计的流程图。
图5-1:键盘开发的软件设计流程图
MCU-AN-500037-Z-10 - 第11页
使用 AD 的键盘开发 V1.0
第 6 章代码示例
6 代码示例
本章举例说明了如何使用 AD 转换进行键盘开发。
下面的例子显示了如何使用 AD 转换输入引脚 AN00 设计一个 4 键的键盘。
如第 5 章所述,如果使用 AD 转换设计键盘系统,首先初始化 AD 转换,然后 AD 转换开始采
样获得采样值,读取该值并判断其是否属于键值。如果不是,系统继续采样;如果是,停止
AD 转换,让系统等待大约 20ms 后,重新启动 AD 转换,获取另一个采样值。如果这两个采
样值相同,表示一个键被按下,否则视为抖动发生。
.
/* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS.
/* FUJITSU SEMICONDUCTOR ACCEPTS NO RESPONSIBILITY OR LIABILITY
/* FOR ANY ERRORS OR ELIGIBILITY FOR ANY PURPOSES.
/* (C) Fujitsu Semiconductor (Shanghai) Co., LTD.
/*-------------------------------------------------------------------#include "../MB95200_IO/mb95200.h". . .
void clock_Select(void)
// Main clock initialize
{
SYCC = 0x00;
WATR = 0x00;
STBC = 0x01;
SYCC2= 0xF4;
}
void syinit(void)
{
DDR0_P00 = 0;
//P00 input enable
ADC1 = 0x01;
//AN00 as input
ADC2 = 0x80;
//8-bit resolution,1×MCLK
ADC1_AD = 1;
//start A/D converter
DDR0 = 0xF0;
//P4~P7 as output pin
PUL0 = 0x00;
AIDRL = 0xFE;
}
void timer_init(void)
{
TMCR0 = 0x10;
// 16-bit
T00CR0 = 0x81;
// interval timer with continuous mode
T00CR1 = 0xA0;
// disable output, start timer
T01DR = 0x27;
// 10000us
T00DR = 0x10;
while(STBC_MRDY);
}
__interrupt void Timer_Interrupt (void)
{
T00CR1_IF = 0;
T00CR1_IE = 0;
timer_counter++;
if(timer_counter==1) // Read and store ADDL in value 1
{
AD_Sample();
} MCU-AN-500037-Z-10- 第12页
*/
*/
*/
*/
*/
使用 AD 的键盘开发 V1.0
第 6 章代码示例
if(timer_counter==2)
// Read and store ADDL in value 2 and
compare value and value 2
{
key_judge();
}
if(timer_counter>=3)
{
timer_counter=0;
}
/Timer_counter restart
}
void AD_Sample(void)
{
if(ADC1_ADI==1)
{
while(!ADC1_ADI);
Distem0 = ADD_ADDL; // Read AD Sample value 1
}
ADC1_AD=1;
// Start AD again
}
void key_judge(void)
{
if(ADC1_ADI==1)
// Read and store ADDL in value 2
{
while(!ADC1_ADI);
Distem1 = ADD_ADDL;
}
if(Distem1==Distem0)
// Judge if value 1 and value 2 equality
{
if(Distem1 == Range_value0) // Key process
{
DDR0_P04 = 1;
PDR0_P04 = 0;
}
if((Distem1 >= Range_value1)&&(Distem1 <= Range_value2))
{
DDR0_P05 = 1;
PDR0_P05 = 0;
}
if((Distem1 >= Range_value3)&&(Distem1 <= Range_value4))
{
DDR0_P06 = 1;
PDR0_P06 = 0;
}
if((Distem1 >= Range_value5)&&(Distem1 <= Range_value6))
{
DDR0_P07 = 1;
PDR0_P07 = 0;
}
}
}
void main(void)
{
InitIrqLevels();
//initialise Interrupt level and IRQ vector table
__EI();
// global interrupt enable
clock_Select();
while(1)
{
syinit();
timer_init();
}
} MCU-AN-500037-Z-10 - 第13页
使用 AD 的键盘开发 V1.0
第 6 章代码示例
注意:该工程基于 starter-kit MB2146-410A。目标 MCU 为 MB95F304K。AN0 用作模拟输入
引脚,LED1-LED4 用作指示器。如果没有提供 3.1 节中的键盘硬件电路,停止跳线并把 VR3
连接到 MCU,用作模拟输入引脚。然后通过调整 VR3 观察 LED 的变化。
MCU-AN-500037-Z-10- 第14页
使用 AD 的键盘开发 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-500037-Z-10 - 第15页
使用 AD 的键盘开发 V1.0
第 8 章附录
8 附录
表 3-1:键状态和输入电压的关系 ............................................................................................ 6
图 3-1:使用AD进行键盘硬件设计 ........................................................................................... 6
图 4-1:ADC1 寄存器 .............................................................................................................. 7
图 4-2:ADC2 寄存器 .............................................................................................................. 8
图 4-3:AD数据寄存器 ............................................................................................................. 9
图 5-1:键盘开发的软件设计流程图 ...................................................................................... 11
MCU-AN-500037-Z-10- 第16页