马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 wadezhu 于 2017-4-9 15:36 编辑
最近调试 一款 IQS333 电容触摸按键芯片IC,调了好几天发现I2C端口上没数据。最后追STM Clock tree 和STM 提供的I2C_Timing_Configuration工具解决了这个问题。现在分享给大家。 1. 首先我们观察Clock tree 查看 I2C clock source的缘由。
由 Clock tree可以得出I2C clock source 可以选择使用内部8MHz时钟,还是选用的系统SYSCLK. 本人选用的是STM32F030开发板。开发使用的是8MHz的外部晶振。所以采用外部8MHz时钟为例。 根据下面的 clock source时钟走势进行RCC 模块配置:
从走势我们可以看出我们需要确定PREDIV,PLLSRC,PLLMUL,SW和I2C1的源输入选择。 Clock configuration register 2 (RCC_CFGR2)
Clock configuration register (RCC_CFGR)
最后配置RCC相应的PREDIV,PLLSRC,PLLMUL,SW得到PLLCLK为48MHz. 并且STM32厂商提供得了I2C时钟配置的工具。
根据STM32厂商提供的配置I2C时钟说明,根据自己的应用我的配置如下:
因此在配置I2C的使用Timing的值如下
然后配置相应的I2C管脚,代码如下:
I2C多字节写实现
I2C多字节读实现 |