今年的电子竞赛马上就开始了。其实这几天比较关注这个。看了下今年的推荐芯片里面。数据转换器只有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);
}
用户377235 2015-8-3 08:44
在吗 我遇到一个问题:发送第一个字节时(0x98)有应答信号(ack),发送第二个(0x10)就没应答信号了,这可能是什么原因啊