Skip to content

Commit 07177fe

Browse files
authored
Merge pull request #55 from Air-duino/fix/wire
fix: 修复IIC的主从机轮询卡死的问题
2 parents f2d1a68 + 3ac6c3a commit 07177fe

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

libraries/Wire/src/Wire.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ void TwoWire::setClock(uint32_t frequency)
128128

129129
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint32_t iaddress, uint8_t isize, uint8_t sendStop)
130130
{
131-
#if !defined(I2C_OTHER_FRAME)
131+
#if !defined(I2C_OTHER_FRAME) && !defined(AIR001xx)
132132
UNUSED(sendStop);
133133
#endif
134134
uint8_t read = 0;
@@ -156,7 +156,7 @@ uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint32_t iaddres
156156
}
157157

158158
// perform blocking read into buffer
159-
#if defined(I2C_OTHER_FRAME)
159+
#if defined(I2C_OTHER_FRAME) && !defined(AIR001xx)
160160
if (sendStop == 0) {
161161
_i2c.handle.XferOptions = I2C_OTHER_FRAME ;
162162
} else {
@@ -231,12 +231,12 @@ void TwoWire::beginTransmission(int address)
231231
//
232232
uint8_t TwoWire::endTransmission(uint8_t sendStop)
233233
{
234-
#if !defined(I2C_OTHER_FRAME)
234+
#if !defined(I2C_OTHER_FRAME) && !defined(AIR001xx)
235235
UNUSED(sendStop);
236236
#endif
237237
int8_t ret = 4;
238238
// check transfer options and store it in the I2C handle
239-
#if defined(I2C_OTHER_FRAME)
239+
#if defined(I2C_OTHER_FRAME) && !defined(AIR001xx)
240240
if (sendStop == 0) {
241241
_i2c.handle.XferOptions = I2C_OTHER_FRAME ;
242242
} else {

libraries/Wire/src/utility/twi.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -867,11 +867,11 @@ i2c_status_e i2c_master_write(i2c_t *obj, uint8_t dev_address,
867867
if (size == 0) {
868868
ret = i2c_IsDeviceReady(obj, dev_address, 1);
869869
} else {
870-
#if defined(I2C_OTHER_FRAME)
870+
#if defined(I2C_OTHER_FRAME) && !defined(AIR001xx)
871871
uint32_t XferOptions = obj->handle.XferOptions; // save XferOptions value, because handle can be modified by HAL, which cause issue in case of NACK from slave
872872
#endif
873873
do {
874-
#if defined(I2C_OTHER_FRAME)
874+
#if defined(I2C_OTHER_FRAME) && !defined(AIR001xx)
875875
status = HAL_I2C_Master_Seq_Transmit_IT(&(obj->handle), dev_address, data, size, XferOptions);
876876
#else
877877
status = HAL_I2C_Master_Transmit_IT(&(obj->handle), dev_address, data, size);
@@ -956,11 +956,11 @@ i2c_status_e i2c_master_read(i2c_t *obj, uint8_t dev_address, uint8_t *data, uin
956956
uint32_t err = 0;
957957
HAL_StatusTypeDef status = HAL_OK;
958958

959-
#if defined(I2C_OTHER_FRAME)
959+
#if defined(I2C_OTHER_FRAME) && !defined(AIR001xx)
960960
uint32_t XferOptions = obj->handle.XferOptions; // save XferOptions value, because handle can be modified by HAL, which cause issue in case of NACK from slave
961961
#endif
962962
do {
963-
#if defined(I2C_OTHER_FRAME)
963+
#if defined(I2C_OTHER_FRAME) && !defined(AIR001xx)
964964
status = HAL_I2C_Master_Seq_Receive_IT(&(obj->handle), dev_address, data, size, XferOptions);
965965
#else
966966
status = HAL_I2C_Master_Receive_IT(&(obj->handle), dev_address, data, size);
@@ -1181,7 +1181,7 @@ void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
11811181
}
11821182
}
11831183

1184-
#if defined(I2C1_BASE) || (defined(AIR001xx) && defined(I2C_BASE))
1184+
#if defined(I2C1_BASE)
11851185
/**
11861186
* @brief This function handles I2C1 interrupt.
11871187
* @param None

0 commit comments

Comments
 (0)