
板子早就收到了,但未能及时上传笔记,最近几天学习了STM32F0的I2C硬件编程,整理了一个小的关于I2C结构体初始化中时间寄存器的配置的内容。给大家共享一下,共同学习。5 @, e) c& X8 N; K1 ?: q1 y 今天先发一部分使用方法,整理好后给大家发一个完整的程序。7 \) S4 N8 n4 J 一、问题 在使用STM32F0xx处理器操纵硬件I2C时,在初始化GPIO后要进行I2C结构体初始化,其结构体成员为:2 B: h; }# z8 B uint32_t I2C_Ack //允许或禁止应答 uint32_t I2C_AcknowledgedAddress //配置7位或10位地址# r8 E' q% U* J) z* a* G& K' M: ]7 b G uint32_t I2C_AnalogFilter //允许或禁止模拟滤波器 uint32_t I2C_DigitalFilter //允许或禁止 uint32_t I2C_Mode //设置工作模式6 P3 g$ k d3 g uint32_t I2C_OwnAddress1 //设置自身器件地址 uint32_t I2C_Timing //设置I2C时间寄存器的值7 v# S% P" u- o: l* i- v' ~+ m 其中时间寄存器(I2C_TIMINGR_REGISTER)的值的设置需要参考ST公司的配置工具(I2C_Timing_Config_Tool)。! W; Q; j9 R8 Z) i 经过查阅资料,本文说明此工具的使用。$ \& \$ A$ {0 w9 h" h* r0 g* Z3 u! ? 二、工具使用 ST公司提供了I2C时间寄存器配置工具帮助我们进行相应的配置,工具使用EXCEL结合VBA写成。打开后界面如下图1所示。 图1 I2C时间寄存器配置工具界面, b2 d$ _: u0 w3 b" d" A 具体含义及使用步骤如下:; m! }: s; k; f& G2 D4 U, G 1、选择器件模式:在“Device Mode”中有主模式(Master)和从模式(Slave)两个选项。2 A) x; {$ C( j3 @ 2、配置I2C的速度模式:在“I2C Speed Mode”中有标准模式(Standard mode)、快速模式(Fast mode)和增强快速模式(Fast mode Plus)选项。7 {0 D$ ~* {, c2 c# j; k (1)标准模式:最大时钟频率100KHz。 (2)快速模式:最大时钟频率400KHz。 (3)增强快速模式:最大时钟频率1000KHz。/ X: Q9 p2 ~% v2 ] 3、如果在主模式(Master)下,设置I2C时钟频率(单位为KHz)。 4、设置I2C时钟源频率(I2C Clock Source Frequency)值(单位为KHz)。 5、确定是否启用模拟滤波器(Analog Filter Delay)。( a* i% e4 |& Q2 Q 6、确定是否使用数字滤波器(Coefficient of Digital Filter,不启用数字滤波器此处设置为0;如果启用数字滤波器,应设置为1-15,表示1到15个I2C外设时钟)。+ f m. Z" I& A% G3 N: | 7、设置I2C的上升时间(Rise Time)。, t; n5 G5 Y& j& L$ e 8、设置I2C的下降时间(Fall Time)。 9、单击运行(RUN)按钮。2 D* R n! [2 o( T" q (1)如果时间寄存器计算完成,则会弹出计算完成提示框,可以使用计算的结果来初始化I2C结构体(双击TIMINGR Register Value可以复制计算出来的值)。 (2)如果时间寄存器计算失败,则会弹出计算失败提示框,需要修改参数重新计算。5 J$ w* w. y! F: k" g 三、实例7 z \9 a c6 s; o 若要求STMF0xx处理器I2C工作在:: ]. p/ Y# c1 C (1)主机标准模式 (2)100KHz频率$ X5 {" j' `* Y0 ~) h, I3 c (3)I2C时钟频率32000KHz+ m* q6 O B P2 A (4)使用模拟滤波器 (5)不使用数字滤波器 (6)上升时间100ns# S* W+ ?/ c( K2 H& A (7)下降时间10ns (8)采用7为地址, N, T9 Y4 W' O8 B+ W (9)允许应答 则按图1参数输入,点击运行(RUN)按钮,时间寄存器需要设置的值即可计算出来(0x20D22E37)。. T- O* g: V0 I" z8 n 则可以用下面代码初始化I2C结构体变量; D# a2 ~, G: |- T1 ^$ Z /*----------------声明I2C初始化结构体----------------------------------*/ I2C_InitTypeDef I2C_InitStructure; /*----------------初始化I2C机构体----------------------------------------*/ I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable; I2C_InitStructure.I2C_DigitalFilter = 0x00;3 r$ ?2 q! G6 B0 k* x, } I2C_InitStructure.I2C_OwnAddress1 = 0x00;1 E& s9 H% P! X; S I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_Timing = 0x20D22E37;7 p4 Y3 o" D2 g/ t% a( s$ t' t O /*----------------调用 I2C_Init() 函数-------------------------------------*/ I2C_Init(I2C1, &I2C_InitStructure); |
RE:【STM32F030开发日志/评测/笔记】+(1)STM32F0处理器I2C时间配置工具使用
* _: u/ G; X0 p7 e0 @- y$ P$ F
继续阅读原创汇总:
STM32F030探索套件开发日志,中文教程,使用问答80篇
8 v3 I# E' u% T* J+ t! f! P7 d2 f
( Q3 ^+ ~+ B, ?, V, i" M
知道了,原来个 Excel文件就是那个软件....
我用的Microsoft Office Excel 版本比较低,一直都弄不出来,还以为就是一个图,
哎,这就坑了...