Y_G_G 发表于 2021-7-26 20:34 这个已经很贴切的说明了地址(A2,A1),丝印AJ对应A0(00),AP对应A1(01),AQ对应A2(10),AR对应A3(11),A0的地址由用户自己设定0(接地)或者1(通过10k左右电阻接VDD)。 |
sssxxs 发表于 2021-7-26 15:22 两年了,又看到这个帖子了,在数据手册的27页面和43页面有说明:高位是1100,A2,A1的值要看你手头上芯片的丝印,A0就是芯片的A0引脚电平,一定要接VCC或者GND,不能悬空 ![]() ![]() |
张小帅1126 发表于 2020-11-7 22:05 那两个地方啊 |
我的调通了,地址是0xC0, 说来也不容易啊,卖家给的地址是 0x60 或0x61,怎么试验都不行, 后来我自动累加地址试验串口输出观察地址和示波器上的电压 ![]() (最后需要注意的是 两个地方需要改地址) |
谢谢大佬们指点 |
Y_G_G 发表于 2019-10-27 01:34 感谢大佬提醒 ![]() |
aaaaaa。 发表于 2019-10-26 18:53 还有A0端口,要么上拉,要么接地,不能空着 最后,根据A0的高低电平和丝印来先确定器件的地址 |
我认为你的MCP4725的A0脚应该接地或上拉,不应该悬空。 这样程序对了,输出结果才对。 |
怎么看丝印啊 |
aaaaaa。 发表于 2019-10-26 18:53 这不是第一步 首先,你要先看到MCP4725上面的丝印是什么,然后才能确定地址位是多少,并不是绝对的0xC2的,不同的丝印的器件地址位是不同的 看不清楚的话可以用放大镜或者手机拍下来看 先确定了器件地址再说 |
我这样做提示,没有问题吧,但我的程序现在还是不能用 |
//使用快速模式写命令写DAC寄存器 void MCP4725_WriteData_Voltage(u16 Vout) //电压单位mV { u8 temp; u16 Dn; LED_Init(); //初始化与LED连接的硬件接口 Dn = ( 4096 * Vout) / VREF_5V; temp = (0x0F00 & Dn) >> 8; //12位数据 IIC_Start(); IIC_Send_Byte(0XC2); //器件寻址,器件代吗:1100; 地址位A2,A1,A0为 0 , 0 , 1;-> 1100 0010 IIC_Wait_Ack(); IIC_Send_Byte(temp); IIC_Wait_Ack(); IIC_Send_Byte(Dn); //将低8位送到DAC寄存器 IIC_Wait_Ack(); LED0=0; // 我用LED0的亮做了提示 IIC_Stop();//产生一个停止条件 delay_ms(10); } 结果LED亮了,是不是代表我的IIC地址没错 |
MCP4725的器件地址并不是固定的,它是在出厂的时候设定的,在数据手册的后面有流明的 所以,你网上下载的程序代码有可能和你现在手头上的IC器件地址是不对应的 C我不会,STM32没用过 但原理是一样的,你可以在写完器件的8位数据的应答信号之后加一个标志位,并通过屏幕或者一个LED指示灯提示出来,如果没有提示,就表明器件的地址不对,或者是其它的问题 只要能确定4725可以正常应答了,那么器件的地址就是对的 |
程序的话,我就看的网上的例程 |