急: 咨询LM3S8962通过I2C模块访问DAC8571, 位啥不成功?
先介绍DAC8571 资料; 数字转模拟的DAC, 工作电压3.3V, 目前参考电压输入为1V , 电路图如下连接:
SDA, SCL 都上拉了,上拉电阻10K;
DAC8571 访问关键资料图如下:
LM3S8962 配置为I2C MASTER 主机工作模式, DAC8571 SLAVE 接收模式;
从上图可以看出,
第一步: LM3S8962 首先I2C MASTER 开始, 然后写SLAVE ADDRESS 0X4C; (前7位从机地址0X4C); 等待DAC8571 响应, 然后LM3S8962 发送控制字节0X10对DAC8571 , DAC8571 收到控制字节0X10 后, 把写到临时寄存器的数据加载到DAC8571中.
第二步,写低数据和高数据到DAC8571.
第三步,停止
LM3S8962 程序配置如下;
I2CMasterEnable(I2C_MASTER_BASE);
I2CMasterInit (I2C_MASTER_BASE, false); /* 初始化I2C主机,设置主机为低速*/
I2CMasterSlaveAddrSet(I2C_MASTER_BASE,0X4c,false);
while (I2CMasterBusBusy(I2C_MASTER_BASE));
I2CMasterDataPut(I2C_MASTER_BASE,0x10);
I2CMasterControl (I2C_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_START);
while (I2CMasterBusBusy(I2C_MASTER_BASE));
I2CMasterDataPut(I2C_MASTER_BASE,0xef);
I2CMasterControl (I2C_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_CONT);
while (I2CMasterBusBusy(I2C_MASTER_BASE));
I2CMasterDataPut(I2C_MASTER_BASE,0xef);
I2CMasterControl (I2C_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_CONT);
while (I2CMasterBusBusy(I2C_MASTER_BASE));
I2CMasterControl (I2C_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_FINISH);
问题是: DAC8571 模拟输出总是0,, 各位高手,请帮我看一下程序问题在那里?或其他问题在那里?
测一下时序
标准I2C 接口, 时序图测试了, 一个周期有16个脉冲,感觉不对,不知道配置错误在哪里?