TLC549型ADC驱动设计
AI summary
TLC549型ADC是一种模数转换器,能够将模拟信号转换为数字信号。其工作原理包括模拟输入、串行接口和时序控制,设计时需遵循严格的时序参数。设计架构采用线性序列机实现,支持多种数据输出和工作电压。通过ADC数据可计算对应的电压值,示例计算表明在不同输入数据下的输出电压。
Last edited time
Sep 24, 2024 06:47 AM
Last edited by
Tags
Serial Communication
Data Transmission Methods
Digital Signal Conversion
Analog Signal Processing
Serial Data Transfer Techniques
ADC Design Methodologies
一:ADC介绍
- ADC:Analog-to-Digital Converter(模数转换器)。
通常是指一个将模拟信号转换为抗干扰能力更强的数字信号的电子器件。一般的ADC是将一个输入电压信号转换为一个输出的数字信号;由于数字信号本身不具备任何意义,仅仅只代表一个相对大小。所有任何一个ADC都需要一个参考的模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号的大小,而数字量则表示输入信号相对参考信号的大小。
- ADC的分类:
- 并联比较型ADC:采用各量级同时并行比较,各位输出码也是同时并行产生,所以转换速度快。并联比较型ADC的缺点是成本高、功耗大。
- 逐次逼近型ADC:它产生一系列比较电压VR,但它是逐个产生比较电压,逐次与输入电压分别比较,以逐渐逼近的方式进行模数转换的。它比并联比较型ADC的转换速度慢,比双分积型ADC要快得多,属于中速ADC器件。
- 双积分型ADC:它先对输入采样电压和基准电压进行两次积分,获得与采样电压平均值成正比的时间间隔,同时用计数器对标准时钟脉冲计数。它的优点是抗干扰能力强,稳定性好;主要缺点是转换速度低
模数转换器的种类很多,按工作原理的不同,可分成间接ADC和直接ADC。间接ADC是先将输入模拟电压转换成时间或频率,然后再把这些中间量转换成数字量,常用的有双积分型ADC。直接ADC则直接转换成数字量,常用的有并联比较型ADC和逐次逼近型ADC。
- ADC的选型(技术指标)
采样精度 —— 即分辨率,一般有8位、10位、12位、16位等;
转换时间 —— 即每次采样所需的时间,表征 ADC 的转换速度,与 ADC 的时钟频率、采样周期、转换周期有关;
数据输出方式 —— 如并口输出、串口输出;
ADC类型 —— 如上面所提到的,ADC 有多种类型,不同类型的 ADC 有不同的性能极限;
工作电压 —— 需要注意 ADC 的工作电压范围、能否直接测量负电压等;
芯片封装 —— 芯片封装是否符合产品设计要求;
性价比 —— 控制成本。
二:TLC549工作原理
- ZX-2板卡原理图

端口号 | 端口名 | 端口描述 |
1 | REF+ | VREF=2.5V |
2 | ANIN | 模拟量输入:REF-<=ANIN<=REF+,当ANIN>REF+,转换结果为1;当ANIN<REF-,转换结果为0; |
3 | REF- | GND |
4 | GND | GND |
5 | CS(I) | 串行接口片选:低有效 |
6 | DAT(O) | 串行接口数据:MSB~LSB(TLC549在时钟下降沿移出数据) |
7 | CLK(I) | 串行接口时钟:MAX=1.1MHZ |
8 | VCC | VDD5 |
- 操作时序图
- 将CS_N置低,内部电路在CS_N下降沿后,再等待两个内部时钟周期上升沿和一个下降沿;确认这一变化后,最后会自动将先前一次转换结果的最高位(A7)放置在DATA_OUT线上;
- 前4个I/O CLOCK下降沿依次移出第2,3,4,5位数据(A6,A5,A4,A3),片上保持和采样电路会在I/O CLOCK的下降沿开始采样模拟输入;
- 接下来的3个I/O CLOCK下降沿依次移出第6,7,8位数据(A2,A1,A0);
- 最后,片上采样电路会在第8个I/O CLOCK的下降沿结束,保持功能将持续4个内部系统时钟周期,然后进行32个内部系统时钟周期的转换(4+32=36);在第8个I/O CLOCK后,将CS_N拉高,同时I/O CLOCK保持低电平,这种状态需要维持36个内部系统时钟周期,以等待保持和转换的工作完成;如果CS_N为高时出现一次有效的低电平,则将引脚重新初始化,从而脱离转换的过程。

