转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992492.html
AD7794具有24个引脚,各个引脚的功能参考芯片手册。片内寄存器,ADC通过片内寄存器进行控制和配置,“置1”表示逻辑1状态,“置0”表示逻辑0状态,除非另有说明。
AD7794有以下9种寄存器,接下来进行逐一介绍:
(1)通信寄存器
通信寄存器是8位只写寄存器,与ADC器件的所有通信均必须以对通信寄存器的写操作开始,写入通信寄存器的数据决定下一个操作是读操作还是写操作。通信寄存器各位如下:
CR7 | CR6 | CR5 | CR4 | CR3 | CR2 | CR1 | CR0 |
WEN(0) | R/W(0) | RS2(0) | RS1(0) | RS0(0) | CREAD(0) | 0(0) | 0(0) |
其中CR5,CR4,CR3对应的分别为RS2,RS1,RS0,这几位决定着下一个操作的是哪个寄存器,RS2,RS1,RS0对应的寄存器如下表所示:
寄存器选择 | RS2 | RS1 | RS0 |
写操作的时候,通信寄存器 | 0 | 0 | 0 |
读操作的时候,状态寄存器 | 0 | 0 | 0 |
模式寄存器 | 0 | 0 | 1 |
配置寄存器 | 0 | 1 | 0 |
数据寄存器 | 0 | 1 | 1 |
ID寄存器 | 1 | 0 | 0 |
IO寄存器 | 1 | 0 | 1 |
失调寄存器 | 1 | 1 | 0 |
满量寄存器 | 1 | 1 | 1 |
当接口时序迷失时,执行一个占用至少32个串行时钟周期的写操作,并使DIN处于高店铺状态,可以复位整个器件。
a.使能连续读取模式,必须将指令0101,1100写入通信寄存器
b.退出连续读取模式,将指令0101,1000写入通信寄存器
(2)状态寄存器,状态寄存器是一个8位只读寄存器
SR7 | SR6 | SR5 | SR4 | SR3 | SR2 | SR1 | SR0 |
RDY(1) | ERR(0) | NOXREF(0) | 0(0) | 0/1 | CH2(0) | CH1(0) | CH0(0) |
SR2,SR1,SR0对应的是CH2,CH1,CH0,表示ADC正在转换哪个通道
读取状态寄存器过程:
a.将指令0100,0100写入通信寄存器
b.从状态寄存器中读取数据
(3)模式寄存器,模式寄存器是一个16位的读写寄存器,用于选择工作模式、更新速率和时钟源
MR15 | MR14 | MR13 | MR12 | MR11 | MR10 | MR9 | MR8 | MR7 | MR6 | MR5 | MR4 | MR3 | MR2 | MR1 | MR0 |
MD2(0) | MD1(0) | MD0(0) | PSW(0) | 0(0) | 0(0) | AMP-CM(0) | 0(0) | CLK1(0) | CLK0(0) | 0(0) | CHOP-DIS(0) | FS3(1) | FS2(0) | FS1(1) | FS0(0) |
工作模式由MR15,MR14,MR13(MD2,MD1,MD0)决定,如下表所示:
MD2 | MD1 | MD0 | 工作模式 |
0 | 0 | 0 | 连续转换模式 |
0 | 0 | 1 | 单次转换模式 |
0 | 1 | 0 | 空闲模式 |
0 | 1 | 1 | 省电模式 |
1 | 0 | 0 | 内部零电平校准 |
1 | 0 | 1 | 内部满量程校准 |
1 | 1 | 0 | 系统零电平校准 |
1 | 1 | 1 | 系统满量程校准 |
更新速率由MR3,MR2,MR1,MR0(FS3,FS2,FS1,FS0)决定,如下表所示:
FS3 | FS2 | FS1 | FS0 | 速率 |
0 | 0 | 0 | 0 | x |
0 | 0 | 0 | 1 | 470 |
0 | 0 | 1 | 0 | 242 |
0 | 0 | 1 | 1 | 123 |
0 | 1 | 0 | 0 | 62 |
0 | 1 | 0 | 1 | 50 |
0 | 1 | 1 | 0 | 39 |
0 | 1 | 1 | 1 | 33.2 |
1 | 0 | 0 | 0 | 19.6 |
1 | 0 | 0 | 1 | 16.7 |
1 | 0 | 1 | 0 | 16.7 |
1 | 0 | 1 | 1 | 12.5 |
1 | 1 | 0 | 0 | 10 |
1 | 1 | 0 | 1 | 8.33 |
1 | 1 | 1 | 0 | 6.25 |
1 | 1 | 1 | 1 | 4.17 |
设置模式寄存器的过程:
a.将指令0000,1000写入通信寄存器
b.将指令0000,0000,0000,1010写入模式寄存器
(4)配置寄存器,配置寄存器是一个16位读写寄存器,用来配置单极性或双极性模式,使能或禁用缓冲器,使能或禁用熔断电流,选择增益,以及选择模拟输入通道。
CON15 | CON14 | CON13 | CON12 | CON11 | CON10 | CON9 | CON8 | CON7 | CON6 | CON5 | CON4 | CON3 | CON2 | CON1 | CON0 |
VBIAS1(0) | VBIAS0(0) | BO(0) | U/B(0) | BOOST(0) | G2(1) | G1(1) | G0(1) | REFSEL1(0) | REFSEL0(0) | REF_DEF(0) | BUF(1) | CH3(0) | CH2(0) | CH1(0) | CH0(0) |
通道选择有CON3,CON2,CON1,CON0(CH3,CH2,CH1,CH0)决定,如下表所示:
CH3 | CH2 | CH1 | CH0 | 通道 |
0 | 0 | 0 | 0 | AIN1(+)/AIN1(-) |
0 | 0 | 0 | 1 | AIN2(+)/AIN2(-) |
0 | 0 | 1 | 0 | AIN3(+)/AIN3(-) |
0 | 0 | 1 | 1 | AIN4(+)/AIN4(-) |
0 | 1 | 0 | 0 | AIN5(+)/AIN5(-) |
0 | 1 | 0 | 1 | AIN6(+)/AIN6(-) |
0 | 1 | 1 | 0 | 温度传感器 |
0 | 1 | 1 | 1 | AVdd监控器 |
1 | 0 | 0 | 0 | AIN1(-)/AIN1(-) |
1 | 0 | 0 | 1 | 保留 |
1 | 0 | 1 | 0 | 保留 |
1 | 0 | 1 | 1 | 保留 |
1 | 1 | 0 | 0 | 保留 |
1 | 1 | 0 | 1 | 保留 |
1 | 1 | 1 | 0 | 保留 |
1 | 1 | 1 | 1 | 保留 |
操作配置寄存器的过程:
a.将指令0001,0000写入通信寄存器
b.将指令0000,0100,0000,0000写入配置寄存器
(5)数据寄存器,数据寄存器是ADC转换的结果,是一个只读寄存器。
(6)IO寄存器,IO寄存器是一个8位读写寄存器
理解了上面的这些寄存器,那就可以进行编程操作AD7794的采样。下一篇将介绍S3C6410操作AD7794
转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992492.html