1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| u8 ITE6805_ReadOneByte(u16 ReadAddr) { u8 temp=0; while( I2C_GetFlagStatus( I2C1, I2C_FLAG_BUSY ) != RESET ); I2C_GenerateSTART( I2C1, ENABLE ); while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_MODE_SELECT ) ); I2C_Send7bitAddress( I2C1, SLAVE_ADDR, I2C_Direction_Transmitter ); while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED ) );
#if (Address_Lenth == Address_8bit) I2C_SendData( I2C1, (u8)(ReadAddr&0x00FF) ); while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED ) );
#elif (Address_Lenth == Address_16bit) I2C_SendData( I2C1, (u8)(ReadAddr>>8) ); while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED ) );
I2C_SendData( I2C1, (u8)(ReadAddr&0x00FF) ); while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED ) );
#endif
I2C_GenerateSTART( I2C1, ENABLE ); while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_MODE_SELECT ) ); I2C_Send7bitAddress( I2C1, SLAVE_ADDR, I2C_Direction_Receiver ); while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED ) ); while( I2C_GetFlagStatus( I2C1, I2C_FLAG_RXNE ) == RESET ) I2C_AcknowledgeConfig( I2C1, DISABLE ); temp = I2C_ReceiveData( I2C1 ); I2C_GenerateSTOP( I2C1, ENABLE ); return temp; }
|