当CS_N为高时,输出数据(DATA_OUT)端处于高阻状态,此时I/O CLOCK不起作用;这种CS_N控制作用允许在同时使用多个TLC549器件时,共用I/O CLOCK以减少多路AD转换器占用的I/O资源。
一次数据转换过程如下步骤:
先将先前一次数据结果转换完成后,后续的数据结果转换重复上述步骤。
- 时序参数表(设计时需要严格遵守)




三:TLC549设计实现
- 设计架构

- 设计实现
I/O CLCOK最大不超过1.1MHZ,规定I/O CLOCK采用1MHZ(T=1000ns)。
Tsu(CS):min=1.4us Tconv:max=17us Twh(CS):min=17us
采用线性序列机实现:
节拍 | LSM_1S:节拍计数 | LSM_2S:节拍上发送动作 | 说明 |
0 | (sys_rst_n==0):cnt=0 | (sys_rst_n==0):ad_io_clock=0,ad_cs_n=1,data=0,flag=0,data_temp=0 | data_temp寄存data_oout线上数据 |
1 | cnt=cnt+1 | ad_cs_n=0 | 拉低cs_n(自行设置:20ns) |
71 | cnt=cnt+1 | ad_io_clock=1,data_temp[7]=ad_data_out | 采样A7数据:MSB |
96 | cnt=cnt+1 | ad_io_clock=0 | |
121 | cnt=cnt+1 | ad_io_clock=1,data_temp[6]=ad_data_out | 采样A6数据 |
146 | cnt=cnt+1 | ad_io_clock=0 | |
171 | cnt=cnt+1 | ad_io_clock=1,data_temp[5]=ad_data_out | 采样A5数据 |
196 | cnt=cnt+1 | ad_io_clock=0 | |
221 | cnt=cnt+1 | ad_io_clock=1,data_temp[4]=ad_data_out | 采样A4数据 |
246 | cnt=cnt+1 | ad_io_clock=0 | |
271 | cnt=cnt+1 | ad_io_clock=1,data_temp[3]=ad_data_out | 采样A3数据 |
296 | cnt=cnt+1 | ad_io_clock=0 | |
321 | cnt=cnt+1 | ad_io_clock=1,data_temp[2]=ad_data_out | 采样A2数据 |
346 | cnt=cnt+1 | ad_io_clock=0 | |
371 | cnt=cnt+1 | ad_io_clock=1,data_temp[1]=ad_data_out | 采样A1数据 |
396 | cnt=cnt+1 | ad_io_clock=0 | |
421 | cnt=cnt+1 | ad_io_clock=1,data_temp[0]=ad_data_out | 采样A0数据:LSB |
446 | cnt=cnt+1 | ad_io_clock=0,data=data_temp,flag=1 | 产生采样8bit数据完成标志(尖峰脉冲) |
447 | cnt=cnt+1 | flag=0,ad_cs_n=1 | CS_N拉高至少17us |
1300(EP) | cnt=cnt+1 |
17us/20ns=17_000 / 20ns = 850(447~1300)

- 仿真测试

四:数字电压表设计(TLC549驱动拓展)

DA芯片驱动中计算对应通道的电压值:
VO(DACA|B|C|D) = VREF * (CODE / 256) * (1 + RNG)
VO = VREF * (data / 256) = (0~2.5V) //VREF=2.5V
VO = VREF * (data / 256) = (0~2.5V) * 1000 = (0~2500mV) //VREF=2.5V
- 假设采样到的AD数据data=8’b1010_1010
VO=2.5*(170 / 256) * 1000mV = 1,660mV=1.66V
- 假设采样到的AD数据data=8’b0110_0110
VO=2.5*(102 / 256) * 1000mV = 996mV=0.996V

Loading...