当我进入SEND_I2C_COMMAND(0x08)时,运行按钮是灰色的,似乎cpu停止了。然后我点击停止按钮,指针仍然在SEND_I2C_COMMAND。
有人知道如何解决这个问题吗?void i2c_eeprom_write_byte(uint32_t address, uint8_t wr_data)
{
i2c_wait_until_eeprom_ready();
i2c_send_address(address);
WAIT_WHILE_I2C_FIFO_IS_FULL(); // Wait if I2C Tx FIFO is full
SEND_I2C_COMMAND(wr_data & 0xFF); // Send write data
WAIT_UNTIL_I2C_FIFO_IS_EMPTY(); // Wait until Tx FIFO is empty
WAIT_UNTIL_NO_MASTER_ACTIVITY(); // wait until no master activity
}
void i2c_wait_until_eeprom_ready(void)
{
uint16_t abort_SR_Status; // TX Abort Source Register
// Polling until EEPROM ACK to detect busy period
do {
SEND_I2C_COMMAND(0x08); // Make a dummy access
WAIT_UNTIL_I2C_FIFO_IS_EMPTY(); // Wait until Tx FIFO is empty
WAIT_UNTIL_NO_MASTER_ACTIVITY(); // Wait until no master activity
abort_SR_Status = GetWord16(I2C_TX_ABRT_SOURCE_REG); // Read the Tx abort source register
GetWord16(I2C_CLR_TX_ABRT_REG); // Clear the Tx abort flag
} while( (abort_SR_Status & ABRT_7B_ADDR_NOACK) != 0 ); // Repeat if not ACK
}