Quiero la comunicación I2C stm8s (esclavo) y arduino uno (maestro), pero no funciona.
Código Arduino Uno (maestro):
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
}
void loop() {
Wire.beginTransmission(0x30); // transmit to device #0x30
Wire.write(0x15); // sends one byte
Wire.endTransmission(); // stop transmitting
delay(500);
}
Código esclavo STM8 con biblioteca periférica: main.c
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
I2C_DeInit();
I2C_Init(100000, SLAVE_ADDRESS, I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, 16);
char veri_bas[1];
while (1)
{
I2C_GenerateSTART(ENABLE);
/* Disable Acknowledgement */
I2C_AcknowledgeConfig(I2C_ACK_NEXT);
/* Send STOP Condition */
I2C_GenerateSTOP(ENABLE);
uint8_t gelen = I2C_ReceiveData();
//uint8_t gelen = 0x15;
sprintf(veri_bas ,"%d" ,gelen);
sendstring(veri_bas);
}
STM8 - main.h:
#ifndef __MAIN_H
#define __MAIN_H
#define I2C_SPEED 100000
#define SLAVE_ADDRESS 0x30
#endif /* __MAIN_H */
Arduino envía datos, los vi en el ossiloscopio. Los resistores Pinout (SCL-SDA-GND) y I2C son correctos. La función de la cadena de envío es correcta. Pero no funciona. ¡Gracias!