@@ -1297,7 +1297,7 @@ HAL_StatusTypeDef HAL_I2C_Master_Sequential_Transmit_IT(I2C_HandleTypeDef *hi2c,
1297
1297
1298
1298
/* Process Unlocked */
1299
1299
__HAL_UNLOCK (hi2c );
1300
-
1300
+
1301
1301
return HAL_TIMEOUT ;
1302
1302
}
1303
1303
}
@@ -1321,7 +1321,7 @@ HAL_StatusTypeDef HAL_I2C_Master_Sequential_Transmit_IT(I2C_HandleTypeDef *hi2c,
1321
1321
hi2c -> Devaddress = DevAddress ;
1322
1322
1323
1323
Prev_State = hi2c -> PreviousState ;
1324
-
1324
+
1325
1325
/* Generate Start */
1326
1326
if ((Prev_State == I2C_STATE_MASTER_BUSY_RX ) || (Prev_State == I2C_STATE_NONE ))
1327
1327
{
@@ -3689,7 +3689,7 @@ static HAL_StatusTypeDef I2C_MasterTransmit_TXE(I2C_HandleTypeDef *hi2c)
3689
3689
3690
3690
/* Generate Stop */
3691
3691
hi2c -> Instance -> CR1 |= I2C_CR1_STOP ;
3692
-
3692
+
3693
3693
hi2c -> PreviousState = I2C_STATE_NONE ;
3694
3694
hi2c -> State = HAL_I2C_STATE_READY ;
3695
3695
@@ -3840,6 +3840,7 @@ static HAL_StatusTypeDef I2C_MasterTransmit_BTF(I2C_HandleTypeDef *hi2c)
3840
3840
*/
3841
3841
static HAL_StatusTypeDef I2C_MasterReceive_RXNE (I2C_HandleTypeDef * hi2c )
3842
3842
{
3843
+
3843
3844
if (hi2c -> State == HAL_I2C_STATE_BUSY_RX )
3844
3845
{
3845
3846
uint32_t tmp = 0U ;
@@ -3853,34 +3854,24 @@ static HAL_StatusTypeDef I2C_MasterReceive_RXNE(I2C_HandleTypeDef *hi2c)
3853
3854
}
3854
3855
else if ((tmp == 2U ) || (tmp == 3U ))
3855
3856
{
3856
- if (hi2c -> XferOptions != I2C_NEXT_FRAME )
3857
- {
3858
- /* Disable Acknowledge */
3859
- hi2c -> Instance -> CR1 &= ~I2C_CR1_ACK ;
3860
-
3861
- /* Enable Pos */
3862
- hi2c -> Instance -> CR1 |= I2C_CR1_POS ;
3863
- }
3864
- else
3865
- {
3866
- /* Enable Acknowledge */
3867
- hi2c -> Instance -> CR1 |= I2C_CR1_ACK ;
3868
- }
3857
+ /* Disable Acknowledge */
3858
+ hi2c -> Instance -> CR1 &= ~I2C_CR1_ACK ;
3859
+
3860
+ /* Enable Pos */
3861
+ hi2c -> Instance -> CR1 |= I2C_CR1_POS ;
3869
3862
3870
3863
/* Disable BUF interrupt */
3871
3864
__HAL_I2C_DISABLE_IT (hi2c , I2C_IT_BUF );
3872
3865
}
3873
3866
else
3874
3867
{
3875
- if (hi2c -> XferOptions != I2C_NEXT_FRAME )
3876
- {
3877
- /* Disable Acknowledge */
3878
- hi2c -> Instance -> CR1 &= ~I2C_CR1_ACK ;
3879
- }
3880
- else
3868
+ /* Disable Acknowledge */
3869
+ hi2c -> Instance -> CR1 &= ~I2C_CR1_ACK ;
3870
+
3871
+ if (hi2c -> XferOptions == I2C_NEXT_FRAME )
3881
3872
{
3882
- /* Enable Acknowledge */
3883
- hi2c -> Instance -> CR1 |= I2C_CR1_ACK ;
3873
+ /* Enable Pos */
3874
+ hi2c -> Instance -> CR1 |= I2C_CR1_POS ;
3884
3875
}
3885
3876
3886
3877
/* Disable EVT, BUF and ERR interrupt */
@@ -3938,15 +3929,13 @@ static HAL_StatusTypeDef I2C_MasterReceive_BTF(I2C_HandleTypeDef *hi2c)
3938
3929
/* Prepare next transfer or stop current transfer */
3939
3930
if ((CurrentXferOptions != I2C_FIRST_AND_LAST_FRAME ) && (CurrentXferOptions != I2C_LAST_FRAME ) && (CurrentXferOptions != I2C_NO_OPTION_FRAME ))
3940
3931
{
3941
- if (CurrentXferOptions != I2C_NEXT_FRAME )
3942
- {
3943
- /* Disable Acknowledge */
3944
- hi2c -> Instance -> CR1 &= ~I2C_CR1_ACK ;
3945
- }
3946
- else
3932
+ /* Disable Acknowledge */
3933
+ hi2c -> Instance -> CR1 &= ~I2C_CR1_ACK ;
3934
+
3935
+ if ((CurrentXferOptions == I2C_NEXT_FRAME ) || (CurrentXferOptions == I2C_FIRST_FRAME ))
3947
3936
{
3948
- /* Enable Acknowledge */
3949
- hi2c -> Instance -> CR1 |= I2C_CR1_ACK ;
3937
+ /* Generate Start */
3938
+ hi2c -> Instance -> CR1 |= I2C_CR1_START ;
3950
3939
}
3951
3940
tmp = (uint32_t )(hi2c -> State ) & I2C_STATE_MSK ;
3952
3941
hi2c -> PreviousState = tmp | (uint32_t )(hi2c -> Mode );
0 commit comments