Question
I2C master transmit and slave receive functions work. Master receive and slave transmit don't.
//MASTER
while (1)
{
/* USER CODE END WHILE */
ret = HAL_I2C_Master_Transmit(&hi2c1, peripheralNucleoAddress << 1, bufferTx, 1, HAL_MAX_DELAY);
if (ret != HAL_OK)
{
strcpy((char*) bufferTx, "Tx");
HAL_UART_Transmit(&huart2, bufferTx, strlen((char*) bufferTx), 1000);
HAL_Delay(500);
//Error_Handler();
}
ret = HAL_I2C_Master_Receive(&hi2c1, peripheralNucleoAddress << 1, bufferRx, 1, 1000);
if (ret != HAL_OK)
{
strcpy((char*) bufferRx, "Rx");
HAL_UART_Transmit(&huart2, bufferRx, strlen((char*) bufferRx), 1000);
HAL_Delay(500);
//Error_Handler();
}
/* USER CODE BEGIN 3 */
}
---------------SEPARATE FILE----------------------------------------------------------------------------
//SLAVE
while (1)
{
/* USER CODE END WHILE */
ret = HAL_I2C_Slave_Receive(&hi2c1, bufferRx, 1, HAL_MAX_DELAY);
if (ret != HAL_OK)
{
uint8_t message[9];
strcpy((char*) message, "Fail RX!");
HAL_UART_Transmit(&huart2, message, strlen((char*) message), 5000);
//Error_Handler();
}
if (bufferRx[0] == 0x00)
{
uint8_t message[16];
strcpy((char*) message, "Buffer is zero!");
HAL_UART_Transmit(&huart2, message, strlen((char*) message), 5000);
//Error_Handler();
}
else if (bufferRx[0] == 0xAA)
{
uint8_t message[16];
strcpy((char*) message, "Buffer is 0xAA!");
HAL_UART_Transmit(&huart2, message, strlen((char*) message), 5000);
//Error_Handler();
}
else if (bufferRx[0] == 0xFF)
{
uint8_t message[16];
strcpy((char*) message, "Buffer is 0xFF!");
HAL_UART_Transmit(&huart2, message, strlen((char*) message), 5000);
//Error_Handler();
}
ret = HAL_I2C_Slave_Transmit(&hi2c1, bufferTx,1, 1000);
if (ret != HAL_OK)
{
uint8_t message[9];
strcpy((char*) message, "Fail TX!");
HAL_UART_Transmit(&huart2, message, strlen((char*) message), 5000);
//Error_Handler();
}
HAL_Delay(500);
/* USER CODE BEGIN 3 */
}I am using two NucleoG071 boards to create an I2C communication, in which one acts as the master and the other as the slave. For some reason the I2C master receive function and slave transmit do not work even though the master transmit and slave receive do. Any tips are highly appreciated.
