工具/软件:Starterware
您好,
我的客户提出的一个问题是有关 StarterWare 中的 I2C 时钟软件配置的问题。 感谢你的帮助!
/*********
* API 函数定义
秘书长的报告 /
/**
*\brief 此 API 将对馈入 I2C 模块的系统时钟进行分频
* 12和100Mhz。它还将配置 I2C 总线时钟频率。
*
*\param baseAdd 这是所用 I2C 实例的存储器地址。
*\param SYSCLK 这是馈送到 I2C 模块的系统时钟。
*\param internalClk 这是 I2C 模块使用的内部时钟、即
* 通过调节馈入 I2C 模块的系统时钟获得。
*\param outputClk 这是所需的 I2C 总线速度或频率。
*
*\返回 无。
**/
void I2CMasterInitExpClk (unsigned int baseAdd、unsigned int SYSCLK、
unsigned int internalClk、unsigned int outputClk)
{
unsigned int 预分频器;
unsigned int 分频器;
/*计算预分频值*/
预分频器=(SYSCLK /内部时钟)- 1;
HWREG (baseAdd + I2C_PSC)=预分频器;
分频器= internalClk/outputClk;
分频器=分频器/2;
HWREG (baseAdd + I2C_SCLL)=分频器- 7;
HWREG (baseADD + I2C_SCLH)=分频器- 5;
}
分压器=分压器/2; 为什么需要 将驱动器分为两个分压器?
我n‘t 了所有数据表、但我无法回答。 有寄存器 I2C_SCLL 的说明
快速/标准模式 SCL 低电平时间。
仅 I2C 主模式、(FS)。
当时、这个8位值被用来生成 SCL 低电平时间值(Tlow)
外设在主控模式下运行。
低电平=(SCLL + 7)* ICLK 时间周期、复位后的值为低电平(全部为8
位)