热度 20
2014-9-5 10:23
2484 次阅读|
1 个评论
今年的电子竞赛马上就开始了。其实这几天比较关注这个。看了下今年的推荐芯片里面。数据转换器只有3种。分别是ADS1118.DAC7811和DAC8571.7811这片子比较早出来。网上程序更是五花八门。这里不做多解释。另外自己手上刚好有DAC8571这片子。前几日闲的慌。胡乱搭了一板子。果断写了下IIC。示波器看了下波形。以及应答信号ACK。 单片机用的430.另外这个DA16位的。测试时候输出还是有偏移的。在加上自己的万用表精度不高。所以也不知道具体偏移到底有多少。 下降介绍片子。2.7-5.5供电。轨对轨输出缓冲。16位。IIC通信带高速模式。8 Lead MSOP 封装。 这里按照经典的连接方法就行了。这里有个地方一定要注意。vsense 一定要和VOUT连接一起。只要你稍微对放大器有点常识就知道。方向段一定要和输出连接一起才能构成缓冲。如果不连接那就是一个比较了。 下面介绍他的写地址和寄存器的时序。IIC时序其实就是。 一般IIC时序分为3个步骤。一。开始了之后。先写地址。如果成功了就会有应答信号在第九个脉冲的时候会拉低。就表示有这器件了。二。写寄存器。有低电平应答信号也表示成功。最后写数据。有应答信号就好了。最后重新开始或者stop. 这里介绍一下他的写寄存器那个步骤。主要注意LOAD1 LOAD0.这2位比较具有含义。当然通常的为了直接输出。只要你写01就好了。01就是最常用的方法。他是直接更新IIC输出的。00虽然存储了数据。但是并没有更新输出。写寄存器的时候写0X10.他 的含义对应PDF已经写得很明白。 另外输出根据这几步来写:(这里A0是接地的) 这里最后ML是16为DA的数据。参考电压5V的话写数据0x4000就是5/4=1.25V。这时候测量DA的输出端就是1.25V。这个自己测试过没问题。 主要根据这几个步骤来就行了。程序自己写了下没问题。(时序略) 另外如果有这个遇到问题的随时可以交流。主函数框架程序如下、 #include #include"IIC.h" //#include"12864.h" #include"init_clk.h" #define uchar unsigned char #define uint unsigned int uchar AD_temp; void main() { WDTCTL=WDTPW+WDTHOLD; // 关闭看门狗 // P1DIR|=BIT2;// //Ini_Lcd(); //init_clk(); P1DIR=0XFF; init_IIC(); start(); write_byte(0x98); slave_response(); write_byte(0x10); slave_response(); write_byte(0x00); slave_response(); write_byte(0x20); slave_response(); stop(); while(1); }