#ifndef __MYI2C_H__
#define __MTI2C_H__
#include "main.h"
#include "gpio.h"
void MyI2C_SDA_W(uint8_t State);
uint8_t MyI2C_SDA_R(void);
void MyI2C_SCL_W(uint8_t State);
void MyI2C_Strat(void);
void MyI2C_Finish(void);
void MYI2C_SendByte( uint8_t i);
uint8_t MYI2C_ReadByte(void);
void MYI2C_SendACK(void);
uint8_t MYI2C_ReceiveACK(void);
#endif
#include "myi2c.h"
void MyI2C_SDA_W( uint8_t State)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,(GPIO_PinState)State);
}
uint8_t MyI2C_SDA_R(void)
{
uint8_t Binaction;
Binaction=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_8);
return Binaction;
}
void MyI2C_SCL_W(uint8_t State)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,(GPIO_PinState)State);
}
void MyI2C_Strat(void)
{
MyI2C_SDA_W(1);
MyI2C_SCL_W(1);
MyI2C_SDA_W(0);
MyI2C_SCL_W(0);
}
void MyI2C_Finish(void)
{
MyI2C_SDA_W(0);
MyI2C_SCL_W(1);
MyI2C_SDA_W(1);
}
void MYI2C_SendByte( uint8_t i)
{
for(uint8_t j=0;j<8;j++)
{
MyI2C_SDA_W(i & (0x80>>j));
MyI2C_SCL_W(1);
MyI2C_SCL_W(0);
}
}
uint8_t MYI2C_ReadByte(void)
{
uint8_t i=0x00;
MyI2C_SDA_W(1);
for(uint8_t j=7;j>=0;j--)
{
MyI2C_SCL_W(1);
i|=MyI2C_SDA_R()<<j;
MyI2C_SCL_W(0);
}
return i;
}
void MYI2C_SendACK(void)
{
MyI2C_SDA_W(0);
MyI2C_SCL_W(1);
MyI2C_SCL_W(0);
}
uint8_t MYI2C_ReceiveACK(void)
{
uint8_t i;
MyI2C_SDA_W(1);
MyI2C_SCL_W(1);
i = MyI2C_SDA_R();
MyI2C_SCL_W(0);
return i;
}