6 到14-Bit Delta Sigma ADC 数据表DelSigMulti V 1.2

6 到 14-Bit Delta Sigma ADC 数据表
DelSigMulti V 1.2
001-65734 Rev. **
Single Slope 8-Bit ADC Data Sheet
Copyright © 2009-2010 Cypress Semiconductor Corporation. All Rights Reserved.
调制器
顺序
抽取
率
分辨率
采样
率
(CLK=2 MHz)
采样
率
(CLK=8 MHz)
抽取滤波器
数量
SC
模块
通道
RAM (I/O 引脚)
闪存
CY8C28x45, CY8C28x43, CY8C28x52, CY8C28x33, CY8C28x23
1
32
6
15625.0
62500.0
2
2
148
3
2
1
64
7.5
7812.5
31250.0
2
2
156
3
2
1
128
9
3906.3
15625.0
2
2
185
5
2
1
256
10.5
1953.1
7812.5
2
2
185
5
2
2
32
8
15625.0
62500.0
2
2
187
5
2
2
64
10
7812.5
31250.0
2
2
216
7
2
2
128
12
3906.3
15625.0
2
2
216
7
2
2
256
14
1953.1
7812.5
2
2
216
7
2
1
32
6
15625.0
62500.0
3
6
180
6
3
1
64
7.5
7812.5
31250.0
3
6
192
6
3
1
128
9
3906.3
15625.0
3
6
234
9
3
1
256
10.5
1953.1
7812.5
3
6
234
9
3
2
32
8
15625.0
62500.0
3
6
215
6
3
2
64
10
7812.5
31250.0
3
6
257
9
3
2
128
12
3906.3
15625.0
3
6
257
9
3
2
256
14
1953.1
7812.5
3
6
257
9
3
1
32
6
15625.0
62500.0
4
8
200
7
4
1
64
7.5
7812.5
31250.0
4
8
216
7
4
1
128
9
3906.3
15625.0
4
8
271
11
4
1
256
10.5
1953.1
7812.5
4
8
271
11
4
2
32
8
15625.0
62500.0
4
8
243
7
4
2
64
10
7812.5
31250.0
4
8
298
11
4
2
128
12
3906.3
15625.0
4
8
298
11
4
2
256
14
1953.1
7812.5
4
8
298
11
4
198 Champion Court
•
Cypress Semiconductor Corporation
Document Number: 001-65734 Rev. **
•
San Jose, CA 95134-1709
•
408-943-2600
Revised December 3, 2010
Single Slope 8-Bit ADC Data Sheet
请参考应用笔记 “Analog - ADC Selection” (模拟 - ADC 选择) AN2239 以获取其他转换器。
特性与概述
„
„
„
„
„
„
„
„
„
„
6-bit 到 14-bit 分辨率
2 到 4 通道同步采样
无符号或有符号 2 的补码格式的数据
最大采样率为 65,500 sps (在 6 比特分辨率情况下)、7812 sps (在 14-bit 分辨率情况下)
硬件中完全实施了 Sinc2 滤波器,降低了 CPU 开销和抗锯齿要求
用户可选择 1st 阶或 2nd 阶调制器以提高信噪比
内部和外部参考选项定义的输入范围
不需要数字模块
通过配置向导,可以轻松选择彼此全部同步的 2、3 或 4 通道 delta-sigma ADC 测量
抽取滤波器的内部定时器不允许使用数字模块
DelSigMulti 用户模块是积分转换器,需要 32 到 256 个积分周期才能生成单一个输出采样。 更改复用输
入会使得更改后的前两个采样失效。 此 DelSigMulti 用户模块最多支持 4 通道同时同步 delta-sigma
ADC 采样。
通过配置向导,可以轻松选择每个通道使用的模拟模块数和每个通道的抽取滤波器过采样率。
在放置模块之前,请读取 “ 参数 ” 一节。
Note
如果仅需要 1 个通道或需要多个不同步通道,则应当使用常规 “DelSig”、“DelSigPlus” 用
户模块。
Figure 1. 单通道 DelSigMulti 方框图
Document Number: 001-65734 Rev. **
Page 2 of 19
Single Slope 8-Bit ADC Data Sheet
功能说明
如图 1 所示,DelSigMulti 用户模块由三个主要功能组成:
„ 调制器
„ Sinc2 抽取滤波器
„ 定时发生器
每个组件提供一些选项,可以调整这些选项来实现给定应用场合的性能与资源利用之间的合适平衡。
调制器
调制器是 1-bit 过采样电路,它以所产生的 1 和 0 密度的形式表示输入电压。 低通抽取滤波器通过将多
个 1-bit 样品转换为具有较高分辨率的样品,将调制器输出降低到最终的采样率。 通常,抽取速率越高
(即过采样率越高),则分辨率结果越高,但是其他因素 (例如调制器的阶)也会影响分辨率结果。
Delta-Sigma 转换器的主要优点是调制器可提供 “ 噪声整形 ”。 通常,信号采样中固有的量化噪声是一
种大致均匀分布的噪声 (白噪声),其频率介于 “DC” 与采样频率一半 (即奈奎斯特频率)之间。 简单
而言,delta-sigma 调制器将某些量化噪声从较低频率转换为较高频率,之后会由抽取过滤器进行衰减。
二阶调制器需要两个开关电容模拟 PSoC 模块,它对噪声整形的效果要好于仅需要一个模拟 PSoC 模块的
一阶调制器。 由于最高抽取速率为 256X,因此与一阶调制器相比,二阶调制器将有效分辨率提高了 3.5bit。
Figure 2. DelSigMulti 一阶调制器图示
模拟模块配置为积分器。 比较器的输出极性对参考复用器进行配置,以便在输入中增减参考电压,并置入
积分器中。 此参考电压控制将积分器输出拉回到零的企图。 一位比较器输出也会馈入到 sinc2 抽取滤波
器中。
Document Number: 001-65734 Rev. **
Page 3 of 19
Single Slope 8-Bit ADC Data Sheet
请注意,1-bit 过采样率由四分发生器确定,四分发生器生成控制开关电容 (SC) PSoC 模块的 φ1 和 φ2
时钟。 输出速率的确定方法是:将数据除以 4 以获得 1-bit 过采样率,接着将结果除以抽取速率以获得
最终采样率。
Equation 1
下面的规格表中给出了可以使用的最高数据时钟频率。 对于 8 MHz 的数据时钟和 256 的抽取速率,采样
率为:
Equation 2
二阶调制器的构造方法是:将一阶调制器的模拟输出馈送到类似的 PSoC 模块中,并修改反馈排列,以便
第二个模块的 1-bit 比较器输出反馈回这两个模块,如图所示:
Figure 3. DelSigMulti 二阶调制器图示
由于模拟比较器总线在模拟 PSoC 模块阵列的列中垂直运行,二阶调制器的模块必须一个摞一个地放置。
DelSigMulti 的范围是通过 ±VRef 建立的。 您可以在 PSoC Designer“ 全局资源 ” 窗口中设置 VRef。
对于固定量程,VRef 设置为 ±VBandgap,对于 CY8C29x66 系列 PSoC 设备,设置为 ±1.6 VBandgap。 对于
可调整量程,VRef 设置为 ±Port 2[6]。 要提供比率计量程,则 VRef 设置为 ±VDD/2。 表 1 给出了完整
选项列表:
Table 1.
针对 Ref Mux 全局参数设置的输入电压范围
RefMux 设置
Vdd = 5 伏
Vdd = 3.3 伏
(Vdd/2) ± BandGap
1.2 < Vin < 3.8
0.35 < Vin < 2.95
(Vdd/2) ± (Vdd/2)
0 < Vin < 5
0 < Vin < 3.3
BandGap ± BandGap
0 < Vin < 2.6
0 < Vin < 2.6
(1.6*BandGap) ± (1.6*BandGap)
0 < Vin < 4.16
NA
Document Number: 001-65734 Rev. **
Page 4 of 19
Single Slope 8-Bit ADC Data Sheet
RefMux 设置
Vdd = 5 伏
Vdd = 3.3 伏
(2*BandGap) ± BandGap
1.3 < Vin < 3.9
NA
(2*BandGap) ± P2[6]
(2.6 - VP2[6]) < Vin < (2.6 + VP2[6]) NA
P2[4] ± BandGap
(VP2[4] - 1.3) < Vin < (VP2[4] + 1.3) (VP2[4] - 1.3) < Vin < (VP2[4] + 1.3)
P2[4] ± P2[6]
(VP2[4]-VP2[6]) < Vin <
(VP2[4]+VP2[6])
(VP2[4]-VP2[6]) < Vin <
(VP2[4]+VP2[6])
Sinc2 抽取过滤器
抽取过滤器的响应由下列 z 域关系提供:
Equation 3
本节中绘制的频率域传输函数将频率标准化,以使输出采样率 Fnom 等于 1.0。 -3 dB 点出现在紧靠
0.318×Fnom 上方,函数的零点出现在 Fnom 的每个整数倍处。 由于 1-bit 采样率比额定输出速率高 32
到 256,奈奎斯特限制为比 Fnom 高 4 到 7 个八度,因而极大降低了对防锯齿滤波器的要求。 在图形右
侧,用粗垂直线显示了抽取速率为 256 的 1-bit 奈奎斯特频率。 虽然实现较高抽取速率是可能的,但是
由于设备本底噪声的存在,它们带来的好处有限。 对于 14-bit 拓扑、抽取速率为 256 的二阶调制器,分
辨率受信噪比限制。 要在 DC 或慢速移动信号测量中获取可重复的 14-bit 分辨率,需要对多个输出采样
值求平均值,或者应用更复杂的信号处理技术。
Figure 4. Sinc2 抽取过滤器幅度响应,包含 -3dB 点和奈奎斯特频率
Document Number: 001-65734 Rev. **
Page 5 of 19
Single Slope 8-Bit ADC Data Sheet
与早先的 DELSIG8 和 DELSIG11 不同,此用户模块在硬件中完整实施传输函数的分子和分母。 这需要改进
的 “ 类型 2” 抽取滤波器。 该滤波器既可用于一阶调制器拓扑,也可用于二阶调制器拓扑。 抽取滤波器
通过在 1-bit 采样率下运行的双积分器实现传输函数的分母。 分子由在额定输出采样率下运行的双微分
器 (第二差分运算符)实现。 DelSigMulti 用户模块使用的 CPU 开销和中断延迟限制为大约 80 周期或
更少,以便从 I/O 空间中的抽取滤波器寄存器检索样品数据。 类型 2 抽取滤波器实际上是为 n 比特转换
器生成从 0 到 2n-1 的无符号值。 中断服务例程可以配置为将此转换为从 -2n-1 到 +2n-1-1 的 2 的补码
值。
Table 2.
Delta Sigma ADC 功能表
Delta Sigma ADC
特性
DELSIG8、 DELSIG11
DelSig
DelSigPlus
DelSigMulti
分辨率
8、11
6-14
6-14
6-14
数字模块
1
1-2
0
0
模拟模块
1-2
1-2
1-2
2-8
支持的部件
CY8C24/27/29,而非
CY8C24x94、
CY8C28x45
CPU 开销和中断延迟
高
CY8C28x45
低
低
低
时序发生器和要求
向模拟调制器提供 φ1 和 φ2 时钟的四分时钟发生器也会向抽取滤波器提供位时钟。 对应于输出采样率
的抽取因子由字时钟确定。 字时钟由抽取滤波器内部定时器生成。
类型 2 抽取滤波器是 Sinc2 滤波器的全硬件版本。 其体系结构使您可以选择将内部定时器用于抽取和中
断目的。 要计算有效分辨率,请使用下列等式:
单一调制器: (log2( 抽取滤波器速率 ) - 1) × 1.5
双调制器: (log2( 抽取滤波器速率 ) - 1) × 2
数据格式位可以加权为有符号 (2s 补码输出)或无符号 (偏移二进制数据)数值。
Table 3.
抽取滤波器数据输出移位
抽取速率
调制器类型
有效分辨率
移位
32
单
6
4
32
双
8
2
64
单
8 (7.5)
4
64
双
10
2
128
单
9
5
128
双
12
2
256
单
11(10.5)
5
256
双
14
2
Document Number: 001-65734 Rev. **
Page 6 of 19
Single Slope 8-Bit ADC Data Sheet
直流和交流电气特性
The following values are indicative of expected performance and based on initial
characterization data. 除非另外指定了 TA = -40、25、85 和 125°C、Vdd = 5.0V。
Table 4.
5.0V 结果汇总
参数
典型值
限制
单位
备注
8 比特、24MHz CPU 时钟、1 MHz 数据时钟、高功率
增益
-2.6482
2
%FSR
偏移
-47.0072
13
mV
DNL
0.161
<1
LSB
INL
0.27
LSB
信噪比
45.86
dB
8 比特、24MHz CPU 时钟、2 MHz 数据时钟、高功率
增益
-2.3168
2
%FSR
偏移
-62.3507
13
mV
DNL
0.069
<1
LSB
INL
0.172
LSB
信噪比
45.86
dB
Document Number: 001-65734 Rev. **
Page 7 of 19
Single Slope 8-Bit ADC Data Sheet
The following values are indicative of expected performance and based on initial
characterization data. 除非另外指定了 TA = -40、25、85 和 125°C、Vdd = 3.3V。
Table 5.
3.3V 结果汇总
参数
典型值
限制
单位
备注
8 比特、24MHz CPU 时钟、1 MHz 数据时钟、高功率
增益
-2.7182
2
%FSR
偏移
-40.1334
5
mV
<1
LSB
DNL
INL
LSB
信噪比
dB
8 比特、24MHz CPU 时钟、2 MHz 数据时钟、高功率
增益
-2.8219
2
%FSR
偏移
-42.8073
5
mV
DNL
0.064
<1
LSB
INL
0.161
LSB
信噪比
46.02
dB
布置
如果 DelSigMulti 用户模块是在工具栏中选择的或者是通过在选择器视图中双击其图标选择的,将打开一
个选择窗口,该窗口给出了选择适当拓扑的指南。 稍后可以通过右键单击位置视图中的用户模块并从上下
文菜单中选择 ” 用户模块选择选项 ...”, 来更改拓扑。
一阶调制器设计需要一个 PSoC 模拟模块。 名为 “ADC” 的模拟模块可以放置在任何开关电容 PSoC 模块
中。
二阶调制器设计使用两个开关电容 PSoC 模块:ADC0 和 ADC1。 由于连接它们的模拟比较器总线在模拟阵
列的每列中垂直运行,开关电容 PSoC 模块必须一个摞一个地垂直放置。
虽然有大量可用于模拟模块的位置,但是 DelSigMulti 还使用 PSoC 设备的唯一硬件抽取过滤器。 抽取滤
波器是在放置模拟模块时自动分配的;不需要附加操作。 因此,给定配置中只能放置 DelSigMulti 用户
模块的一个实例。 通过动态重新配置,可以同时加载 (激活)多个配置,不执行阻止两个 DelSigMulti
用户模块同时运行的检查。 如果发生这种情况,则两个实例似乎都可以工作;但是,只有一个最近加载的
实例可以控制抽取过滤器。 两个中断仍可以运行,但是可能会有干扰。
Document Number: 001-65734 Rev. **
Page 8 of 19
Single Slope 8-Bit ADC Data Sheet
参数和资源
放置 DelSigMulti 实例后,必须配置下列一些参数才能正确操作:输入信号复用器选择、时钟相位和轮询
选择。
DataFormat0/1/2/3
此参数可以采用无符号(默认值)或有符号值。 对于 n 比特分辨率,无符号数据采用的值为从零到
2n-1。 有符号数据范围为从 -2n-1 到 +2n-1-1。 0/1/2/3 代表使用的 delta-sigma ADC 通道的数量。
时钟 Phase0/1/2/3
时钟相位的选择用于将一个模拟 PSoC 模块的输出与另一个模块的输入同步。 开关电容模拟 PSoC 模
块使用两相位时钟 (φ1、φ2)获取并传输信号。 通常,DelSigMulti 的输入是在 φ1 上采样的。
这便产生一个问题:许多用户模块在 φ1 期间将其输出自动归零,仅在 φ2 期间给出有效输出。 如
果此类模块的输出馈送到 DelSigMulti 的输入,则 DelSigMulti 对中间值采样。 时钟相位选择允许
交换相位,因此输入信号是在 φ2 期间获取的。 0/1/2/3 代表使用的 delta-sigma ADC 通道的数量。
PosInput0/1/2/3
此参数确定单端输入的信号源,或差分输入的同相输入。 0/1/2/3 代表使用的 delta-sigma ADC 通
道的数量。
NegInput0/1/2/3 和 NegInputGain0/1/2/3
NegInput 选择差分信号对的反相输入源。 如果使用单端输入,则可以将此参数设置为任意合法值。
通过将 NegInputGain 参数设置为 “ 断开连接 ” (零增益),可以断开单端输入与转换器的连接。
NegInputGain 调整反相输入相对于同相输入的增益(请参见上述 NegInput 参数)。 对于单端输入,
此参数应当采用 “ 断开连接 ” 值。 对于差分输入,NegInputGain 可以设置为 1.000。 如果需要,
应用于反相输入的增益还可以按 1/16th 增量在 0.0625 与 1.9375 之间相对于同相输入进行调整。
0/1/2/3 代表使用的 delta-sigma ADC 通道的数量。
中断生成控制
当选中 PSoC Designer 中的 启用中断生成控制 复选框时,有两个附加参数变为可用。 以下菜单提供了此
功能: 项目 > 设置 > 芯片编辑器 当多个覆盖层用于由多个用户模块跨覆盖层共享的中断时,中断生成控
制是非常重要的:
„ 中断 API
„ IntDispatchMode
InterruptAPI
InterruptAPI 参数允许有条件生成用户模块的中断处理程序和中断矢量表条目。 选择 “ 启用 ” 可
生成中断处理程序和中断矢量表条目。 选择 “ 禁用 ” 可不生成中断处理程序和中断矢量表条目。
如果项目有多个覆盖层,其中一个模块资源由不同的覆盖层使用,则选择时一定要加以注意。 选择
以仅为实际需要它们的覆盖层生成中断,以节省代码空间。
IntDispatchMode
IntDispatchMode 参数用于指定如何为同一模块中但不同覆盖层中的多个用户模块所共享的中断处理
中断请求。 当您选择 ActiveStatus 时,固件在为共享中断请求提供服务之前测试哪个覆盖层处于活
动。 每次请求共享中断时,都会进行此测试。 这会增加延迟,还会生成为共享中断请求提供服务的
不确定过程,但是不需要任何 RAM。 当您选择 OffsetPreCalc 时,仅当最初加载覆盖层时,固件才
会计算共享中断请求的来源。 此计算减少了中断延迟,并生成为共享中断请求提供服务的不确定过
程,但是耗费了一字节 RAM。
Document Number: 001-65734 Rev. **
Page 9 of 19
Single Slope 8-Bit ADC Data Sheet
应用程序编程接口
应用程序编程接口 (API) 例程作为用户模块一部分提供,以允许编程人员在较高分辨率下处理模块。 本
节指定每个函数的接口和 “ 包括 ” 文件给出的相关常量。
每次放置用户模块时,都会向其分配一个实例名称。 默认情况下,PSoC Designer 将 DelSigMulti_1 分配
给此用户模块在给定项目中的第一个实例。 它可以更改为符合标识符语法规则的任何唯一值。 分配的实例
名称成为每个全局函数名称、变量和常量符号的前缀。 在下面的说明中,为了清晰起见,实例名称已简写
为 DelSigMulti。
Note
此处就像在所有用户模块 API 中一样,可以通过调用 API 函数更改 A 和 X 寄存器的值。 如果在
调用之后仍需要这些值,则调用函数需负责在调用之前保留 A 和 X 的值。 选择此 “ 寄存器是易
失的 ” 策略是为了提高效率,从 PSoC Designer 1.0 版开始就已经强制实施了此策略。 C 编译器
会自动考虑这一要求。 汇编语言编程人员还必须确保他们的代码遵循策略。 虽然一些用户模块
API 函数可以保留 A 和 X 不变,但是不保证将来它们也会这样做。
DelSigMulti_Start
说明:
对此用户模块执行所有必需的初始化,并设置开关电容 PSoC 模块的电源级别。 所有通道都是在相同
电源级别下配置的。
C 原型:
void DelSigMulti_Start(BYTE bfPowerSetting)
汇编:
mov
A, bfPowerSetting
lcall DelSigMulti_Start
参数:
bPowerSetting: 一字节有四个 2-bit 位字段,每个字段分别指定每个通道的电源级别。 在复位和配
置之后,分配给 DelSigMulti 的模拟 PSoC 模块关闭电源。 下表列出了 C 和 汇编及其相关值。
符号名称
掩码
DelSigMulti_CH0_OFF
00h
DelSigMulti_CH0_LOWPOWER
01h
DelSigMulti_CH0_MEDPOWER
02h
DelSigMulti_CH0_HIGHPOWER
03h
DelSigMulti_CH1_OFF
00h
DelSigMulti_CH1_LOWPOWER
04h
DelSigMulti_CH1_MEDPOWER
08h
DelSigMulti_CH1_HIGHPOWER
0Ch
DelSigMulti_CH2_OFF
00h
DelSigMulti_CH2_LOWPOWER
10h
DelSigMulti_CH2_MEDPOWER
20h
Document Number: 001-65734 Rev. **
Page 10 of 19
Single Slope 8-Bit ADC Data Sheet
符号名称
掩码
DelSigMulti_CH2_HIGHPOWER
30h
DelSigMulti_CH3_OFF
00h
DelSigMulti_CH3_LOWPOWER
40h
DelSigMulti_CH3_MEDPOWER
80h
DelSigMulti_CH3_HIGHPOWER
C0h
返回值:
无
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。
DelSigMulti_Stop
说明:
将开关电容 PSoC 模块的功耗级别设置为关闭。
C 原型:
void DelSigMulti_Stop(void)
汇编:
lcall
DelSigMulti_Stop
参数:
无
返回值:
无
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。
DelSigMulti_SetPower
说明:
设置 UM 的每个通道的开关电容 PSoC 模块的功耗级别。
C 原型:
void DelSigMulti_SetPower(BYTE bPowerSetting)
汇编:
mov
A, bPowerSetting
lcall DelSigMulti_SetPower
Document Number: 001-65734 Rev. **
Page 11 of 19
Single Slope 8-Bit ADC Data Sheet
参数:
bPowerSetting: 一字节有四个 2-bit 位字段,每个字段分别指定每个通道的功耗级别。 在复位和配
置之后,分配给 DelSigMulti 的模拟 PSoC 模块关闭电源。 下表列出了 C 和 汇编及其相关值。
符号名称
掩码
DelSigMulti_CH0_OFF
00h
DelSigMulti_CH0_LOWPOWER
01h
DelSigMulti_CH0_MEDPOWER
02h
DelSigMulti_CH0_HIGHPOWER
03h
DelSigMulti_CH1_OFF
00h
DelSigMulti_CH1_LOWPOWER
04h
DelSigMulti_CH1_MEDPOWER
08h
DelSigMulti_CH1_HIGHPOWER
0Ch
DelSigMulti_CH2_OFF
00h
DelSigMulti_CH2_LOWPOWER
10h
DelSigMulti_CH2_MEDPOWER
20h
DelSigMulti_CH2_HIGHPOWER
30h
DelSigMulti_CH3_OFF
00h
DelSigMulti_CH3_LOWPOWER
40h
DelSigMulti_CH3_MEDPOWER
80h
DelSigMulti_CH3_HIGHPOWER
C0h
返回值:
无
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。
DelSigMulti_StartAD
说明:
激活此用户模块的中断,开始采样。
C 原型:
void DelSigMulti_StartAD(void)
汇编
lcall
DelSigMulti_StartAD
Document Number: 001-65734 Rev. **
Page 12 of 19
Single Slope 8-Bit ADC Data Sheet
参数:
无
返回值:
无
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。
DelSigMulti_StopAD
说明:
通过中断禁用关闭 A/D。 模拟电源仍提供给模拟模块。
C 原型:
void DelSigMulti_StopAD(void)
汇编:
lcall
DelSigMulti_StopAD
参数:
无
返回值:
无
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。
DelSigMulti_fIsDataAvailable
说明:
检查新 ADC 采样数据是否已就绪。 标志是在 ADC 产生的结果已就绪的情况下设置的。 此 API 函数
允许用户检查标志。 将针对整个 UM 检查数据可用性。 所有通道都同步,因此所有数据同时是新数据
或旧数据。 因此,仅进行一项检查,该检查适用于所有通道的所有采样数据。 用户必须使用另一个
API 函数清除此标志。
C 原型:
BYTE DelSigMulti_fIsDataAvailable(void)
汇编:
lcall DelSigMulti_fIsDataAvailable
cmp
A, 0
jz
.DataNotAvailable
参数:
无
Document Number: 001-65734 Rev. **
Page 13 of 19
Single Slope 8-Bit ADC Data Sheet
返回值:
如果已转换每个通道的数据,且这些数据准备读取,则返回非零值。 如果尚未转换每个通道的数据
且这些数据未就绪,则返回零。
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。 当前,仅修改 CUR_PP 页
指针寄存器。
DelSigMulti_GetAllDataClearFlag
说明:
此函数用于使用一个函数检索通道的数据。 RAM 阵列指针传递到此函数中,此函数将 ADC 结果放入
该 RAM 阵列。 用户必须确保其 RAM 阵列大小适合 ADC 通道的数量和分辨率。 此函数还清除 ADC 数
据已就绪的标志。可以调用 DelSigMulti_fIsDataAvailable() 以验证在调用此函数之前数据采样已
就绪。
C 原型:
void DelSigMulti_GetAllDataClearFlag(BYTE* pbRamBuffer)
汇编:
mov
A, >pbRamBuffer
mov
X, <pbRamBuffer
lcall DelSigMulti_GetAllDataClearFlag
参数:
pbRamBuffer: 此参数确定 ADC 采样数据复制到的 RAM 位置。 复制的数据为 ADC 结果。 用户必须
确保 RAM 阵列类型与 ADC 结果的数据类型相匹配。 ADC 通道数据放置在首先从通道 0 数据开始的
用户阵列中,字节顺序为 MSB 优先。 例如,如果 UM 有三个无符号 10-bit 数据通道,则此阵列按
下列顺序将六个字节复制到用户阵列: Ch0_Result_MSB、Ch0_Result_LSB、Ch1_Result_MSB、
Ch1_Result_LSB、Ch2_Result_MSB、Ch2_Result_LSB.。如果用户拥有的阵列类型不同于 BYTE 类型,
则用户应将传递给的函数的阵列指针强制转换成 BYTE 指针。
返回值:
无
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。 当前,仅修改 CUR_PP 页
指针寄存器。
DelSigMulti_iGetData
DelSigMulti_cGetData
说明:
以有符号 8-bit 或 16-bit 2 的补码格式返回转换的数据。 请注意,用户模块 DataFormat 参数决定
了基本表示。 当基本表示是无符号数据时,调用有符号格式函数不会更改数据值。可以调用
DelSigMulti_fIsDataAvailable() 以验证数据采样已就绪。 通道编号会传递给此函数。
Document Number: 001-65734 Rev. **
Page 14 of 19
Single Slope 8-Bit ADC Data Sheet
C 原型:
CHAR DelSigMulti_cGetData(BYTE bChannelNumber) // use for 8-bit resolution or lower
INT DelSigMulti_iGetData(BYTE bChannelNumber) // use for 9-bit resolution or higher
汇编:
mov
A, [bChannelNumber]
lcall DelSigMulti_cGetData
- or mov
A, [bChannelNumber]
lcall DelSigMulti_iGetData
; Result will be in A
; LSB will be in A, MSB in X upon return
参数:
bChannelNumber: 此参数确定返回哪个通道的数据。
返回值:
以 8-bit 或 16-bit 2 的补码格式返回转换的数据采样。
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。 当前,仅修改 CUR_PP 页
指针寄存器。
DelSigMulti_bGetData
DelSigMulti_wGetData
说明:
以 8-bit 或 16-bit 无符号格式返回转换的数据。 请注意,用户模块 DataFormat 参数决定了基本表
示。 当基本表示是有符号数据时,调用无符号格式函数不会更改数据值。可以调用
DelSigMulti_fIsDataAvailable() 以验证数据采样已就绪。 通道编号会传递给此函数。
C 原型:
BYTE DelSigMulti_bGetData(BYTE bChannelNumber) // use for 8-bit resolution or lower
WORD DelSigMulti_wGetData(BYTE bChannelNumber) // use for 9-bit resolution or higher
汇编:
mov
A, [bChannelNumber]
lcall DelSigMulti_bGetData
- or mov
A, [bChannelNumber]
lcall DelSigMulti_wGetData
; Result will be in A
; LSB will be in A, MSB in X upon return
参数:
bChannelNumber: 此参数确定返回哪个通道的数据。
返回值:
根据该函数,以 8-bit 或 16-bit 无符号格式返回转换的数据采样。
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。 当前,仅修改 CUR_PP 页
指针寄存器。
Document Number: 001-65734 Rev. **
Page 15 of 19
Single Slope 8-Bit ADC Data Sheet
DelSigMulti_ClearFlag
说明:
复位数据可用标志。
C 原型:
void DelSigMulti_ClearFlag(void)
汇编:
lcall
DelSigMulti_ClearFlag
参数:
无
返回值:
无
副作用:
可以通过此函数的此实现或将来实现修改 A 和 X 寄存器。 这适用于大型存储器模型中的所有 RAM 页
指针寄存器。 如果需要,调用函数负责通过调用 fastcall16 函数保留值。 当前,仅修改 CUR_PP 页
指针寄存器。
固件源代码样本
此示例重复上一情形,但是使用 API 函数而不是直接引用全局变量。
下面是汇编语言示例:
include "DelSigMulti.inc"
include "m8c.inc"
export _main
_main:
M8C_EnableGInt
; enable global interrupts
mov
A,DelSigMulti_CH0_HIGHPOWER | DelSigMulti_CH1_HIGHPOWER
; Establish
power setting...
call DelSigMulti_Start
; and initialize
call DelSigMulti_StartAD
; Commence sampling process
mainloop:
call DelSigMulti_fIsDataAvailable
; Retrieve the status byte
cmp
A, 0
jz
mainloop
; spin lock until(data is Available)
mov
A, >RamBuffer
mov
X, <RamBuffer
call DelSigMulti_GetAllDataClearFlag
; fastcall convention places ADC results in
RAM array defined by RamBuffer pointer
call ProcessSample
; pass the sample to the dummy fcn
jmp
mainloop
ProcessSample:
...
ret
Document Number: 001-65734 Rev. **
; (do something useful with the data)
Page 16 of 19
Single Slope 8-Bit ADC Data Sheet
等效的 C 代码:
#include <m8c.h>
#include "PSoCAPI.h"
// part specific constants and macros
// PSoC API definitions for all User Modules
BYTE * RamBuffer;
void main(void)
{
M8C_EnableGInt;
DelSigMulti_Start(DelSigMulti_CH0_HIGHPOWER|DelSigMulti_CH1_HIGHPOWER);
DelSigMulti_StartAD();
while(1) {
if( DelSigMulti_fIsDataAvailable() ) {
DelSigMulti_GetAllDataClearFlag(RamBuffer); // copy ADC data to
// buffer before processing
}
}
}
配置寄存器
下面一节详述了此用户模块更改的寄存器。
模拟寄存器、1st 二阶调制器
Table 6.
“ADC” 模拟开关电容 PSoC 模块使用的寄存器
寄存器
7
6
0
5
0
4
1
3
0
2
ADC_CH0/1/2/3_CR0
1
ADC_CH0/1/2/3_CR1
PosInput0/1/2/3
ADC_CH0/1/2/3_CR2
0
1
0
0
0
ADC_CH0/1/2/3_CR3
1
1
1
0
NegInput0/1/2/3
1
0
0
0
0
0
0
0
InvertingGain0/1/2/3
电源
PosInput0/1/2/3 选择单端输入信号或差分输入信号的同相输入。 NegInput0/1/2/3 选择差分输入的反相
输入。 只要 InvertingGain0/1/2/3 字段设置为零,反相输入就会断开连接。 电源 / 功耗是通过
DelSigMulti_Start 和 DelSigMulti_SetPower API 函数设置的。 0/1/2/3 代表使用的 delta-sigma ADC
通道的数量。
模拟寄存器、2nd 二阶调制器
Table 7.
“ADC0” 和 “ADC1” 模拟开关电容 PSoC 模块所使用的寄存器
寄存器
7
6
0
4
0
3
1
2
ADC0_CH0/1/2/3_CR0
1
ADC0_CH0/1/2/3_CR1
PosInput0/1/2/3
ADC0_CH0/1/2/3_CR2
0
1
0
0
0
ADC0_CH0/1/2/3_CR3
1
1
1
0
NegInput0/1/2/3
Document Number: 001-65734 Rev. **
0
5
1
0
0
0
0
0
0
0
InvertingGain0/1/2/3
电源
Page 17 of 19
Single Slope 8-Bit ADC Data Sheet
寄存器
7
6
ADC1_CH0/1/2/3_CR0
1
ADC1_CH0/1/2/3_CR1
LinkToADC0
ADC1_CH0/1/2/3_CR2
0
0
ADC1_CH0/1/2/3_CR3
1
1
5
0
4
0
3
2
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
电源
PosInput0/1/2/3 选择单端输入信号或差分输入信号的同相输入。 NegInput0/1/2/3 选择差分输入的反相
输入。 只要 InvertingGain0/1/2/3 字段设置为零,反相输入就会断开连接。 LinktoADC0 由模块位置确
定,它将 ADC0 模块的输出连接到 ADC1 PSoC 模块的 “A” 输入电容。 电源是通过 DelSigMulti_Start
和 DelSigMulti_SetPower API 函数设置的。 0/1/2/3 代表使用的 delta-sigma ADC 通道的数量。
抽取滤波器控制寄存器
Table 8.
抽取控制寄存器
位
7
6
5
4
3
2
DECx_DH
数据高字节
DECx_DL
数据低字节
DEC_CR0
ACC_IGEN
DEC_CR1
0
IDEC
ICLKS3
ICLKS2
DECx_CR0
POL
GOOO
GOOE
0
DEC_CR3
DEC1_EN
CLK_IN1
DEC0_EN
CLK_IN0
DEC_CR4
DEC3_EN
CLK_IN3
DEC2_EN
CLK_IN2
DEC_CR5
0
DECx_CR
模式
ICLKS
ACE_IGEN
ICLKS1
DCLKS3
1
0
DCLKS0
DCLKS2
DCLKS1
DATA_IN
DSCLK
数据输出移位
数据格式
抽取速率
抽取滤波器是用于实现 Sinc2 滤波器的专用硬件。 它由三个控制寄存器和两个数据输出寄存器组成。
DCol 选择将连接的列比较器。 DCLKSEL 选择用于控制抽取滤波器定时的数字时钟。 这两个参数都是在设
备编辑器中设置的。 DEC_CR2 中的移位是根据抽取速率设置的,在 DEC_CR2 中也进行了指定,其目的是最
大程度地减少软件中必须完成的对齐数据。
数字模块寄存器
Table 9.
位
数字模块控制寄存器
7
6
DxCxxCR0
5
4
3
2
1
0
启用
此寄存器在使用时配置有附加数字模块,以便通过调用函数 DelSigMulti_StartAD. 启动此 UM 的生成时
钟。另外,此寄存器用于通过调用函数 DelSigMulti _StopAD 停止生成时钟。
Document Number: 001-65734 Rev. **
Page 18 of 19
Single Slope 8-Bit ADC Data Sheet
版本历史记录
版本
1.2
创作者
DHA
说明
增加了 DRC,以检查源时钟在数字源和模拟源中是否不同。
改进了 GetAllDataClearFlagAPI 实现。
改进了时钟选择 DRC。
Note
PSoC Designer 5.1 在所有用户模块数据表中提供了一个版本历史记录。 这一部分概要说明了当
前与以前的用户模块版本之间的差异。
Document Number: 001-65734 Rev. **
Revised December 3, 2010
Page 19 of 19
Copyright © 2009-2010 Cypress Semiconductor Corporation. The information contained herein is subject to change without notice. Cypress Semiconductor Corporation assumes no responsibility
for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any license under patent or other rights. Cypress products are not warranted nor intended
to be used for medical, life support, life saving, critical control or safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its
products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress products
in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
PSoC Designer™ and Programmable System-on-Chip™ are trademarks and PSoC® is a registered trademark of Cypress Semiconductor Corp. All other trademarks or registered trademarks
referenced herein are property of the respective corporations.
Any Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide patent protection (United States and foreign),
United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works
of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with
a Cypress integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source Code except as specified above is
prohibited without the express written permission of Cypress.
Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described herein. Cypress does not
assume any liability arising out of the application or use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems
where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress' product in a life-support systems application implies that the manufacturer
assumes all risk of such use and in doing so indemnifies Cypress against all charges.
Use may be limited by and subject to the applicable Cypress software license agreement.