使用cy7c68013采集板实现低成本高速adc采集 ad9226

高速adc芯片  ad9226,最高时钟可达65Mhz

配合cy7c68013a如何低成本采集

设计考虑

使用,icamera标准固件

接线方式

68013A  926

ifclk             clk

clkout         clk

wr    clk

fd0-11       db0-11

使用68013clkout时钟,编程可以实现12Mhz,24Mhz,48Mhz输出,

因为usb2.0高速带宽限制,最高时钟可以设置为24Mhz,数据带宽48Mhz,已经超额,所以配置24Mhz时钟时,也有局部数据丢失。

通过wr与ifclk同步,数据分频,时钟输出配置为12Mhz,采集效果较好

下一步开始设计转接板

使用嘉立创免费打样

使用cp926高速adc板卡,供电为5v,icamera  cp601d输出电源为3.3v

所以底板设计增加typec供电,为adc板卡供电

icamera cp601d为标准的20p座子,引出fd0-11,ifclk,clkout,wr,pa0等管脚

设计时考虑,单次测试仅针对一路adc,cp926模块为双通道adc模块,此时需要手工拔插座子挪到另外一个位置测试

再看组装效果

整体性还不错

使用icamera标准命令发送修改时钟和位宽如下

0x1a, 0x00, 0x78, // 0x5A // sensor slave id
0x1a, 0x01, 0x00, // pwdn low
0x1a, 0x02, 0x01, // wordwide <1:8 bit, else:16 bit>
0x1a, 0x03, 0x02, // register address length 2byte
0x1a, 0x04, 0x01, // register value length 1byte
//0x1a, 0x05, 0x01 // reset pin(PC2)
0x1a, 0x06, 0x01 // IFCLK polarity

此命令修改时钟为12Mhz。效果一样

然后使用vs2022,c#编程开发采集绘图

 

private void timer1_Tick(object sender, EventArgs e)
{
int readSize = 0;
readSize = FxDriver.Read(buff, 0, buff.Length);

定时器定时读取cy数据

因为bit位关系原因,需要重新调节

g_var.g_wav[i] =
(uint)((buff[i * 2 + 1] >> 7) & 0x01) * 1024 //20 DB1 FD15
+ (uint)((buff[i * 2 + 1] >> 6) & 0x01) * 2048 //19 DB0 FD14
+ (uint)((buff[i * 2 + 1] >> 5) & 0x01) * 256 //18 DB3 FD13
+ (uint)((buff[i * 2 + 1] >> 4) & 0x01) * 512 //17 DB2 FD12

+ (uint)((buff[i * 2 + 0] >> 1) & 0x01) * 128
+ (uint)((buff[i * 2 + 0] >> 0) & 0x01) * 64
+ (uint)((buff[i * 2 + 0] >> 3) & 0x01) * 32
+ (uint)((buff[i * 2 + 0] >> 2) & 0x01) * 16
+ (uint)((buff[i * 2 + 0] >> 5) & 0x01) * 8
+ (uint)((buff[i * 2 + 0] >> 4) & 0x01) * 4
+ (uint)((buff[i * 2 + 0] >> 7) & 0x01) * 2 //FD7 9 DB10
+ (uint)((buff[i * 2 + 0] >> 6) & 0x01) * 1 //FD6 10 DB11
;

//使用标准的图形控件绘图显示

chart1.Series[0].Points.AddXY(i, g_var.g_wav[i]);

可以选择点,或者线,根据喜好看效果

 

posted on 2025-03-05 23:27  层层惊涛  阅读(139)  评论(0)    收藏  举报