有大佬用过这个芯片吗?我使用的时候出现了一个很奇葩的问题就是能够和芯片通信就是读数据的时候低八位读不出来...有点郁闷
上面是通信格式说明...
下面是我通信部分的程序现在只有读和写IIC通信协议用的是正点原子的软件模拟IIC库..
/* ¶ÔINA226½øÐжÁ²Ù×÷: Ê×ÏȸüÐÂÖ¸Õëµ½addr */ u16 INA226_ReadData(u8 addr) { u16 res = 0; //----1 IIC_Start(); IIC_Send_Byte(INA226_ADDR); res = IIC_Wait_Ack(); if(res) { return 0xff; } IIC_Send_Byte(addr); res = IIC_Wait_Ack(); if(res) { return 0xff; } IIC_Stop(); delay_ms(1); //---2 IIC_Start(); IIC_Send_Byte(INA226_ADDR|0x01);//¶Á²Ù×÷ res = IIC_Wait_Ack(); if(res) { return 0xff; } res = IIC_Read_Byte(1); res <<= 8; res |= IIC_Read_Byte(0); IIC_Stop(); return res; } u8 INA226_WriteData(u8 addru16 data) { u8 res; IIC_Start(); IIC_Send_Byte(INA226_ADDR); res = IIC_Wait_Ack(); if(res) { return 0xff; } IIC_Send_Byte(addr); res = IIC_Wait_Ack(); if(res) { return 0xff; } IIC_Send_Byte(data>>8); res = IIC_Wait_Ack(); if(res) { return 0xff; } IIC_Send_Byte(data&0x00ff); res = IIC_Wait_Ack(); if(res) { return 0xff; } IIC_Stop(); //printf("h:0x%02xl:0x%02x\r\n"data>>8data&0x00ff); return 0x66; }
应该还是时序上的问题了,模拟的IIC,在延时上要很注意,要使用逻辑分析仪进行测量 一下时间延时是不是够了
还有时序上协议上的问题了,