سلام .اینو بر اساس دستاشیت عوض کردم ولی باز مشکل داره
کد:
int I2C_WriteByte( uint8_t SendByte, uint32_t WriteAddress, uint8_t DeviceAddress )
{
I2C_Start() ;
I2C_SendByte(DeviceAddress);
I2C_WaitAck();
I2C_SendByte( (uint8_t) ( (WriteAddress&0xFF000000) >>24) );
I2C_SendByte( (uint8_t) ( (WriteAddress&0x00FF0000) >>16) );
I2C_WaitAck();
I2C_SendByte( (uint8_t) ( (WriteAddress&0x0000FF00) >>8) );
I2C_SendByte( (uint8_t) ( WriteAddress&0x000000FF) );
I2C_WaitAck();
I2C_SendByte(SendByte);
I2C_WaitAck();
I2C_Stop();
return 0;
}
/*******************************************************************************
* Function Name : I2C_ReadByte
* Description : I2C read a byte data
* Input : - pBuffer: read buffer
* - length: read data size
* - ReadAddress: read address
* - DeviceAddress: device address
* Output : None
* Return : Return 0 OK, Return -1 fail
* Attention : None
*******************************************************************************/
int I2C_ReadByte(uint8_t* pBuffer, uint16_t length, uint32_t ReadAddress, uint8_t DeviceAddress)
{
I2C_Start() ;
I2C_SendByte(DeviceAddress);
I2C_WaitAck();
I2C_SendByte( (uint8_t) ( (ReadAddress&0xFF000000) >>24) );
I2C_SendByte( (uint8_t) ( (ReadAddress&0x00FF0000) >>16) );
I2C_WaitAck();
I2C_SendByte( (uint8_t) ( (ReadAddress&0x0000FF00) >>8) );
I2C_SendByte( (uint8_t) ( ReadAddress&0x000000FF) );
I2C_WaitAck();
I2C_Start() ;
I2C_SendByte(DeviceAddress);
I2C_WaitAck();
while(length)
{
*pBuffer = I2C_ReceiveByte();
if(length == 1)
{
I2C_NoAck();
}
else
{
I2C_Ack();
}
pBuffer++;
length--;
}
I2C_Stop();
return 0;
}
ولی باز مورد داره .مهندس اگر امکان داره کمک کنید این دو تابع اصلاح بشه .دیگه دیوانه شدم از بس با این i2c وررفتم.