购买到的AD7606八通道AD转换模块
可以用于各种实验。本文就该模块的基本性能进行测试。
相应的资料可以在AD7606百度网盘
下载,提取文件密码:6f5g.
https://pan.baidu.com/s/1i4HIJvn 密码: 6f5g
原来模块是32芯的外部接口,使用10芯电缆制作串行的对外接口。
引线管脚定义:
管脚 | 定义 |
---|---|
1 | GND |
2 | +5V |
3 | RANGE |
4 | CA-CB |
5 | RD-CLK |
6 | RST |
7 | BUSY |
8 | CS |
9 | D7-DOUTA |
10 | D8-DOUTB |
OS012确定了AD7606数字滤波器的截止频率。实验中,在电路模块后面使用锡桥将OS012焊接在一起,然后通过短路子与GND,+5V选择连接。
AD7606数据接口是依靠管脚 _PAR/SER/BYTE来选择的。当管脚为高电平,输出为串行接口;如果是低电平,输出为并行接口。
在模块中,通过R1,R2来确定_PAR管脚的电平的高低。现在配置的是高电平,模块为串行输出接口。
模块中,CA,CB已经使用锡桥在背面焊接在一起了。因此在控制中只需要一个信号线便可以启动所有的八个通道的采样转换了。
电路板采用了在博文“23LC1024四线访问数据
”中的MCU板,其中集成了23LC1024串口RAM作为数据缓存,这样可以保证采集数据的速率和时间均匀采样。
该电路模块留有10pin的接口用于控制AD7606模块,接口的定义分别为:
管脚 | 符号 | 功能定义 |
---|---|---|
1 | GND | 电源地 |
2 | +5V | 电源 |
3 | AD_CLK | SPI的CLK, P3,2 |
4 | AD_MISO | SPIMISO, P3.3 |
5 | AD_MOSI | SPIMOSI, P3.4 |
6 | AD_SS | SPI_SS, P3.5 |
7 | ADCP1 | AD控制线1, P3.6 |
8 | ADCP2 | AD控制线2, P3.7 |
9 | ADCP3 | AD控制线3, P1.6 |
10 | ADCP4 | AD控制线4, P1.7 |
按照以下规格,通过面包板搭建实验电路。实际上就是按照顺序将MCU的PIN1,8连接到AD7606模块引脚的3-10。
序号 | MCU引线 | AD7606 |
---|---|---|
1 | ADCP4, P1.7 | D8_DOUTB |
2 | ADCP3, P1.6 | D7_DOUTA |
3 | ADCP2,P3.7 | CS |
4 | ADCP1,P3.6 | BUSY |
5 | AD_SS,P3.5 | RST |
6 | AD_MOSI, P3.4 | RD-CLK |
7 | AD_MISO,P3.3 | CA-CB |
8 | AD_CLK,P3.2 | RANGE |
CACB脉冲C宏定义:
#define AD7606_STARTC (OFF(AD7606_CACB), ON(AD7606_CACB))
根据 T B U S Y T_{BUSY} TBUSY的大小,可以看到,最快的转换速率为: 1 / T B U S Y = 1 / 3.93 × 1 0 − 6 = 250 k H z 1/T_{BUSY} = 1/3.93 \times 10^{ - 6} = 250kHz 1/TBUSY=1/3.93×10−6=250kHz
设计一个函数用于转换并等待BUSY信号完成转换:
//------------------------------------------------------------------------------
unsigned int AD7606Convert(void) {
unsigned int i;
AD7606_STARTC;
for(i = 0; i < 0x100; i ++) {
if(VAL(AD7606_BUSY) == 0)
break;
}
return i;
}
使用AD7606_CLK作为外部时间指示,测量AD7606Convert()函数执行时间为: T C O N V = 4.17 μ s T_{CONV} = 4.17\mu s TCONV=4.17μs。
AD7606的串行数据读取时序图为:
读取相应的子程序:
void AD7606ReadData(int * pData, unsigned char ucNumber) {
unsigned int nA, nB, nMask;
unsigned char i, j;
OFF(AD7606_CS);
for(j = 0; j < ucNumber; j ++) {
nMask = 0x8000;
nA = nB = 0;
for(i = 0; i < 16; i ++) {
ON(AD7606_CLK);
if(VAL(AD7606_DOUTA))
nA |= nMask;
if(VAL(AD7606_DOUTB))
nB |= nMask;
OFF(AD7606_CLK);
nMask >>= 1;
}
*(pData ++) = nA;
*(pData ++) = nB;
}
ON(AD7606_CS);
}
读取时序与时间:
完成8个数据的读取时间为: T 8 I N T = 44.1 μ s T_{8INT} = 44.1\mu s T8INT=44.1μs
分别测试读取1~4组数据所需要的时间:
读取组数 | 消耗时间(us) |
---|---|
1 | 11.6 |
2 | 22.9 |
3 | 34.4 |
4 | 45.5 |
如果使用单路数据读取,则读取四个数据的时间为: T 4 = 35.5 μ s T_4 = 35.5\mu s T4=35.5μs,比使用双路同时读取两个通道的四个数据少了9us。
实测读取一个数据的时间为 9 μ s 9\mu s 9μs。
读取单个(DOUTA, DOUTB)的子程序为:
void AD7606ReadDataA(int * pData, unsigned char ucNumber) {
unsigned int nA, nMask;
unsigned char i, j;
OFF(AD7606_CS);
for(j = 0; j < ucNumber; j ++) {
nMask = 0x8000;
nA = 0;
for(i = 0; i < 16; i ++) {
ON(AD7606_CLK);
if(VAL(AD7606_DOUTA))
nA |= nMask;
OFF(AD7606_CLK);
nMask >>= 1;
}
*(pData ++) = nA;
}
ON(AD7606_CS);
}
测量在AD端口不同的电压,所ADC转换后的数据。下面是给出的采集数据以及相应的数据波形。
volt=[-4.94,-4.74,-4.53,-4.33,-4.13,-3.93,-3.72,-3.52,-3.32,-3.12,-2.91,-2.71,-2.51,-2.31,-2.10,-1.90,-1.70,-1.50,-1.29,-1.09,-0.89,-0.69,-0.48,-0.28,-0.08,0.07,0.31,0.51,0.72,0.92,1.13,1.33,1.53,1.74,1.94,2.15,2.35,2.55,2.76,2.96,3.16,3.37,3.57,3.77,3.98,4.18,4.39,4.59,4.79,5.00]
data=[-16555.00,-15704.00,-15248.00,-14389.00,-13837.00,-13158.00,-12423.00,-11791.00,-11115.00,-10450.00,-9876.00,-9092.00,-8488.00,-7845.00,-7129.00,-6519.00,-5816.00,-5136.00,-4479.00,-3840.00,-3180.00,-2493.00,-1841.00,-1178.00,-526.00,87.00,756.00,1427.00,2100.00,2750.00,3447.00,4083.00,4748.00,5403.00,6122.00,6742.00,7393.00,8037.00,8798.00,9424.00,10185.00,10817.00,11390.00,12081.00,12734.00,13414.00,14187.00,14862.00,15410.00,16005.00]
前面的实验设置RANGE=1, 这样测量电压范围是 ± 10 V \pm 10V ±10V。下面将RANGE设置为低电平,此时采集电压的范围是 ± 5 V \pm 5V ±5V。重新采集前面的电压,得到如下的测量数据和相关的曲线。
volt=[-4.94,-4.74,-4.53,-4.33,-4.13,-3.93,-3.72,-3.52,-3.32,-3.12,-2.91,-2.71,-2.51,-2.31,-2.10,-1.90,-1.70,-1.50,-1.29,-1.09,-0.89,-0.69,-0.48,-0.28,-0.08,0.07,0.31,0.51,0.72,0.92,1.13,1.33,1.53,1.74,1.94,2.15,2.35,2.55,2.76,2.96,3.16,3.37,3.57,3.77,3.98,4.18,4.39,4.59,4.79,5.00]
data=[-16555.00,-15704.00,-15248.00,-14389.00,-13837.00,-13158.00,-12423.00,-11791.00,-11115.00,-10450.00,-9876.00,-9092.00,-8488.00,-7845.00,-7129.00,-6519.00,-5816.00,-5136.00,-4479.00,-3840.00,-3180.00,-2493.00,-1841.00,-1178.00,-526.00,87.00,756.00,1427.00,2100.00,2750.00,3447.00,4083.00,4748.00,5403.00,6122.00,6742.00,7393.00,8037.00,8798.00,9424.00,10185.00,10817.00,11390.00,12081.00,12734.00,13414.00,14187.00,14862.00,15410.00,16005.00]
电路板设计工程文件:AD\Test\2020\TestAD7606STC\TestAD7606STC8G.SchDoc ↩︎
C51工程文件:C51\STC\Test\2020\testAD76068G1K\TestAD76068G.uvproj ↩︎