stm8s208cb I2C Communication

Feb 12, 2016 0 Replies

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.


--------------------------------------- Posted through

formatting link



Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required