原创 【博客大赛】【原创】示波器显示时钟(二)

2012-3-7 11:23 1246 9 12 分类: 测试测量

 

2011-9-21

补充

申请到了max5513 SPI的双通道 8 bit DAC,可以设置成同时更新输出,

SPI可以时钟可以到16MHz,本以为能够显示完整的表盘等等而不闪烁的,但MSM7227使用的是GPIO模拟SPI,clk周期3uS(对应时钟只有333kHz), 根据规格书,显示圆时,显示一个点至少需要48个CLK,使用的圆代码为

for(i=0;i<255;i++){

max5513_serial_write(0x1000, SineTbl);

max5513_serial_write(0x2000, CosTbl);

max5513_serial_write(0x8000, 0);

}

显示圆需要的时间为:48*256*3uS=36.864mS,闪烁是肯定的了

下图为硬件连接,下面的是ad9934,上面的是max5513

 

图片1.jpg

下图为max5513_serial_write(0xe000, 0x55); //shutdown

 

图片2.jpg

关键代码如下

// setting=c3..c0 xxxxxxxx s3..s0 , val=d7..d0,

// tx_byte=c3..c0 d7..d0 s3..s0

// setting=0x1xx0 val=DATA, load DATA to outA register but not update output

// setting=0x2xx0 val=DATA, load DATA to outB register but not update output

// setting=0x8xx0 val=0   , update outputA and outputB

// setting=0xexx0 val=0   , shutdown

static int max5513_serial_write(uint16_t setting, uint8_t val)

{

unsigned char i = 0;

uint16_t byte_mask = 0x8000;

uint16_t tx_byte;

tx_byte=(((uint16_t)val)<<4)|(setting&0xf00f);

 

gpio_set_value(SPI_CLK, 1);

gpio_set_value(SPI_CS,1);

gpio_set_value(SPI_CS,0);

 

for(i = 0; i < 16; i++){

    gpio_set_value(SPI_CLK, 0); 

         if(tx_byte & byte_mask){

         gpio_set_value(SPI_SDO, 1);   

         }

         else{

         gpio_set_value(SPI_SDO, 0);

         }

gpio_set_value(SPI_CLK, 1);

         tx_byte = tx_byte << 1;

}

gpio_set_value(SPI_CS,1);

    return 0;

}

 

小结:示波器在调试SPI,I2C,等接口器件的时候比较用。

 

2011-9-28

使用ADI的AD5332, 并行接口,8bit双路输出,可以同时更新输出

根据规格书第15页表格,选用红色标记框内设置

CLR# ="1",CS# ="0"

 

图片3.jpg

关键代码如下:

//ref to spec page 15 ,AorB=0 DAC_A input,otherwise for DAC_B input

//use async mode , CS_N=0,CLR_N=1,PD_N=1 allways

 

static int ad5332_write_reg(uint8_t AorB, uint8_t val)

{

int i=0;

uint8_t tmp;

gpio_set_value(LDAC_N,1); //begin to write data

gpio_set_value(DAC_WR,0);

gpio_set_value(AB_SEL,AorB); //select chanel

 

for(i=4;i<12;i++){

tmp=val;

if((tmp&0x01)==0x01){

gpio_set_value(i,1);

// printk(KERN_ERR DRIVER_NAME"gpio_%d=1\n",i);

}

else{

gpio_set_value(i,0);

// printk(KERN_ERR DRIVER_NAME"gpio_%d=0\n",i);

}

val=val>>1;

}

gpio_set_value(DAC_WR,1); //load data to register

 

return 0;

}

测量确认,MSM7227平台单独操作GPIO拉高拉低,周期大概是2uS左右,导致显示效果还是比较差,主要是闪烁,但内容还是比较清晰的

见图片

 

图片4.jpg
图片5.jpg
 

文章评论3条评论)

登录后参与讨论

用户377235 2012-3-16 22:52

显示的图片挺酷的

飞言走笔 2012-3-7 11:16

可以改成测试测量的,呵呵

用户403664 2012-3-7 08:59

第一季博客大赛时间:3.1-5.31,主题:FPGA、EDA软件与开发工具、测试测量,参赛博文必须与这三个主题相关。http://www.ednchina.com/event/blogcontest/info1.html
相关推荐阅读
pinuoelec 2017-06-03 13:34
CC3D有刷小飞机(3)-设置指南
1.CC3D有刷设置 1.1.CC3D有刷飞控软件升级 推荐使用dronin或者Taulabs固件,dronin和Taulabs针对有刷电机将飞控的PWM输出进行过优化调节。具体参照dronin或者T...
pinuoelec 2017-05-31 10:56
CC3D有刷小飞机(2)
1.CC3D有刷飞控简介 CC3D有刷飞控是在openpilot的Atom基础上进行的重构设计,主要针对有刷小四轴进行部分电路优化。 1.1.CC3D有刷飞控尺寸及实物图片 采用4层板PCB设计,长宽...
pinuoelec 2017-05-28 10:41
CC3D有刷小飞机(1)
最近,好像飞行器管控越来越严了。超过 250g都要登记,申报飞行等等。大家还是遵纪守法吧,玩玩有刷小飞行器吧。 从 今天 开始,准备把去年做的有刷飞控,分享出来,抛砖引玉。 整机才28g,不超重,而...
pinuoelec 2015-07-03 09:30
给直升机电调刷BLHELI固件参考步骤
其实Blheli固件一开始就是为直升机电调设计的    Atmel芯片电调BLHeli固件升级步骤参考   xfce@sina.com QQ:1626607998 2015...
pinuoelec 2015-07-03 08:57
性感的V尾四轴
好久没折腾了 重新安装了V-TAIL         第一次试飞视频    ...
pinuoelec 2015-07-03 08:51
直升机斜盘调试完成了
周末把直升机斜盘调试了, 遥控螺距摇杆最小,最大,中间摇杆时,斜盘保持水平就差不多了 看看简单的视频测试  ...
我要评论
3
9
关闭 站长推荐上一条 /2 下一条