本帖最后由 wdluo 于 2012-7-29 19:41 编辑
LPC1100 系列微控制器使用的30问答
1. GPIO翻转速度最大为多少?
A:GPIO的翻转速度最大可达系统时钟的四分之一。
2. GPIO内部上/下拉电阻多大?
A:内部上/下拉电阻为40KΩ左右,属于弱上拉,正常使用时,需外接上拉电阻的场合要加上拉电阻。
3. GPIO的各种工作模式如何使用?
A:LPC1100系列Cortex-M0微控制器的I/O口可配置为四种模式:高阻(既不上拉也不下拉)、上拉、下拉和中继。 输出模式下,无论配置为哪种模式,I/O口都能正常输出高/低电平,说明四种模式的配置都是针对输入设计的。可参阅数据手册“Standard I/O pad configuration”一节中相关描述。 输入模式下,让引脚悬空,I/O口设置为不同模式时情况如下:
4. LPC1100系列芯片的GPIO能否直接驱动5V器件?
A:不能,在使用到的GPIO数量较少时可选择三极管驱动,使用到的GPIO数量较多时需要使用专用驱动芯片。
5. GPIO高电平中断时,中断电压为多少?
A:1.59~1.65V即可产生中断,1.74V以上能较稳定进入中断。
6. GPIO使用双边沿中断时,GPIOxIEV寄存器应如何处理?
A:使用双边沿中断时,使用GPIOxIBE寄存器即可,GPIOxIEV寄存器配置无效。
7. 芯片加密后,应如何解密?
A:可通过ISP方式对芯片进行擦除,操作步骤如下: 1) 短接P0.1引脚与GND; 2) 将UART0(P1.6、P1.7)通过RS-232电平转换后连接到PC机,注意要与PC机共地; 3) 给系统重新上电; 4) 使用K-Flash或Flash Magic工具软件进行擦除。
8. 将SWD引脚配置为GPIO后不能正常仿真,应如何处理?
A:通过ISP方式对芯片进行擦除。
9. 芯片进入低功耗模式后不能正常仿真,应如何处理?
A:通过ISP方式对芯片进行擦除。
10. 低功耗模式下能否进行调试?
A:不能,进入低功耗模式后调试功能被禁止。
11. FlashMagic软件“芯片选择”中为何没有LPC1114?
A:FlashMagic的版本太低,需更新软件版本。下载链接如下:
12. 使用FlashMagic下载程序时提示程序下载成功,为何脱机不运行?
A:可能存在以下原因:
13. LPC1100系列ARM能否使用H-JTAG仿真或调试?
A:不能,目前已推出的LPC1100系列ARM只支持SWD模式。
14. 使用K-Flash软件烧写程序时为何提示‘四处校验错误’?
A:这属于正常现象。校验位是烧写程序时由编程算法进行计算的,若开发环境(如Keil)编译产生的Hex文件没有自动进行校验位填充,使用K-Flash进行校验时,从芯片读出的文件是已经填充校验和的,与编译产生的HEX文件进行比较会出现四处不一致的提示。 对于校验和自动填充实现方法请参考该网站上相关文档:
15. CK100驱动是否支持Win7操作系统?
A:支持32位操作系统(包括XP、WIN7),暂不支持64位操作系统。
16. 怎样进行中断注册?
A:对于旧版本工程模板:首先在“vector_table.c”文件中进行函数声明,然后在“vector_cfg.h”文件中进行注册,详情可参考我司配套例程中带有中断的例程。 对于新版本工程模板:中断初始化完成后将中断服务函数名称定义为与“startup_LPC11xx.s”文件中的中断入口函数名相同即可。
17. 使用ADC测量电压时,数据会出现大幅度跳变,主要原因有哪些? A:出现跳变问题主要有以下三个原因: 1) 软件方面:未做滤波处理(如多次采样取平均值); 2) 硬件方面:硬件电路本身未处理好,采样电压本身出现跳变;模拟地、数据地未作隔离处理,数字电路对模拟电路产生干扰。
18. ADC的各通道为何出现相互干扰?
A:可能的原因如下: 1) 硬件电路本身几个通道之间相互干扰; 2) ADC的通道引脚有悬空时,不悬空的引脚会对悬空的引脚产生干扰,悬空引脚不使用ADC功能时可将GPIO配置为非ADC功能,若必须使用ADC功能,建议将悬空的引脚接地。
19. UART的中断服务函数中为何没有清除中断标志?
A:读取寄存器U0IIR后即可清除中断标志。
20. UART的通信波特率最大为多少?
A:LPC1100系列Cortex-M0微控制器串口的波特率按照理论计算可以达到50÷16 = 3.125Mbps,但由于RS-232芯片与PC机的限制,与上位机通信时波特率最高只能达到115200bps。不与PC机之间通信,直接两个MCU之间通信波特率可大于115200bps。
21. UART奇偶校验位强制0/1校验如何理解?
A:强制0/1校验是指在UART通信过程中,数据的第九位不依赖数据位,强制输出0或者1。
22. 为何重新配置UART波特率不能成功?
A:重新配置波特率时,需要先关闭UART时钟。
23. 使用I2C读取PCF8563小时/天寄存器值,为何每次读出的数据是变化的?
A:PCF8563的小时/天/月/年等寄存器中存在一些保留位,读出数据会发生变化;将保留位屏蔽后数据是不变的。
24. 为什么I2C正常工作时用手触摸SDA/SCL线会出现死机现象?
A:用手触摸SDA/SCL时会造成总线错误,属于非法的停止或起始条件,错误状态为0x00,在I2C中断服务函数中添加对0x00错误状态的处理即可,如程序清单1所示。
程序清单1 I2C中断服务函数错误处理 - case0x00:
- LPC_I2C->CONCLR = 0x28;
- I2C_end = 0xff;
- break;
复制代码 25. 使用LPC11C14片上API时,为何程序有时会跑飞? A:LPC11C12/14片上API使用0x1000 0050~0x100000B8范围空间的片内RAM,使用片上API时,用户应用程序不应使用该地址范围的RAM,应适当修改分散加载文件,避免使用该范围RAM。
26. 为何WDT中断只能进一次?
A:要让程序能重新进入中断,需要在中断服务函数中重新使能并喂狗。
27. 开发Cortex-M0选择哪个版本的MDK?
A:MDK V4.01版本以上。
28. SWD引脚能否不接外部上拉电阻?
A:由于SWD引脚默认内部上拉,外部使用时可不接外部上拉电阻。
29. 使用CK100/AK100调试,IRC提供时钟时为何UART发送全为乱码?
A:使用CK100进行仿真/下载时,使用IRC,需在仿真器配置“初始化宏”选项中“禁用宏文件”,如图2.1所示。
图2.1 禁用宏文件 芯片启动首先运行内部bootloader对IRC精度进行校准,使用初始化宏文件会跳过bootloader,即IRC未校准,导致UART发送乱码。
30. LPC11C14是否存在唯一序列号?在哪个地址?
A:存在,可通过IAP函数读取,详情可查看用户手册《Flash接口与特性》章节。 |