AnsweredAssumed Answered

stm8s I2C Communication

Question asked by sakarya.erhan.001 on Feb 12, 2016
Hello,

I want to use I2C Communication between two stm8s208cb MCUs. I use stm8s standard peripharel library. My code:

Master:
#include "stm8s.h"
#define I2C_SPEED 300000
#define OWN_ADDRESS    0xA0      
#define SLAVE_ADDRESS    0x30
void delay_delay(unsigned int mul);
void main()
{
 CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
 I2C_DeInit();
 I2C_Init(I2C_SPEED, 0xA0, I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, 16);

while (1)
{  
I2C_GenerateSTART(ENABLE);
I2C_Send7bitAddress(SLAVE_ADDRESS, I2C_DIRECTION_TX);
I2C_SendData(0x61);
I2C_GenerateSTOP(ENABLE);
delay_delay(500);
}
}

void delay_delay(unsigned int mul)
{
   for(; mul>0; mul--);
}

#ifdef  USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
  while (1)
  {}
}
#endif

/*******************************************************************/
Slave:
#include "stm8s.h"
#include "stm8s_uart3.h"
#include "stdio.h"
#include "stm8s_i2c.h"


#define I2C_SPEED 300000
#define OWN_ADDRESS    0xA0      
#define SLAVE_ADDRESS    0x30

void delay_delay(unsigned int mul);

void sendstring(char *s)
{
  while(*s){
    UART3->DR = (u8) (*s);
    while ((UART3->SR & (u8) UART3_FLAG_TXE) == RESET);
    s++;
  } 
}

void main(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

UART3_DeInit();
UART3_Init((uint32_t)9600, UART3_WORDLENGTH_8D, UART3_STOPBITS_1, UART3_PARITY_NO, UART3_MODE_TXRX_ENABLE);

I2C_DeInit();
I2C_Init(300000, 0x30, I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, 16);

char veri_bas[1];
  
while (1)
{  

I2C_AcknowledgeConfig(DISABLE);
uint8_t data = I2C_ReceiveData(); //-datayy oku
I2C_AcknowledgeConfig(ENABLE);
sprintf(veri_bas ,"%i" ,data);
sendstring(veri_bas);
delay_delay(500);
}
}

void delay_delay(unsigned int mul)
{
   for(; mul>0; mul--);
}

#ifdef  USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
  while (1)
  {}
}
#endif

It does not work. Help please, I can't find the error.

Also:
Resistors(4.7K) are okey for I2C Communication. 

Outcomes