zhames 发表于 2015-10-16 10:27:13

KL03 I2C的时钟源问题


KL03的RM里说的是I2C模块的时钟源自系统时钟(system clock)





而KSDK里配置I2C时钟时使用的时钟源是总线时钟(BusClock)

/* Get the current bus clock.*/
i2cClockFreq = CLOCK_SYS_GetI2cFreq(instance);
I2C_HAL_SetBaudRate(base, i2cClockFreq, device->baudRate_kbps, NULL);

static inline uint32_t CLOCK_SYS_GetI2cFreq(uint32_t instance)
{
    return CLOCK_SYS_GetBusClockFreq();
}


uint32_t CLOCK_SYS_GetBusClockFreq(void)
{
    return CLOCK_SYS_GetSystemClockFreq() / (CLOCK_HAL_GetOutDiv4(SIM) + 1);
}


实际测试KSDK里的i2c_comm_mstr_frdmkl03z例程时,时设置baudRate_kbps = 100U, 测出I2C时钟是192.3k



求释疑。



FSL_TICS_ZP 发表于 2015-10-16 14:06:15

I2C时钟源是System clock的,你的KSDK用得是什么版本?

zhames 发表于 2015-10-16 14:51:52

FSL_TICS_ZP 发表于 2015-10-16 14:06
I2C时钟源是System clock的,你的KSDK用得是什么版本?


KSDK_1.2.0

FSL_TICS_ZP 发表于 2015-10-19 14:34:08

zhames 发表于 2015-10-16 14:51
KSDK_1.2.0

应该是System clock,我会把此问题report给SDK开发的AE
谢谢
页: [1]
查看完整版本: KL03 I2C的时钟源问题