Is the I²C frequency meanwhile changeable? I read a few articles a while ago, that the frequency is not changeable.
2 Answers
Yes it is, for all the info available on the I2C interface (which is part of the BSC, Broadcom Serial Controller), I suggest reading Chapter 3 (BSC) of the BCM2835 ARM Peripherals datasheets.
On the first page of Chapter 3, it mentions the Clock Divider register. On page 33, it explains this register in more depth:
Clock Divider
SCL = core clock / CDIV
Where core_clk is nominally 150 MHz. If CDIV is set to 0, the divisor is 32768. CDIV is always rounded down to an even number. The default value should result in a 100 kHz I2C clock frequency.
-
The core clock seems to 250 rather than 150 MHz at least on the Raspberry Pi Zero W. Mar 23, 2020 at 10:09
i2cf is a small tool to change the I2C clock frequency.
Changes to 10 kHz and 4 kHz were verified with an oscilloscope. Tested only on a Raspberry Pi Zero W. The source may require modification for other models or to be a more generic solution.