找个肯真心帮助在下的

2019-08-18 20:34发布

刚接触这个论坛,正好现在有一点地方弄不明白,寻求高人指点
不知道有没有人用过MCP4728这个片子,用IIC驱动的一个带四路缓冲输出的12 位电压输出DAC
本以为很简单就搞定了,可以一直拖了四五天却毫无进展,谁能给提点意见啊?小弟万分感谢!!!
下面是驱动程序,不知道哪里错了,连接方式很简单:VDD  gnd SCL SDA LDAC接地 RDY/BSY空接
下面是程序:(其中IIC用的是原子哥的就没必要贴上来了,只是驱动MCP4728的一段,方便的话大家可以尝试一下)
void MCP4728_WR(void)//500k接地输出
{
         u8 temp;
         u8 setBuf[8];
        setBuf[0]=0x94;
        setBuf[1]=0x00;
        setBuf[2]=0x92;
        setBuf[3]=0x00;
        setBuf[4]=0x93;
        setBuf[5]=0x00;
        setBuf[6]=0x94;
        setBuf[7]=0x00;
 IIC_Start();
 IIC_Send_Byte(0xc0);       //器件寻址
 IIC_Wait_Ack();  IIC_Send_Byte(0x50);   //设置顺序写起始地址    50eeprom 00 no eeprom
 IIC_Wait_Ack();  temp=setBuf[0]&0X0F;
 temp|=0xf0;
 IIC_Send_Byte(temp);   //1001高4位
 IIC_Wait_Ack();  IIC_Send_Byte(setBuf[1]);   //低8位
 IIC_Wait_Ack();  temp=setBuf[2]&0X0F;
 temp|=0xf0;
 IIC_Send_Byte(temp);   //1011高4位
 IIC_Wait_Ack();  IIC_Send_Byte(setBuf[3]);   //低8位
 IIC_Wait_Ack();  temp=setBuf[4]&0X0F;
 temp|=0xf0;
 IIC_Send_Byte(temp);   //1101高4位
 IIC_Wait_Ack();  IIC_Send_Byte(setBuf[5]);   //低8位
 IIC_Wait_Ack();  temp=setBuf[6]&0X0F;
 temp|=0xf0;
 IIC_Send_Byte(temp);   //1111高4位
 IIC_Wait_Ack();  IIC_Send_Byte(setBuf[7]);   //低8位
 IIC_Wait_Ack();  IIC_Stop();
}

   
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
飘散的羽
1楼-- · 2019-08-19 10:32
愁,大家都睡醒了哇
飘散的羽
2楼-- · 2019-08-19 10:43
有没有人有兴趣研究下啊,需要什么资料我都可以提供的~
正点原子
3楼-- · 2019-08-19 15:23
没用过这个芯片。
但是给你个思路。
既然是IIC器件,在调试不成功的时候,应该考虑2个方向:
1,硬件电路是不是有问题。
2,芯片是不是损坏。
硬件连接,请检查原理图。
芯片是不是损坏,可以用IIC通信检查,IIC都会有应答的,那你检测应答,如果应答都没有,说明这个IIC通信就不成功,自然后面的代码都是白搭。
应答没有的时候,检查电路,代码,最后也要怀疑是不是芯片挂了。
总之,做什么事情都可能遇到问题,关键是你分析问题的能力,这也是现在很多所谓大学生高材生所缺乏的...
天天玩游戏,能分析个鸟问题。。。
飘散的羽
4楼-- · 2019-08-19 16:44
回复【10楼】正点原子:
---------------------------------
谢谢原子哥的细心解答,这个片子很简单,硬件不会有什么问题,芯片我换了3个了,这些我都尝试过,至于IIC,我用的是你的例程,就是直接从MINI板上引了俩个线接到片子上的,我特意插上液晶屏观察了一下,IIC功能正常。总不至于转接过去就失灵的吧?
还有网上有MCP4728的评估,我是按照这个来写的代码。其实能想的问题我都有想过,实在是不行了,这几天没睡过一个好觉。感觉要奔溃了。。。一个很简单的东西,我搞不定了。。。。
正点原子
5楼-- · 2019-08-19 21:24
 精彩回答 2  元偷偷看……
正点原子
6楼-- · 2019-08-19 23:30
你写入MCP4728的值,读出来校验下,你看看对不对?

一周热门 更多>