You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
... and tied the 10k pullups to 3.3v using jumper J4 on the FTHR2.
With an oscilloscope I found that the SDA and SCL lines had a maximum of around 2.2v, not the expected 3.3v.
Running through the debugger I found that during the MXC_I2C_Init() call in i2c_me14.c a mxc_gpio_cfg_t is used to configure the SDA and SCL pins. This is hardcoded to use VDDIO as the .vssel field.
In my main function I added this code to re-initialize the SDA and SCL pins to use VDDIOH after the MXC_I2C_Init() call, and this does now bring the high level of both lines to 3.3v:
Question: Is this the intended way to use an I2C bus with 3.3v pullups? Is there some more ergonomic config I could do? It seems easy to miss this and then wonder why your pullups aren't pulling all the way to 3.3v. I'm definitely operating under the assumption that I might have missed something here, but if not there might be an opportunity for a slightly cleaner I2C config.
Thanks!
The text was updated successfully, but these errors were encountered:
Hi there,
I am working with the MAX32666 on a FTHR2 board. I configured I2C2 as a master like this (simplified for clarity):
... and tied the 10k pullups to 3.3v using jumper J4 on the FTHR2.
With an oscilloscope I found that the SDA and SCL lines had a maximum of around 2.2v, not the expected 3.3v.
Running through the debugger I found that during the
MXC_I2C_Init()
call ini2c_me14.c
amxc_gpio_cfg_t
is used to configure the SDA and SCL pins. This is hardcoded to use VDDIO as the.vssel
field.The init call is here:
msdk/Libraries/PeriphDrivers/Source/I2C/i2c_me14.c
Line 61 in 1430a0c
And the definition of the
mxc_gpio_cfg_t
struct is here:msdk/Libraries/PeriphDrivers/Source/SYS/pins_me14.c
Lines 76 to 77 in 1430a0c
In my main function I added this code to re-initialize the SDA and SCL pins to use VDDIOH after the
MXC_I2C_Init()
call, and this does now bring the high level of both lines to 3.3v:Question: Is this the intended way to use an I2C bus with 3.3v pullups? Is there some more ergonomic config I could do? It seems easy to miss this and then wonder why your pullups aren't pulling all the way to 3.3v. I'm definitely operating under the assumption that I might have missed something here, but if not there might be an opportunity for a slightly cleaner I2C config.
Thanks!
The text was updated successfully, but these errors were encountered: