|
@@ -131,14 +131,14 @@ t_i2c_status i2c_rd_data(const uint8_t address, const uint8_t num_bytes_to_rd, u
|
|
|
wait_event(!(I2C->SR1 & I2C_SR1_ADDR), 2);
|
|
|
|
|
|
//Заплатка из Errata
|
|
|
- __disable_interrupt();
|
|
|
+ disableInterrupts();
|
|
|
//Очистка бита ADDR чтением регистра SR3
|
|
|
I2C->SR3;
|
|
|
|
|
|
//Устанавлием бит STOP
|
|
|
I2C->CR2 |= I2C_CR2_STOP;
|
|
|
//Заплатка из Errata
|
|
|
- __enable_interrupt();
|
|
|
+ enableInterrupts();
|
|
|
|
|
|
//Ждем прихода данных в RD
|
|
|
wait_event(!(I2C->SR1 & I2C_SR1_RXNE), 2);
|
|
@@ -153,25 +153,25 @@ t_i2c_status i2c_rd_data(const uint8_t address, const uint8_t num_bytes_to_rd, u
|
|
|
//Ждем подтверждения передачи адреса
|
|
|
wait_event(!(I2C->SR1 & I2C_SR1_ADDR), 2);
|
|
|
//Заплатка из Errata
|
|
|
- __disable_interrupt();
|
|
|
+ disableInterrupts();
|
|
|
//Очистка бита ADDR чтением регистра SR3
|
|
|
I2C->SR3;
|
|
|
//Запрещаем подтверждение в конце посылки
|
|
|
I2C->CR2 &= ~I2C_CR2_ACK;
|
|
|
//Заплатка из Errata
|
|
|
- __enable_interrupt();
|
|
|
+ enableInterrupts();
|
|
|
//Ждем момента, когда первый байт окажется в DR,
|
|
|
//а второй в сдвиговом регистре
|
|
|
wait_event(!(I2C->SR1 & I2C_SR1_BTF), 2);
|
|
|
|
|
|
//Заплатка из Errata
|
|
|
- __disable_interrupt();
|
|
|
+ disableInterrupts();
|
|
|
//Устанавлием бит STOP
|
|
|
I2C->CR2 |= I2C_CR2_STOP;
|
|
|
//Читаем принятые байты
|
|
|
*data++ = I2C->DR;
|
|
|
//Заплатка из Errata
|
|
|
- __enable_interrupt();
|
|
|
+ enableInterrupts();
|
|
|
*data = I2C->DR;
|
|
|
}
|
|
|
//N>2
|
|
@@ -180,13 +180,13 @@ t_i2c_status i2c_rd_data(const uint8_t address, const uint8_t num_bytes_to_rd, u
|
|
|
wait_event(!(I2C->SR1 & I2C_SR1_ADDR), 2);
|
|
|
|
|
|
//Заплатка из Errata
|
|
|
- __disable_interrupt();
|
|
|
+ disableInterrupts();
|
|
|
|
|
|
//Очистка бита ADDR чтением регистра SR3
|
|
|
I2C->SR3;
|
|
|
|
|
|
//Заплатка из Errata
|
|
|
- __enable_interrupt();
|
|
|
+ enableInterrupts();
|
|
|
|
|
|
while (length-- > 3 && I2C_timeout) {
|
|
|
//Ожидаем появления данных в DR и сдвиговом регистре
|
|
@@ -204,7 +204,7 @@ t_i2c_status i2c_rd_data(const uint8_t address, const uint8_t num_bytes_to_rd, u
|
|
|
//Запрещаем подтверждение в конце посылки
|
|
|
I2C->CR2 &= ~I2C_CR2_ACK;
|
|
|
//Заплатка из Errata
|
|
|
- __disable_interrupt();
|
|
|
+ disableInterrupts();
|
|
|
//Читаем N-2 байт из RD, тем самым позволяя принять в сдвиговый
|
|
|
//регистр байт N, но теперь в конце приема отправится посылка NACK
|
|
|
*data++ = I2C->DR;
|
|
@@ -213,7 +213,7 @@ t_i2c_status i2c_rd_data(const uint8_t address, const uint8_t num_bytes_to_rd, u
|
|
|
//Читаем N-1 байт
|
|
|
*data++ = I2C->DR;
|
|
|
//Заплатка из Errata
|
|
|
- __enable_interrupt();
|
|
|
+ enableInterrupts();
|
|
|
//Ждем, когда N-й байт попадет в DR из сдвигового регистра
|
|
|
wait_event(!(I2C->SR1 & I2C_SR1_RXNE), 2);
|
|
|
//Читаем N байт
|