]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Correct ARM STM32 I2C frequency. (#7080)
authoryiancar <yiangosyiangou@cytanet.com.cy>
Thu, 31 Oct 2019 16:19:57 +0000 (16:19 +0000)
committerYan-Fa Li <yanfali@gmail.com>
Thu, 31 Oct 2019 16:19:57 +0000 (09:19 -0700)
It was beleaved that this setting result in a 400Khz I2C bus.

This was incorrect, actual frequency measure with a logic analyzer was around 150Khz.

This is derived from the excel sheet linked in the .h file.
Also confirmed with the ST IDE.

drivers/arm/i2c_master.h

index b40fa0a9102614bdbb739d8f608915acec71d315..a8ed66403a58f655398cea08d8217f99669fc9d2 100644 (file)
 // The default timing values below configures the I2C clock to 400khz assuming a 72Mhz clock
 // For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html
 #    ifndef I2C1_TIMINGR_PRESC
-#        define I2C1_TIMINGR_PRESC 15U
+#        define I2C1_TIMINGR_PRESC 0U
 #    endif
 #    ifndef I2C1_TIMINGR_SCLDEL
-#        define I2C1_TIMINGR_SCLDEL 4U
+#        define I2C1_TIMINGR_SCLDEL 7U
 #    endif
 #    ifndef I2C1_TIMINGR_SDADEL
-#        define I2C1_TIMINGR_SDADEL 2U
+#        define I2C1_TIMINGR_SDADEL 0U
 #    endif
 #    ifndef I2C1_TIMINGR_SCLH
-#        define I2C1_TIMINGR_SCLH 15U
+#        define I2C1_TIMINGR_SCLH 38U
 #    endif
 #    ifndef I2C1_TIMINGR_SCLL
-#        define I2C1_TIMINGR_SCLL 21U
+#        define I2C1_TIMINGR_SCLL 129U
 #    endif
 #endif