atsam: Fix I2C bitrate

Multiplying the desired bitrate by 4 results in half the
desired period and thus twice the desired bitrate.

Signed-off-by: Alex Maclean <monkeh@monkeh.net>
This commit is contained in:
Alex Maclean 2021-11-18 23:20:59 +00:00 committed by KevinOConnor
parent 01a223393e
commit 92ca111986
1 changed files with 2 additions and 2 deletions

View File

@ -49,7 +49,7 @@ i2c_init(Twi *p_twi, uint32_t rate)
p_twi->TWI_CR = TWI_CR_MSEN;
uint32_t cldiv = 0, chdiv = 0, ckdiv = 0;
cldiv = SystemCoreClock / ((rate > 384000 ? 384000 : rate) * 4) - 4;
cldiv = SystemCoreClock / ((rate > 384000 ? 384000 : rate) * 2) - 4;
while ((cldiv > 255) && (ckdiv < 7)) {
ckdiv++;
@ -57,7 +57,7 @@ i2c_init(Twi *p_twi, uint32_t rate)
}
if (rate > 348000) {
chdiv = SystemCoreClock / ((2 * rate - 384000) * 4) - 4;
chdiv = SystemCoreClock / ((2 * rate - 384000) * 2) - 4;
while ((chdiv > 255) && (ckdiv < 7)) {
ckdiv++;
chdiv /= 2;