易于使用的 ADC 数据手册 EzADC V 1.00 001-94569 Rev. ** EzADC Copyright © 2012-2014 Cypress Semiconductor Corporation. All Rights Reserved. PSoC® 模块 MUM 模拟 CT 数字 调制器 (一阶或二阶) API 存储器 (字节) 模拟 SC 一阶和二阶 一阶 RAM 闪存 二阶 一阶 二阶 一阶 引脚 二阶 支持的器件包括:CY8C24x23A、 CY8C27x43、 CY8C24x94、 CY8C29x66、 CY8C28x23、 CY8C28x33、 CY8C28x43、 CY8C28x45、 CY8C28x52 2 配置 1 1 2 365 413 11 11 1 特性和概述 增量型 ADC 支持一阶和二阶调制器 可选采样率:0.007 ~ 15.625 ksps 可选分辨率:6 ~ 14 位 可选增益:1x ~ 48x 可选参考 自动计算时钟频率 有符号和无符号的输出数据格式 允许 AGND 输出连接至 AnalogBus 补偿偏移误差 可配置补偿偏移误差频率 图 1. EzADC 框图 赛普拉斯半导体公司 ductor Corporation 文档编号:001-94569 Rev. ** • 198 Champion Court • San Jose, CA 95134-1709 • 408-943-2600 修订日期 December 8, 2014 EzADC 功能说明 EzADC 用户模块具有两种配置方式:一阶调制器和二阶调制器。 图 2. EzADC MUM 向导 一阶调制器使用单模拟开关电容 PSoC 模块,如图 2 所示。模拟模块可放置在任何模拟开关电容 (ASC) 或一个 ASC D 类型 (ASD)模块中。 二阶调制器则需要两个开关电容 PSoC 模块。因为这两个模块始终垂直地映射到模拟列,他们共享了同一 个比较器 (以及同一个时钟)。 EzADC 用户模块包含一个可编程增益放大器 (PGA)、一个时钟分频器 (计数器 8)、一个抽取滤波器 (积分器)、一个 ADC 调制器 (根据选定的阶次,它可以使用一个或两个 SC 模块)、一个脉冲宽度调制器 (PWM8)以及 AnalogClock_0_Select MUX. 系统时钟 (SysClk)除为时钟分频器提供时钟源外,还为 PWM 和 SC 模块提供时钟源。时钟分频器的输 出被路由给模拟列和 PWM。用户模块使用两个连续数字模块。 ADC 由调制器 (模拟 SC 模块)、抽取滤波器和 PWM 构成。根据选定的分辨率,使用 PWM 来设置积分 时间。转换结束时, PWM 会锁存抽取滤波器输出,并生成中断,表示转换结束。 ADC SC 调制器模块的正向输入连接到 CT 模块的输出端, CT 模块与 SC 模块位于同一列上。将 CT 模块 配置为 PGA。可以在用户模块参数窗口中对 CT 模块的参考和输入进行配置。在 Interconnect View — Input (互联试图 — 输入)中, EzADC 用户模块仅有一个可编程输入。可能的 ADC 输入值由 PMux 定 义,而该 PMux 则取决于所使用的 ACB 模块。 所有模拟模块始终位于同一个模拟列内。 AnalogColumn_Clock MUX 始终被连接至 AnalogClock_0_Select MUX。带有一阶调制器的 EzADC 用户模块可以放置在任何列的顶部和中间模块 内。带有二阶调制器的用户模块使用的是模拟列中的三个模拟模块。 文档编号:001-94569 Rev. ** 页 2/10 EzADC 直流和交流电气特性 表 1. EzADC 电气特性 参数 最小值 典型值 最大值 单位 条件和注意 VIN – – VSS 到 VDD V 分辨率 – – – 位 采样率 – – – ksps G48 – 3.0 – % 缓冲器增益 = 48 ;偏移比较器使能 G24 – 2.2 – % 缓冲器增益 = 24 ;偏移比较器使能 G16 – 1.5 – % 缓冲器增益 = 16 ;偏移比较器使能 G4 – 0.7 – % 缓冲器增益 = 4 ;偏移比较器使能 G1 – 0.5 – % 缓冲器增益 = 1 ;偏移比较器使能 VOS – 4.5 – mV 缓冲器增益 = 1 ;偏移比较器禁用 VOS COMP – 0.5 – mV 缓冲器增益 = 1 ;偏移比较器使能 Ileakage – 1 – nA CIN – 3 – pF PSRR – 73 – dB Ioper – – µA 272 1380 5452 低功耗中等功耗高功耗 DNL – 0.1 – LSB 列时钟为 2 MHz INL – 0.5 – LSB 列时钟为 2 MHz SNR – 46 – dB 放置 带有一阶调制器的 EzADC 需要一个 CT 模块、一个 SC 模块和两个数字模块。可以将模拟模块放置在任何 占用顶部和中间行的模拟列内。两个数字模块在任意数字行上占用了连续的模块。而带有二阶调制器的 EzADC 则需要一个 CT 模块和两个 SC 模块,因此它占用了整个模拟列。 参数和资源 ADC 分辨率 该参数将设置 ADC 的分辨率。范围为 6 至 14 位。 文档编号:001-94569 Rev. ** 页 3/10 EzADC ADC 采样率 该参数将设置 ADC 的采样率。 采样率选择 (ksps) 分辨率 6 3.906、 1.953、 0.976 7 2.604、 1.302、 0.651 8 1.562、 0.781、 0.390 9 0.868、 0.434、 0.217 10 0.459、 0.229、 0.114 11 0.236、 0.118、 0.059 12 0.120、 0.060、 0.030 13 0.060、 0.030、 0.015 14 0.030、 0.015、 0.007 注意: 通过使用以下公式,可根据分别为 2 MHz、 1 MHz 和 500 KHz 的数据时钟频率,对上述所有采样 率进行计算: 缓冲器增益 该参数设置了 PGA 的增益。可用的增益选项分别为 48.000、 24.000、 16.000、 8.000、 5.333、 4.00、 3.200、 2.667、 2.286、 2.000、 1.777、 1.600、 1.455、 1.333、 1.231、 1.143、 1.062 和 1.000。 参考 通过该参数为 PGA 设置参考输出。 VSS 和 AGND 是参考选项 数据格式 通过该参数设置数据格式。可以将数据设置为有符号或无符号格式。 AGND 输出 使用该参数可允许或禁止将 AGND 输出连接至模拟总线。使用该选项可生成内部 AGND,以便将双 极信号连接至 ADC。 补偿偏移 使用该参数可启用或禁用相关二次采样。关于相关二次采样的更多信息,请参考 AN2226。为了补偿 偏移,需将 PGA 参考输出设置为 AGND、将 PGA 输入连接至 AGND,并执行单一转换。将 ADC 的 输出存储在 RAM 变量中。在其他测量中,要从 ADC 结果中减去该偏移值。 文档编号:001-94569 Rev. ** 页 4/10 EzADC 补偿偏移频率 通过该参数可设置 ADC 采样的数量,而采样后偏移会被更正。二次采样后可通过将该参数设置为 1 来获取最佳结果,但该操作会降低一半 ADC 的吞吐量。 应用编程接口 (API) 所提供的应用编程接口 (API)子程序作为用户模块的一部分,设计人员通过它可以采用更高级的方式处 理模块。本节指定了每个函数的接口,以及 “include” 文件所提供的相关常量。 注意: 在这里,同所有用户模块 API 中的一样, A 和 X 寄存器的值可以通过调用 API 函数进行更改。如果在调用 后需要 A 和 X 的值,则调用函数需要保留调用前的 A 和 X 的值。选择该 “ 寄存器易失 ” 策略是为了提 高效率,自 PSoC Designer 1.0 版起便强制使用该策略。 C 编译器自动遵守该要求。汇编语言编程员也要 确保其代码遵循该策略。虽然一些用户模块 API 函数可以保持 A 和 X 不变,但是无法保证它们将来也会如 此。 EzADC_Start 说明: 用于初始化并启动 EzADC 用户模块源。 C 原型: void EzADC_Start (BYTE bPowerSetting) 汇编: mov A, bPowerSetting lcall EzADC_Start 参数: bPowerSetting:设置 ADC 和 PGA 运行功率。 符号名称 数值 EzADC_LOWPOWER 1 EzADC_MEDPOWER 2 EzADC_HIGHPOWER 3 返回值: 无 EzADC_Stop 说明: 停止 EzADC 用户模块源。 C 原型: void EzADC_Stop (void) 文档编号:001-94569 Rev. ** 页 5/10 EzADC 汇编: lcall EzADC_Stop 参数: 无 返回值: 无 EzADC_SetBufferGain 说明: 设置 PGA 的增益。 符号名称 数值 EzADC_G48_00 0Ch EzADC_G24_00 1Ch EzADC_G16_00 08h EzADC_G8_00 18h EzADC_G5_33 28h EzADC_G4_00 38h EzADC_G3_20 48h EzADC_G2_67 58h EzADC_G2_27 68h EzADC_G2_00 78h EzADC_G1_78 88h EzADC_G1_60 98h EzADC_G1_46 A8h EzADC_G1_33 B8h EzADC_G1_23 C8h EzADC_G1_14 D8h EzADC_G1_06 E8h EzADC_G1_00 F8h C 原型: void EzADC_SetBufferGain(BYTE bGainSetting) 汇编 mov A, bGainSetting lcall EzADC_SetBufferGain 文档编号:001-94569 Rev. ** 页 6/10 EzADC 参数 无 返回值 无 EzADC_GetSamples 说明: 启动 ADC 转换。 C 原型: void EzADC_GetSamples (BYTE bNumSamples) 汇编: mov A, bNumSamples lcall EzADC_GetSamples 参数: 无 返回值: 无 EzADC_fIsDataAvailable 说明: 该函数用于检测 EzADC 转换是否完成。 C 原型: BYTE EzADC_fIsDataAvailable(void) 汇编: lcall EzADC_fIsDataAvailable 参数: 无 返回值: 如果未完成转换,则返回 0 ;如果转换已完成,则返回 1。 EzADC_iGetDataClearFlag 说明: 读取 ADC 结果,并清除 ADC 就绪标志。 C 原型: INT EzADC_iGetDataClearFlag(void) 汇编: lcall EzADC_iGetDataClearFlag 文档编号:001-94569 Rev. ** 页 7/10 EzADC 参数: 无 返回值: 以整数格式返回 ADC 结果。 EzADC_SetReference 说明: 为 PGA 设置参考。 C 原型: void EzADC_SetReference(BYTE bReferenceSetting) 汇编: mov A, bReferenceSetting lcall EzADC_SetReference 参数: bReference:PGA 的参考 符号名称 数值 EzADC_REF_VSS 0x10 EzADC_REF_AGND 0x01 返回值 无 文档编号:001-94569 Rev. ** 页 8/10 EzADC 固件源代码示例 下面介绍的是该用户模块的 C 语言代码示例。 //-----------------------------------------------------------------------// C main line //-----------------------------------------------------------------------#include <m8c.h> // part specific constants and macros #include "PSoCAPI.h" // PSoC API definitions for all User Modules int ADCResult; void main(void) { M8C_EnableGInt; // Enable Global Interrupts EzADC_Start(EzADC_HIGHPOWER); // Apply power to ADC EzADC_SetBufferGain(EzADC_G2_00); // Set Gain EzADC_GetSamples(0); // Have ADC run continuously for(;;) { while (!(EzADC_fIsDataAvailable())); // Loop until value ready ADCResult = EzADC_iGetDataClearFlag(); // Reset ready flag and get data // Add user code here to use or display result } } 下面内容是写入汇编语言的等效代码: //-----------------------------------------------------------------------// Assembly main line //-----------------------------------------------------------------------include "m8c.inc" ; part specific constants and macros include "memory.inc" ; Constants and macros for SMM/LMM and Compiler include "PSoCAPI.inc" ; PSoC API definitions for all User Modules export _main area bss(RAM) ADCResult : blk 2 area text(ROM,REL) _main: M8C_EnableGInt mov A, EzADC_HIGHPOWER lcall EzADC_Start mov A, EzADC_G2_00 lcall EzADC_SetBufferGain ; Enable Global Interrupts ; Apply power to ADC ; Set Gain mov A, 0 lcall EzADC_GetSamples ; Have ADC run continuously loop1: wait: lcall EzADC_fIsDataAvailable ; Loop until value ready jz wait call EzADC_iGetDataClearFlag ; Reset ready flag and get data 文档编号:001-94569 Rev. ** 页 9/10 EzADC mov [ADCResult], X mov [ADCResult + 1], A ; Add user code here to use or display result jmp loop1 版本历史记录 版本 1.0 创作者 KUK 说明 第一版本 注意: PSoC Designer 5.1 在所有用户模块基本介绍中都引入了 “ 版本历史 ”。本数据手册详细介绍当 前和先前用户模块版本之间的区别。 文档编号:001-94569 Rev. ** 修订日期 December 8, 2014 页 10/10 Copyright © 2012-2014 赛普拉斯半导体公司。此处所包含的信息可能会随时更改,恕不另行通知。除赛普拉斯产品内嵌的电路外,赛普拉斯半导体公司不对任何其他电路的使用承担任何责任。也 不会根据专利权或其他权利以明示或暗示的方式授予任何许可。除非与赛普拉斯签订明确的书面协议,否则赛普拉斯产品不保证能够用于或适用于医疗、生命支持、救生、关键控制或安全应用领 域。此外,对于合理预计会发生运行异常和故障并对用户造成严重伤害的生命支持系统,赛普拉斯将不批准将其产品用作此类系统的关键组件。若将赛普拉斯产品用于生命支持系统,则表示制造商 将承担因此类使用而招致的所有风险,并确保赛普拉斯免于因此而受到任何指控。 PSoC Designer™ 和 Programmable System-on-Chip™ 是赛普拉斯半导体公司的商标, PSoC® 是赛普拉斯半导体公司的注册商标。此处引用的所有其他商标或注册商标归其各自所有者所有。 所有源代码 (软件和 / 或固件)均归赛普拉斯半导体公司 (赛普拉斯)所有,并受全球专利法规 (美国和美国以外的专利法规)、美国版权法以及国际条约规定的保护和约束。赛普拉斯据此向获 许可者授予适用于个人的、非独占性、不可转让的许可,用以复制、使用、修改、创建赛普拉斯源代码的派生作品、编译赛普拉斯源代码和派生作品,并且其目的只能是创建自定义软件和 / 或固 件,以支持获许可者仅将其获得的产品依照适用协议规定的方式与赛普拉斯集成电路配合使用。除上述指定用途外,未经赛普拉斯的明确书面许可,不得对此类源代码进行任何复制、修改、转换、 编译或演示。 免责声明:赛普拉斯不针对该材料提供任何类型的明示或暗示保证,包括 (但不仅限于)针对特定用途的适销性和适用性的暗示保证。赛普拉斯保留在不另行通知的情况下对此处所述材料进行更 改的权利。赛普拉斯不对此处所述之任何产品或电路的应用或使用承担任何责任。对于合理预计可能发生运转异常和故障,并对用户造成严重伤害的生命支持系统,赛普拉斯不授权将其产品用作此 类系统的关键组件。若将赛普拉斯产品用于生命支持系统,则表示制造商将承担因此类使用而导致的所有风险,并确保赛普拉斯免于因此而受到任何指控。 产品使用可能受适用于赛普拉斯软件许可协议的限制。