® PSoC Creator™组件数据手册 抖动电压数模转换器(DVDAC) 2.0 特性 两个电压范围,即 1 伏特和 4 伏特 分辨率可调整为 9、10、11 或 12 位 具有抖动特性,该特性使用了 DMA,而无需使用 CPU 的开销 使用一个单 DAC 模块 概述 抖动电压数模转换器(DVDAC)模块的分辨率范围为 9 位到 12 位。抖动用于提高其基本的 8 位 VDAC8 分辨率。只需要使用小的输出电容来抑制抖动产生的噪声。 输入/输出接口 本节介绍了 VDAC8 的各种输入和输出接口。I/O 列表中的星号(*)表示,在 I/O 说明部分中所列 出的情况下,该 I/O 可能不可见。 Vout — 模拟 Vout 终端连接到 DAC 的电压输出端。它可以连接到 PSoC 上任何兼容模拟的引脚。需要在该输 出引脚和 Vssa 之间放置外部电容,以滤除电压抖动所生成的噪声。 赛普拉斯半导体公司• 198 Champion Court • San Jose,CA 95134-1709 • 408-943-2600 文档编号:001-92054 修订版** 修订版 April 10, 2014 ® PSoC Creator™组件数据手册 抖动电压 DAC 时钟 — 输入* 外部时钟终端。当选中 External clock 选项时,将出现该终端。如果选中 Internal clock 选项, 则时钟自动在组件内部配置,且时钟终端将不显示。时钟输入是在组件外部生成的时钟。该时钟 决定了 DAC(数模转换器)数据寄存器的更新速率。 组件参数 将一个 DVDAC 组件拖入您的设计中,并双击以打开“Configure”对话框。 DVDAC 组件提供下列参数。 Voltage Range(电压范围) 此参数允许您将两个电压范围中的一个设置为默认值。 范围 输入值范围 输出公式 1伏 0至1.020伏 Vout = (value/2 bits ) * 1.024伏 4伏 0 至 4.080伏 Vout = (value/2 bits ) * 4.096伏 注:“bits”指的是 DAC 分辨率的位数。“value”表示 DAC 的当前整数数值。 页 2/13 文档编号:001-89198 修订版** ® PSoC Creator™组件数据手册 抖动电压 DAC Resolution(分辨率) 通过该参数,可以选择四个分辨率中的一个(即 9、10、11 或 12)。请查看 Value(数值)部分 的表格,了解 Resolution 和 Value 参数之间的关系。 Value(数值) mV 字段表示 DVDAC 输出电压的初始值,其单位为毫伏。Hex 字段表示 DVDAC 输入数据值以十 六进制格式来显示。运行时间内,DVDAC_SetValue()函数可以覆盖默认值。 分辨率 数值 步长,单位为mV 步长,单位为mV (1 伏的范围) (4伏的范围) 9 0x0至0x1FE 2 8 10 0x0至0x3FC 1 4 11 0x0至0x7F8 0.5 2 12 0x0至0xFF0 0.25 1 Timing(时序) 通过 Internal clock 和 External clock 选项,您可以选择组件的时钟源,具体选项如下: Internal clock:DVDAC 组件的内部时钟源 External clock:该组件的外部时钟源 使能外部时钟时,DVDAC 符号中将显示时钟的输入引脚。 Clock frequency(kHz)字段指的是输出电压被更新为抖动电压值的速度。每次更新时钟频率时, 会生成 DMA 请求,使下一个值被写入 VDAC 内。最大频率受 8 位 VDAC 模块的更新率的限制, 并且对于 1 伏的范围和 4 伏的范围,该频率分别为 1 MHz 和 250 KHz。该频率必须大于 BUS_CLK 除以 12 的频率,以确保在生成下一个请求前,DMA 请求能够完成其传输。如果系统中 的其他函数也使用了 DMA,需要使用 BUS_CLK 和 DVDAC 时钟之间的更高容限。当使用内部时 钟时,所选的默认频率将是电压范围内受支持的最大频率。所以,可以将该频率修改为更低的值。 文档编号:001-89198 修订版** 页 3/13 ® PSoC Creator™组件数据手册 抖动电压 DAC 应用编程接口 通过应用编程接口(API),您可以使用软件对组件进行配置。下表列出并说明了每个函数的接口。 以下各节将更详细地介绍每个函数。 默认情况下,PSoC Creator 将实例名称“DVDAC_1”分配给指定设计中组件的第一个实例。可 将该值更改为符合标识符语法规则的任意唯一值。实例名称会成为每个全局函数名称、变量和常 量符号的前缀。为了便于阅读,下表中使用的实例名称为“DVDAC”。 函数 说明 DVDAC_Start() 使用默认自定义程序的值初始化DVDAC。 DVDAC_Stop() 禁用DVDAC,并将其设置为最低功耗状态。 DVDAC_SetValue() 设置DVDAC的输出。 DVDAC_Sleep() 停止并保存用户配置。 DVDAC_WakeUp() 恢复并使能用户配置。 DVDAC_Init() 初始化或恢复默认DVDAC配置 DVDAC_Enable() 使能DVDAC。 DVDAC_SaveConfig() 保存非保留DAC数据寄存器的值。 DVDAC_RestoreConfig() 恢复非保留DAC数据寄存器的值 全局变量 变量 DVDAC_initVar 说明 指示DVDAC是否已经初始化。该变量初始化为0,在第一次调用DVDAC_Start()时设置为1。这 样,第一次调用DVDAC_Start()后,组件不用重新初始化即可重启。 如需重新初始化组件,可在调用DVDAC_Start()或DVDAC_Enable()函数前,先调用 DVDAC_Init()函数。 void DVDAC_Start(void) 说明: 对组件执行所有要求的初始化,并给模块上电。第一次执行子程序时,组件初始化为已配置 的设置。在调用DVDAC_Stop()后重启DVDAC会保留组件参数的当前设置。 参数: 无 返回值: 无 其他影响: 如果已经设置了DVDAC_initVar变量,则该函数仅调用DVDAC_Enable()函数。 页 4/13 文档编号:001-89198 修订版** ® PSoC Creator™组件数据手册 抖动电压 DAC void DVDAC_Stop(void) 说明: 停止组件,并关闭DVDAC中的模拟模块。 参数: 无 返回值: 无 void DVDAC_SetValue(uint16 value) 说明: 设置DVDAC的输出。该函数根据数值和分辨率设置填充SRAM数组。然后,DMA将该数组 传输到内部VDAC。 参数: (uint16) value:最大值取决于所选的分辨率: 0 – 1FE(用于9位分辨率) 0 – 3FC(用于10位分辨率) 0 – 7F8(用于11位分辨率) 0 – FF0(用于12位分辨率) 该值包括两个部分:整数和分数,其中分数部分随着分辨率的位数量的变化而改变。 9位:一个分数位 10位:两个分数位 11位:3个分数位 12位:4个分数位 返回值: 无 void DVDAC_Sleep(void) 说明: 这是让组件准备进入睡眠的首选API。DVDAC_Sleep() API保存当前组件的状态。然后,调 用DVDAC_Stop()函数,并调用DVDAC_SaveConfig()以保存硬件配置。 在调用CyPmSleep()或CyPmHibernate()函数之前,先调用DVDAC_Sleep()函数。有关功耗 管理函数的详细信息,请参考PSoC Creator 《系统参考指南》。 参数: 无 返回值: 无 其他影响: 无 文档编号:001-89198 修订版** 页 5/13 ® PSoC Creator™组件数据手册 抖动电压 DAC void DVDAC_Wakeup(void) 说明: 这是将组件恢复为调用VDAC8_Sleep()时的状态的首选API。DVDAC_Wakeup() 函数将调 用DVDAC_RestoreConfig()函数以恢复配置。如果组件在调用DVDAC_Sleep()函数前已使 能,则DVDAC_Wakeup()函数也会重新使能组件。 参数: 无 返回值: 无 其他影响 调用DVDAC_Wakeup()函数前未调用DVDAC_Sleep()或DVDAC_SaveConfig()函数,可能 会产生意外的行为。 void DVDAC_Init(void) 说明: 根 据 自 定 义 程 序 “Configure” 对 话 框 中 的 设 置 初 始 化 或 恢 复 组 件 。 不 需 要 调 用 DVDAC_Init(),因为DVDAC_Start() API会调用此函数,这是开始执行组件操作的首选方 法。 参数: 无 返回值: 无 void DVDAC_Enable(void) 说明: 激活硬件,并开始执行组件操作。不需要调用DVDAC_Enable(),因为DVDAC_Start() API 会调用此函数,这是开始执行组件操作的首选方法。 参数: 无 返回值: 无 void DVDAC_SaveConfig(void) 说明: 此函数会保存组件配置和非保留的寄存器。此函数由DVDAC_Sleep()函数调用。 参数: 无 返回值: 无 void DVDAC_RestoreConfig(void) 说明: 该函数会恢复组件配置和非保留的寄存器。此函数由DVDAC_Wakeup()函数调用。 参数: 无 返回值: 无 页 6/13 文档编号:001-89198 修订版** ® PSoC Creator™组件数据手册 抖动电压 DAC MISRA 合规性 本节介绍了MISRA-C : 2004兼容性和本组件的偏差情况。定义了下面两种类型的偏差: 项目偏差 — 适用于所有 PSoC Creator 组件的偏差 特定偏差 — 仅适用于该组件的偏差 本节介绍了有关组件特定偏差的信息。《系统参考指南》的“MISRA 合规性”章节中介绍项目偏 差以及有关 MISRA 合规性验证环境的信息。 此 DVDAC 组件没有任何特定偏差。 该组件配有以下嵌入式组件:时钟、VDAC8以及DMA。MISRA合规性与特定偏差的相关信息,请 参见相应组件的数据手册。 固件源代码示例 PSoC Creator 在“Find Example Project”(查找示例项目)对话框中提供了多个包括原理图和 代码示例的示例项目。要查看特定组件实例,请打开“Component Catalog”中的对话框或原理图 中的组件示例。要查看通用示例,请打开‘Start Page’或 File 菜单中的对话框。根据要求,可 以通过使用对话框中的 Filter Options 选项来限定可选的项目列表。 更多有关信息,请参考《PSoC Creator 帮助》部分中主题为“查找示例项目”的内容。 功能说明 该组件的基本工作原理是:如果您快速向 DAC 写入两个或更多的数值,并过滤输出,那么,该输 出值将是所写入 DAC 的数值的平均值。假设周期性地向 DAC 写入数值。 一般情况下,处在 1 伏范围内的 8 位 VDAC 提供 4 mV (即 1.024 V / 256 = 4 mV)的分辨率。如果 您想得到 500 mV,只要将 125 写入 DAC 内即可(125 * 4 mV = 500 mV)。 但是,如果您想获得 501 mV,则需要将其设置为 500 或 504 mV。通过在相应的高速度使输出发 生抖动,则可以求多个输出值的平均,会得到 501 mV 的输出。此情况下,需要周期性地向 VDAC 写入四个数值。 在 1 伏范围内,将 125 写入到 VDAC 内,可以得到 500 mV 的输出。写入 126 将生成 504 mV 的 输出电压。通过对 500、500、500 以及 504 求平均值,可以得到 501。下表介绍了输出如何抖动 的示例。可以在任何两个 8 位步长之间采用此方式,以便提高分辨率。 采样 数组1 数组2 数组3 数组4 1 125 125 125 125 2 125 125 125 126 文档编号:001-89198 修订版** 页 7/13 ® PSoC Creator™组件数据手册 抖动电压 DAC 3 125 125 126 126 4 125 126 126 126 平均值 125.00 125.25 125.50 125.75 平均电压(mV) 500 501 502 503 抖动 VDAC 使用限制 抖动 DAC 不能生成完整的 2bits 唯一输出值。所有最终的 N 代码(其中 N = 2(bits – 8))都生成相同 的输出电压。这是因为抖动操作需要两个相邻的 8 位 DAC 值才能产生一个平均输出信号。 当内部 8 位 DAC 输出为 255 (0xFF)时,没有任何更高的相邻值。当将电压 DAC 配置为 1 伏范围, 并将最高输出值写入 VDAC 内时,输出值将为:1.024 * (255 / 256) = 1.020 V。这是由 8 位 VDAC 可生成的最高电压。 将相同的公式适用于真 10 位 VDAC,将得到稍微高一点的输出值,即 1.024 * (1023 / 1024) = 1.023 V。对于抖动的 VDAC,因为正在使用单一的 8 位 VDAC 模仿一个 10 位 VDAC,所以最大 电压仍然是 8 位 VDAC 生成的电压。这样,超过 8 位 VDAC 数值的任何值均为无效。对于抖动的 10 位 VDAC,最高有效代码是 1020,即(1.024 * (1020 / 1024) = 1.020 V)。 下表显示了每个分辨率的代码限制。 分辨率(位) 有效范围 无效代码 无效范围 9 0 – 510 1 511 10 0 – 1020 3 1021 - 1023 11 0 – 2040 7 2041 - 2047 12 0 - 4080 15 4081 - 4095 其他更加明显的限制是处理抖动时生成的噪声。由于输出值等于两个相邻值的平均值,所以抖动 过程只会生成小幅的噪声。此情况下,1 伏范围的噪声为 4 mV (1.024 / 256);4 伏范围的噪声为 16 mV(4.096 / 256)。实际抖动频率会随着 DAC 分辨率的不同而有所变化。如果 DMA 使用一 个 1 MHz 的抖动时钟,并且将周期数设置为 4(10 位),那么,实际抖动频率大约为 250 kHz (1 MHz / 4)。 电容值计算 通过添加滤波器,可以将抖动噪声降低至可接受的级别。由于该滤波器位于器件外部,因此可以 使用任何有源或无源的滤波器类型,只要能降低抖动输出的噪声即可。 为了使用少数的外部组件,可能只需要一个一阶的无源滤波器。一阶滤波器包括一个电阻和一个 电容。由于已经提供了 DAC 的输出电阻,即 1 伏范围的电阻为 4 kΩ,4 伏范围的电阻为 16 kΩ, 因此将同时免费提供电阻。也就是说,只需要为输出添加一个电容即可。 页 8/13 文档编号:001-89198 修订版** ® PSoC Creator™组件数据手册 抖动电压 DAC 要想计算电容值,首先要确定所需的衰减幅度,然后确定滤波器的截止频率。每当超过 8 位分辨 率的每一位时,大约需要减少输出的 6 dB,以衰减此抖动频率生成的噪声。对于 10 位 DAC,将 需要衰减抖动输出的 12 dB,即(6 db * (10 位– 8 位))。对于 11 位 DAC,衰减值为 18 dB, 并以此类推。 滤波器的截止频率与抖动频率相关联。VDAC8 规格规定 1 伏范围和 4 伏范围的最大时钟频率分别 为 1 MHz 和 256 kHz。不过,需要对该输出值进行 2B-8 分频,其中“B”是分辨率的位数量。例 如,如果想要 1 伏范围内 10 位分辨率的输出,则需要将 1 MHz 采样时钟进行 4(2(10-8))分频, 即 1 MHz / 4 = 250 kHz。 下表介绍了每个分辨率和电压范围的所需衰减和抖动频率。 分辨率 9 10 11 12 位 6 12 18 24 dB 1 伏的抖动频率 500 250 125 62.5 kHz 4 伏的抖动频率 125 62.5 31.3 15.6 kHz 衰减 通过下面的公式,可以计算滤波器的截止频率。 公式 1. 滤波器衰减 F Atten 20 * log dith F c 其中: “Atten”是已给分辨率所需要的衰减量。Fdith 是抖动频率,Fc 是滤波器的截止频率。 Fc 的计算方法: 公式 2. 截止频率 Fc Fdith Atten 10 20 得到截止频率后,可以计算滤波器的电容值。 公式 3. RC 滤波器的截止频率 Fc 1 2RC C 的计算方法: 公式 4. 所需要的电容值 C 1 2RFc 文档编号:001-89198 修订版** 页 9/13 抖动电压 DAC ® PSoC Creator™组件数据手册 稳定时间的计算 需要考虑的最后数值是已给分辨率 DAC 的稳定时间。 公式 5. 设置 RC 滤波器的电压 t VS Vin e RC 其中,Vs 是设置电压,Vin 是 8 位 VDAC 的最小步长。如果 Vin 等于一个单位,则 Vs 将是需要设置 的最小步长的分数,以得到准确的输出值。理想状态下,输出值将处于一半 VDAC 最小步长的范 围内。下面显示了初始 VDAC 的 DAC 步长。 公式 6. 半步长电压 1 Vs 0.5 * B8 2 其中,“B”是所需分辨率的位的数量。使用“0.5”乘数的原因是想要的误差等于步长的一半。 如果将这两个公式组合起来,便得到下面公式: 公式 7. 组合设置公式 0 .5 * 2 t 1 Vin e RC B8 计算时间(稳定时间): 公式 8. 电压的稳定时间 t ln( 2 0.5 )* R *C B8 资源 DVDAC 组件使用以下的器件资源: VIDAC 模块、 DMA 通道、 数字时钟分频器(用于内部时钟选项)。 API 存储器的使用情况 根据编译器、器件、所使用的 API 数量以及组件的配置情况的不同,组件所用的存储器大小也不 一样。下表提供了给定组件配置所有 API 的存储器使用大小。 页 10/13 文档编号:001-89198 修订版** ® PSoC Creator™组件数据手册 抖动电压 DAC 通过使用“Release”模式中的相应编译器,可以进行测量操作。在该模式下,存储器的大小得到 优化。对于特定的设计,分析编译器生成的映射文件后可以确定存储器的使用情况。 PSoC 3(Keil_PK51) 配置 默认值 PSoC 5LP(GCC) 闪存 SRAM 闪存 SRAM 字节 字节 字节 字节 605 12 704 11 直流和交流的电气特性 除非另有说明,这些规范的适用条件是:–40 °C ≤ TA ≤ 85 °C,且 TJ ≤ 100 °C。除非另有说明, 这些规范的适用范围为 1.71 V 到 5.5 V。典型值的适用条件为:TA = 25 °C。 直流电特性 参数 说明 条件 最小值 典型值 最大值 单位 9 – 12 位 1 V范围,9位 – 待定 待定 LSB 1 V范围,10位 – 待定 待定 LSB 1 V范围,11位 – 待定 待定 LSB 1 V范围,12位 – 待定 待定 LSB 4 V范围,9位 – 待定 待定 LSB 4 V范围,10位 – 待定 待定 LSB 4 V范围,11位 – 待定 待定 LSB 4 V范围,12位 – 待定 待定 LSB 1 V范围,9位 – 待定 待定 LSB 1 V范围,10位 – 待定 待定 LSB 1 V范围,11位 – 待定 待定 LSB 1 V范围,12位 – 待定 待定 LSB 4 V范围,9位 – 待定 待定 LSB 4 V范围,10位 – 待定 待定 LSB 4 V范围,11位 – 待定 待定 LSB 4 V范围,12位 – 待定 待定 LSB 分辨率 积分非线性 INL 积分非线性 INL 差分非线性 DNL 差分非线性 DNL 文档编号:001-89198 修订版** 页 11/13 ® PSoC Creator™组件数据手册 抖动电压 DAC 参数 说明 最小值 典型值 最大值 单位 1 V范围 – 4 – k 4 V范围 – 16 – k 1 V范围 – 1.02 – V 4 V范围,VDDA = 5 V – 4.08 1 – V 单调性 – – 是 – 零范围误差 – 待定 1 V范围 – 待定 待定 % 4 V范围 – 待定 待定 % 1 V范围 – – 待定 %FSR/°C 4 V范围 – – 待定 %FSR/°C – – 待定 µA 输出阻抗 条件 ROUT VOUT VOS 输出电压的范围, 最大的代码值 增益误差 Eg 温度系数,增益误差 TC_Eg IDD 工作电流 LSB 交流特性 参数 FDAC TsettleP TsettleN 1 说明 最小值 典型值 最大值 单位 9位(1 V范围) – – 500 ksps 9位(4 V范围) – – 125 ksps 10位(1 V范围) – – 250 ksps 10位(4 V范围) – – 62 ksps 11位(1 V范围) – – 125 ksps 11位(4 V范围) – – 31 ksps 12位(1 V 范围) – – 62 ksps 12位(4 V范围) – – 15 ksps 1 V范围,CLOAD = 15 pF – 待定 µs 4 V范围,CLOAD = 15 pF – 待定 µs 使Vout的变动幅度为0.1% 1 V范围,CLOAD = 15 pF 的建立时间, 4 V范围,CLOAD = 15 pF 步长为75%到25% – 待定 µs – 待定 µs 有效的更新速率 使Vout的变动幅度为0.1% 的建立时间, 步长25%到75% 条件 如果 VDDA < 5V,输出将遵循以下输出电压规范(VDDA – 1 V)。 页 12/13 文档编号:001-89198 修订版** ® PSoC Creator™组件数据手册 参数 Vn1V 抖动电压 DAC 说明 电压噪声 条件 范围 = 1 V,快速模式,Vdda = 5 V,10 kHz 最小值 典型值 最大值 单位 – 待定 – nV/sqrtHz 组件更改 本节列出了各版本的主要组件更改内容。 版本 更改说明 2.0 该组件受赛普拉斯支持的第一版本。 更改原因/影响 ©赛普拉斯半导体公司,2014。此处所包含的信息可能会随时更改,恕不另行通知。除赛普拉斯产品内嵌的电路以外,赛普拉斯半导体公司不对任何其他电路的使用承担任何责任。也不根据专利 或其他权利以明示或暗示的方式授予任何许可。除非与赛普拉斯签订明确的书面协议,否则赛普拉斯产品不保证能够用于或适用于医疗、生命支持、救生、关键控制或安全应用领域。此外,对于 可能发生运转异常和故障并对用户造成严重伤害的生命支持系统,赛普拉斯不授权将其产品用作此类系统的关键器件。若将赛普拉斯产品用于生命支持系统,则表示制造商将承担因此类使用而招 致的所有风险,并确保赛普拉斯免于因此而受到任何指控。 PSoC®是赛普拉斯半导体公司的注册商标,PSoC Creator™和 Programmable System-on-Chip™是赛普拉斯半导体公司的商标。该处引用的所有其他商标或注册商标归其各自所有者所有。 所有源代码(软件和/或固件)均归赛普拉斯半导体公司(赛普拉斯)所有,并受全球专利法规(美国和美国以外的专利法规)、美国版权法以及国际条约规定的保护和约束。赛普拉斯据此向获许 可者授予适用于个人的、非独占性、不可转让的许可,用以复制、使用、修改、创建赛普拉斯源代码的派生作品、编译赛普拉斯源代码和派生作品,并且其目的只能是创建自定义软件和/或固件, 以支持获许可者仅将其获得的产品依照适用协议规定的方式与赛普拉斯集成电路配合使用。除上述指定的用途外,未经赛普拉斯的明确书面许可,不得对此类源代码进行任何复制、修改、转换、 编译或演示。 免责声明:赛普拉斯不针对该材料提供任何类型的明示或暗示保证,包括(但不仅限于)针对特定用途的适销性和适用性的暗示保证。赛普拉斯保留在不另行通知的情况下对此处所述材料进行更 改的权利。赛普拉斯不对此处所述之任何产品或电路的应用或使用承担任何责任。对于合理预计可能发生运转异常和故障,并对用户造成严重伤害的生命支持系统,赛普拉斯不授权将其产品用作 此类系统的关键组件。若将赛普拉斯产品用于生命支持系统,则表示制造商将承担因此类使用而导致的所有风险,并确保赛普拉斯免于因此而受到任何指控。 产品使用可能受适用的赛普拉斯软件许可协议限制。 文档编号:001-89198 修订版** 页 13/13