550 likes | 753 Views
第 14 章 ADC 和 DAC 模块. 何宾 2011.12. 本章内容. 本章主要是介绍 PSoC3 内的 Δ-Σ ADC 模块和 DAC 模 块,这两个模块和前一章所介绍的模拟前端一起构成一个 高可靠的、强大功能的模数和数模混合系统,这两个模块 也是 PSoC3 中最重要的两个功能部件。 通过本章内容的学习,不仅能了解和掌握 ADC 和 DAC 模块的工作原理,还能掌握使用 PSoC3 实现一个模数和数 模混合系统的方法。. Δ-ΣADC 模块. PSoC3 包含一个 Δ-Σ ADC 。这个 ADC 提供了差分
E N D
第14章 ADC和DAC模块 何宾 2011.12
本章内容 本章主要是介绍PSoC3内的Δ-Σ ADC模块和DAC模 块,这两个模块和前一章所介绍的模拟前端一起构成一个 高可靠的、强大功能的模数和数模混合系统,这两个模块 也是PSoC3中最重要的两个功能部件。 通过本章内容的学习,不仅能了解和掌握ADC和DAC 模块的工作原理,还能掌握使用PSoC3实现一个模数和数 模混合系统的方法。
Δ-ΣADC模块 PSoC3包含一个Δ-Σ ADC。这个ADC提供了差分 输入,高分辨率和良好的线性度,该ADC可用于声音信号 处理和测量方面的应用。下表给出了不同ADC分辨率下的 采样速度和SNR值。
Δ-ΣADC模块 图 △-∑的内部功能原理
Δ-ΣADC模块 图 ADC△-∑原理结构
Δ-ΣADC模块 从前面的图可以看出,输入缓冲区(Input Buffer) 连接到内部和外部总线输入复用开关上。来自输入复用 开关上的信号直接或者通过缓冲区传递到Δ-Σ调制器。 Δ-Σ执行真正的模拟-数字的转换。 调制器过采样输入,产生串行的比特流输出。 高速数据流对大多数应用是没有意义的,所以在后 级加入抽取器。 抽取器将高速的串行数据流转换成并行的ADC结 果。抽取器控制分辨率和采样率;输出是最后四个采样 的函数。当输入多路复用开关被切换,输出的前三个采 样就不是有效的,直到开关切换后的第四个采样才是有 效的。
Δ-ΣADC模块 在PSoC中的ADC模块的具体结构包括: • 输入放大器;提供高输入阻抗和用户可选择的增益。 • 3阶Δ-Σ调制器 • 抽取器抽取器包含一个4阶的CIC抽取滤波器和后端处理单元。 后端处理单元执行可选的增益,偏置和采样滤波器功 能。
Δ-ΣADC模块--操作模式 设置者可以配置ADC,使其工作在下面的四种模式 之一: • 单采样; • 快速滤波器; • 连续/快速平均。 通过往控制寄存器写启动位或者发送开始转换信号 (Start Of Conversion,SOC),来启动ADC转换器。 当转换结束后,设置一个状态位,并且转换结束信 号(End of Conversion, EOC)为高电平,这个信号一直 保持到CPU或DMA读取转换值为止。
Δ-ΣADC模块--操作模式 1.单采样 在触发器作用下,执行单次采样。在这种模式下, ADC在待机模式下等待SOC信号有效。当SOC有效, ADC执行一次采样转换,并捕获结果。为了检测EOC, 系统可以轮询一个控制寄存器或者配置外部的EOC信号 来产生一个中断或者调用DMA请求。 当传输完成后,ADC进入待机状态。直到下一个 SOC事件。
Δ-ΣADC模块--操作模式 2.连续采样 在连续模式下,通道复位,然后连续运行直到停 止。当输入信号不需要切换,并且需要多个采样值时, 就可以采用这种模式。
Δ-ΣADC模块--操作模式 3.快速滤波器 快速滤波器模式连续的捕获数据,在每个采样间,通 道复位。一个采样结束,另一个采样立即开始,使用轮 询,中断或DMA来传输结果。当输入在多个通道间进行 切换,并且在每个采样间需要一个滤波器进行复位时,就 可以采用这种模式。
Δ-ΣADC模块--操作模式 4.快速FIR(平均) 这种模式和快速滤波器类似,但在两个转换间不复位 调制器。当要求抽取率因子大于128时,可以使用。这种 模式使用后续的处理器sinc1滤波器执行额外的抽取,以得 到大于16位的分辨率。
Δ-ΣADC模块--操作模式 SOC信号用于启动ADC。一个数字时钟或者UDB的 输出能用于驱动这个输入信号。此外,采样周期必须大 于转换周期。在系统中,如果需要ADC和其他硬件同 步,则需要使用SOC信号。这个信号是可选的,如果 ADC运行在连续模式下,则不需要这个信号。 当每次转换完后,EOC信号为高。这个信号可用于 触发一个中断或者DMA请求。
Δ-ΣADC模块--操作模式 Δ-Σ ADC的分辨率限制在8-20位。分辨率越高,采 样率越低。当修改分辨率时,时钟会相应的改变来保证一 个合理的采样率。 Δ-Σ ADC有固有的不稳定性,导致其在操作范围的 上限和下限会产生非线性。为了避免产生这种现象,输入 在调制器的前端被衰减10%。后端处理器使用1.11倍的增 益来补偿这种衰减。最终的结果比要求的范围扩大了 10%。比如: 如果选择输入范围±1.024V,实际的输入范围是 ±1.126V。有用的输入保持在±1.024V,但是除非输入超 过±1.126V ,否则ADC不会饱和。
Δ-ΣADC模块--操作模式 从ADC的数字数出也会超过范围10%,如果ADC配置 为10位操作,通常一个10位的差分的ADC输出范围-512到 511,对应-1.024到+1.022。 由于这个额外的10%的范围,数字输出直到计数 ±563前不会饱和(而不是-512到511)。
Δ-ΣADC模块--操作模式 除非分辨率设为8位或16位时,一般不需要关心的问 题。当分辨率设置为8位时,必须要注意不能使计数值从 其最大的正值/负值卷回到所对应的一个负值或者负值。 防止产生这个问题使用API函数,使得返回一个比设定分 辨率大的一个值。比如: 1)分辨率设为16位,其最大的正值和负值会超过 32767~-32768的范围,所以使用ADC_GetResult32()函数, 而不是使用ADC_GetResult16()函数。 2)对分辨率为8时,其最大的正值和负值会超过127~- 128,所以使用ADC_GetResult16()函数。
数/模转换器DAC模块 • PSoC提供了4个数-模转换器DAC。每个DAC为8位, 能配置成电压或电流输出。DAC支持Capsense,电源管理 和波形生成等。下图给出了DAC的模块图。 图 DAC模块内部结构
数/模转换器DAC模块 • 其特点主要包括: • 可调255级步长的电压或电流输出; • 可编程的台阶大小(取决于范围); • 8位标定用于校正25%的增益误差; • 电流输出模式下,源(source)和吸收(sink)选项; • 电流模式下,8Msps的转换率;电压模式下,1Mbps的转换率。 • 单调性
数/模转换器DAC模块 • 下表给出了DAC寄存器组 。 表 DAC寄存器组
数/模转换器DAC模块 • 通过设置寄存器DACx_CR0[4],使DAC工作在电流 模式下,输出电流范围为0-32uA,0-256uA和0-2.048mA。 IDAC能通过配置寄存器DACx_CR1[2],将转换器配 置为源电流(即从输出端向外电路流出的负载电流)和 吸收电流(外电路流入输出端的负载电流)模式。 此外,也可以使用UDB输入来控制源和吸收模式。 通过使用DACx_CR1[3]位来使能使用UDB输入。
数/模转换器DAC模块 • 通过设置寄存器DACx_CR0[4],使DAC工作在电 压模式下,DAC输出电流通过电阻连接,输出电压的 范围通过设置寄存器DACx_CR0[3:2],将其电压输出范 围设置为0-1.024V或者0-4.096V。 在电压模式下,任何连接到DAC输出端的负载应 该是纯容性的(VDAC的输出不被缓冲)。
数/模转换器DAC模块 • 在电压模式下,转换率最高为1Mbps。此外,在 4V模式下比1V模式转换速度要慢,这是由于到Vssa的电 阻负载比1V的负载大4倍。在4V模式下,最高转换速度 为250kbps。 下图给出了DAC的输出选项,通过两个独立的复用 开关得到。这些复用开关通过DAC_SWx寄存器来控 制。
图 DAC互联结构 数/模转换器DAC模块
数/模转换器DAC模块 • DAC中可用8个标定位来消除DAC的增益误差。 cal[7:0]的默认输出是[10000000]。比默认值低将降低增益; 反之增加。使用DACx_TR寄存器完成标定,标定的最小 分辨率是 LSB的0.5,即表示有可以通过标定来修正25%的 增益误差。 采样标定过程如下: • 1)固定输入码=255,Cal码=128,捕获DAC的输出(dac_vout/dac_iout); • 2)确定LSB的增益误差; • 3)使用正确的标定码,捕获DAC的输出(dac_vout/dac_iout)。
数/模转换器DAC模块 • 通过将两个电流DAC的输出求和,可以实现更高分 辨率的电流输出,如图所示,每一个有不同的输入部 分。 图 高分辨率DAC结构
图使用两个8位DAC实现12位DAC的例子 数/模转换器DAC模块 • 如下图所示,可以使用两个8位的DAC实现12位的 DAC分辨率。 • 1)一个DAC范围是0-2.048mA,第二个范围0-32uA。 • 2)最低范围DAC的中间4位被输入作为较低4位。
LCD显示ADC测量值的实现 该设计实现使用Δ-ΣADC测量板子上电位器的电 压,并使用PSoC开发板上的字符LCD显示结果。 ADC使用内部的3MHz时钟驱动,采样率为 10,000SPS。将电位器的电压连接到ADC的输入。程序读 出ADC的结果,并在LCD上显示出来。 该工程使用如下元件: Delta Sigma ADC (Component Catalog->Analog->ADC->Delta Sigma ADC) Character LCD (Component Catalog->Display->Character LCD) Analog Port (Component Catalog->System->Analog Pin)
LCD显示ADC测量值的实现--创建和配置工程 1.打开软件PSoC Creator,在软件的Start Page界 面下,点击Create New Project…创建一个新的工程。 2.在New Project窗口,根据目标器件PSoC3/5, 选择Empty PSoC3/5 Design模板,并将工程命名 Ex2_ADC_to_LCD。选择工程保存路径,点击“OK”按 钮;
LCD显示ADC测量值的实现--创建和配置工程(添加并配置Δ-ΣADC)LCD显示ADC测量值的实现--创建和配置工程(添加并配置Δ-ΣADC) 下面给出添加并配置Δ-ΣADC的步骤,主要步骤 包括: 1.拖动Delta Sigma ADC器件并将其放置于原理图 内(Component Catalog->Analog->ADC ->Delta Sigma ADC)。 2.双击原理图内的ADC_DelSig_1器件打开配置窗 口。图14.7 ADC配置界面 3.如图14.7,按如下方式,在Configure标签内进行 配置:
LCD显示ADC测量值的实现--创建和配置工程(添加并配置Δ-ΣADC)LCD显示ADC测量值的实现--创建和配置工程(添加并配置Δ-ΣADC) 图14.7 ADC配置界面
LCD显示ADC测量值的实现--创建和配置工程(添加并配置Δ-ΣADC)LCD显示ADC测量值的实现--创建和配置工程(添加并配置Δ-ΣADC) Name: ADC_DelSig_1 Conversion Mode: 2-Continuous Resolution: 8 Conversion Rate: 10000 Input Mode:Single Input Range: Vssa to Vdda Input Buffer Gain: 1 Buffer Mode:Rail to Rail。
LCD显示ADC测量值的实现--创建和配置工程(添加并配置Δ-ΣADC)LCD显示ADC测量值的实现--创建和配置工程(添加并配置Δ-ΣADC) 在Common标签下,按下面参数设置: • 不选中Hardware SOC[Start of Conversion](表示使用软件来启动ADC工作) • Clock Source:Internal; • 不选中Enable_Vref_Vssa; 4.点击“OK”关闭ADC属性设置界面。
LCD显示ADC测量值的实现--创建和配置工程(添加并配置模拟端口)LCD显示ADC测量值的实现--创建和配置工程(添加并配置模拟端口) 下面给出添加并配置模拟端口的步骤,主要步骤 包括: 1.拖动模拟端口器件并将其放置于原理图内 (Component Catalog->Ports and Pins->Analog Pin)。 2.双击原理图内的Pin_1元件打开配置窗口; 3.如图14.8,在Type标签下按如下方式进行配 置:
LCD显示ADC测量值的实现--创建和配置工程(添加并配置模拟端口)LCD显示ADC测量值的实现--创建和配置工程(添加并配置模拟端口) 图14.8 Type标签下的配置界面
LCD显示ADC测量值的实现--创建和配置工程(添加并配置模拟端口)LCD显示ADC测量值的实现--创建和配置工程(添加并配置模拟端口) Name: POT。 只选择Analog。 其余选项均为默认值。 如图14.9,在General标签下,进行如下设置 Drive Mode: High Impedance Analog。 其余选项均为默认值
LCD显示ADC测量值的实现--创建和配置工程(添加并配置模拟端口)LCD显示ADC测量值的实现--创建和配置工程(添加并配置模拟端口) 图14.9 General标签配置界面
LCD显示ADC测量值的实现--创建和配置工程(添加并配置LCD)LCD显示ADC测量值的实现--创建和配置工程(添加并配置LCD) 下面给出添加并配置LCD的步骤,主要步骤包括: 1.拖动字符LCD器件并将其放置于原理图内 (Component Catalog->Display->Character LCD)。 2.双击原理图内的LCD_Char_1器件打开配置窗口。 3.如图14.10所示,在General标签下按如下方式进行 配置: Name: LCD_Char_1 LCD Custom Character Set: None Include ASCII to Number Conversion Routines:选中 其余选项均为默认值
LCD显示ADC测量值的实现--创建和配置工程(添加并配置LCD)LCD显示ADC测量值的实现--创建和配置工程(添加并配置LCD) 图14.10 LCD配置界面
LCD显示ADC测量值的实现--创建和配置工程(连接元器件)LCD显示ADC测量值的实现--创建和配置工程(连接元器件) 如图14.10所示,为连接元器件完成后的原理图。 图14.10 连接完成后的原理图
LCD显示ADC测量值的实现--创建和配置工程( 配置引脚) 下面给出配置引脚的步骤,主要步骤包括: 1.在Workspace Explorer窗口双击文件 Ex2_ADC_to_LCD.cydwr。 2.点击Pins选项。 3.如图14.12所示,为LCD_Char_1选择管脚P2[6:0]。 4.为POT管脚选择P0[7]。 图14.12 引脚分配界面
LCD显示ADC测量值的实现--创建和配置工程(创建函数文件)LCD显示ADC测量值的实现--创建和配置工程(创建函数文件) 详见书上的程序
LCD显示ADC测量值的实现--编程及调试 下面给出对Cypress提供的CY8CKIT-030开发套件进行 编程的步骤,其步骤主要包含: 1.断开开发板的电源。 2.将P0[7]与VR连接 3.对开发板重新供电。 4.按照前面一个工程所述方法进行编程。 5.编完程序之后,通过reset键重启开发板,调整可变 电位器的旋钮来改变电压的值,观察LCD上所显示相对的 数字值。 6.保存并关闭工程。
IDAC值显示的实现 该设计给出了IDAC8电流源工作模式,其输出范围在 255uA。在字符型LCD上显示电流值,通过外部设备检测 IDAC的输出。
IDAC值显示的实现--创建和配置工程 1.在计算机上的桌面上,选择开始->所有程序- >Cypress->PSoC Creator 2.0->PsoC Creator 2.0。打开 PSoC Creator软件; 2.在PSoC Creator 2.0软件的主界面下,选择File- >New->Project...; 3.在New Project窗口,选择Empty PSoC3 Design模 板,并将工程命命名为IDAC。选择工程保存路径,点 击“OK”按钮;
创建和配置工程--添加并配置IDAC 下面给出添加并配置DAC的步骤,主要步骤包括: 1.拖动电流DAC器件并将其放置于原理图内 (Component Catalog->Analog->DAC->Current DAC)。 2.双击原理图内的IDAC8_1器件打开配置窗口。图 14.13 IDAC配置界面 3.如图14.13所示,在Configure标签内按如下方式 进行配置:
图14.13 IDAC配置界面 创建和配置工程--添加并配置IDAC
创建和配置工程--添加并配置IDAC • Name: IDAC8_1 • Polarity: Positive(Source)(极性) • Data Source: CPU or DMA(Data Bus)(数据源) • Range:0-255uA(电流源范围) • Speed:High Speed(电流源的工作速度) • Value参数设置: • %Range:100 • uA:255 • 8 bit Hex:FF • Strobe Mode:Register(触发模式) • 其余选项均为默认值
创建和配置工程--添加并配置字符LCD 下面给出添加并配置LCD的步骤,主要步骤包括: 1.拖动字符LCD并将其放置于原理图内(Component Catalog->Display->Character LCD)。 2.双击原理图内的LCD_Char_1器件打开配置窗口。 3.如图14.14所示,在General标签内按如下方式进行 配置: • Name:LCD_Char_1; • LCD Custom Character Set:None • 选中Include ASCII to Number
图14.14 字符LCD配置界面 创建和配置工程--添加并配置字符LCD
创建和配置工程--添加并配置模拟引脚 下面给出添加并配置模拟引脚的步骤,主要步骤包 括: 1.拖动模拟端口器件并将其放置于原理图内 (Component Catalog->Ports and Pins->Analog Pin)。 2.双击原理图内的Pin_1器件打开配置窗口。 3.如图14.15所示,按如下方式进行配置: Type标签下,参数如下配置: • Name: Pin_1 • Number of Pins: 1 • Analog:只选中该选项 • 其余选项均为默认值