Skip to content

Commit 5fda6e4

Browse files
authored
Merge pull request #29 from sparkfun/correcting_CS_timing
Making changes suggested by @MapleHan in #20
2 parents 4bb035b + ec36521 commit 5fda6e4

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/ICM_20948.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -991,18 +991,18 @@ ICM_20948_Status_e ICM_20948_write_SPI(uint8_t reg, uint8_t *data, uint32_t len,
991991
_spi->transfer(0x00);
992992
_spi->endTransaction();
993993

994+
_spi->beginTransaction(spisettings);
994995
digitalWrite(cs, LOW);
995996
// delayMicroseconds(5);
996-
_spi->beginTransaction(spisettings);
997997
_spi->transfer(((reg & 0x7F) | 0x00));
998998
// SPI.transfer(data, len); // Can't do this thanks to Arduino's poor implementation
999999
for (uint32_t indi = 0; indi < len; indi++)
10001000
{
10011001
_spi->transfer(*(data + indi));
10021002
}
1003-
_spi->endTransaction();
10041003
// delayMicroseconds(5);
10051004
digitalWrite(cs, HIGH);
1005+
_spi->endTransaction();
10061006

10071007
return ICM_20948_Stat_Ok;
10081008
}
@@ -1026,18 +1026,18 @@ ICM_20948_Status_e ICM_20948_read_SPI(uint8_t reg, uint8_t *buff, uint32_t len,
10261026
_spi->transfer(0x00);
10271027
_spi->endTransaction();
10281028

1029+
_spi->beginTransaction(spisettings);
10291030
digitalWrite(cs, LOW);
10301031
// delayMicroseconds(5);
1031-
_spi->beginTransaction(spisettings);
10321032
_spi->transfer(((reg & 0x7F) | 0x80));
10331033
// SPI.transfer(data, len); // Can't do this thanks to Arduino's stupid implementation
10341034
for (uint32_t indi = 0; indi < len; indi++)
10351035
{
10361036
*(buff + indi) = _spi->transfer(0x00);
10371037
}
1038-
_spi->endTransaction();
10391038
// delayMicroseconds(5);
10401039
digitalWrite(cs, HIGH);
1040+
_spi->endTransaction();
10411041

10421042
return ICM_20948_Stat_Ok;
10431043
}

0 commit comments

Comments
 (0)