功能
可以实现对主机和从机的时钟、数字滤波、模拟滤波配置。
环境安装
软件环境 Artery_I2C_Timing_Configuration.exe
(附件压缩包含安装包和配置工具使用指南,需要免费自取)
/**
* @function name:
* - void i2c_init(i2c_type *i2c_x, uint8_t dfilters, uint32_t clk)
* @brief init i2c digit filters and clock control register.
* @param i2c_x: to select the i2c peripheral.
* - this parameter can be one of the following values:
* - I2C1, I2C2, I2C3.
* @param dfilters: number of digit filters (0x00~0x0F).
* @param clk: i2c clock control register (0x00000000~0xFFFFFFFF).
* @retval none
*/
i2c_init(I2Cx, 0, 0x00100101);
3.3 使用步骤
-
选择芯片型号
选择当前使用的芯片型号,例如可以选择 AT32A423。
-
选择设备模式
Master: 主模式,I 2C 作为主机; Slave: 从模式,I 2C 作为从机。
-
选择 I 2C 速度模式
Standard-mode: 标准模式,范围 0~100kHz; Fast-mode: 快速模式,范围 0~400kHz; Fast-mode Plus: 增强快速模式,范围 0~1000kHz。
-
设置 I 2C 速度(单位 kHz)
根据实际需求设置 I 2C 通信速度,例如需要通信速度为 10kHz,那么这里设置为 10。
-
设置 I 2C 时钟源频率(单位 kHz)
根据实际使用的 I 2C 时钟源频率来配置; 例如 AT32A423 I 2C 时钟源为 apb1 peripheral (MHz),当 AT32A423主频为 144 MHz,APB1 分频后为 72 MHz 时,这里设置为 72000(kbit/s)。
-
模拟滤波使能
On:打开; Off:关闭。 模拟滤波使能后,将过滤 50ns 以下的脉冲。
-
数字滤波(范围 0~15)
数字滤波时间 = 数字滤波值 x TI2C_CLK; 其中 TI2C_CLK = 1 / I2C 时钟源频率。 当值为 0 时,数字滤波关闭,当值>0 时将过滤小于数字滤波时间的脉冲。
-
上升时间(tr单位 ns)
SCL 和 SDA 总线的上升沿,如图 18 所示。I 2C 协议中规定了在标准模式(Standard-mode)、快速模式(Fast-mode)、增强快速模式(Fast-mode Plus)下的范围,详情请参照表 1。 上升时间和上拉电阻的阻值关系很大,上拉电阻越小,上升时间越短,可以支持的通信速度就越快,但是功耗也越高。 表 2 中给出了一些常用上拉电阻阻值所对应的上升沿时间,实际可能会因为总线挂的设备数量、布线等差异而有所不同,仅供参考。
-
下降时间(tf单位 ns)
SCL 和 SDA 总线的下降沿,如图 18 所示。 I 2C 协议中规定了在标准模式(Standard-mode)、快速模式(Fast-mode)、增强快速模式(Fast-mode Plus)下的范围,详情请参照表 1。
-
产生代码
点击产生代码,上诉配置的值,将会以代码的形式产生出来, 代码如本文第一张图右下角框所示,只需要将右侧输出的代码替换到自己的程序即可。 我就不在重复了,贴一下图如下(需复制见文章开头)