Hello, I am trying to initialize I2C, but getting continuously high signal on both SDA and SCL pins . Can anyone suggest what can be the issue?
#include "stm8s.h"
#define I2C_PORT (GPIOB)
#define SDA_pin (GPIO_PIN_5)
#define SCL_pin (GPIO_PIN_4)
#define SLAVE_ADDRESS 0x60
#define I2C_OWN_ADDRESS 0x00
static void CLK_Config(void);
void I2C_init(void);
void I2C_Write(uint8_t I2C_Slave_Address,uint8_t idata);
void main(void)
{
/*Configure the HSE Clock*/
CLK_Config();
GPIO_Init(I2C_PORT,((GPIO_Pin_TypeDef)(SCL_pin | SDA_pin)),GPIO_MODE_OUT_PP_HIGH_FAST);
/*I2C Init*/
I2C_init();
I2C_Write(SLAVE_ADDRESS,0xA1);
}
/* for clock configuration */
static void CLK_Config(void)
{
/*Default Initialization*/
CLK_DeInit();
/*Configure the HSE */
CLK_HSECmd(ENABLE);
//CLK_HSICmd(ENABLE);
/* Configure the Fcpu to DIV1*/
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE);
//CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE);
/* Output Fcpu on CLK_CCO pin */
//CLK_CCOConfig(CLK_OUTPUT_HSI);
}
void I2C_init(void)
{
CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C, ENABLE);
/* I2C Peripheral Enable */
I2C_Cmd(ENABLE);
/* I2C configuration */
I2C_DeInit();
/* I2C configuration after enabling it */
I2C_Init(I2C_SPEED, I2C_OWN_ADDRESS, I2C_DUTYCYCLE_2, I2C_ACK_CURR,I2C_ADDMODE_7BIT, 16);
}
void I2C_Write(uint8_t I2C_Slave_Address,uint8_t idata)
{
I2C_GenerateSTART(ENABLE);
while(I2C_GetFlagStatus(I2C_FLAG_BUSBUSY));
while(!(I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT)));
I2C_Send7bitAddress(I2C_Slave_Address,I2C_DIRECTION_TX);
while(!(I2C_CheckEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)));
I2C_SendData(idata);
while(!(I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED)));
I2C_GenerateSTOP(ENABLE);
}
