你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32F030开发日志/评测/笔记】+(1)STM32F0处理器I2C时间配...  

[复制链接]
lkl0305 发布时间:2014-1-16 11:03
板子早就收到了,但未能及时上传笔记,最近几天学习了STM32F0的I2C硬件编程,整理了一个小的关于I2C结构体初始化中时间寄存器的配置的内容。给大家共享一下,共同学习。- ?4 |: P  I' x8 A. V
今天先发一部分使用方法,整理好后给大家发一个完整的程序。
4 S8 U. o, v) k' X3 g一、问题
1 _1 a2 S1 M3 B) G在使用STM32F0xx处理器操纵硬件I2C时,在初始化GPIO后要进行I2C结构体初始化,其结构体成员为:
5 q, ?* d+ a8 _# R! X: Uuint32_t  I2C_Ack                   //允许或禁止应答2 o' u5 y9 C" |+ d- E
uint32_t  I2C_AcknowledgedAddress   //配置7位或10位地址
5 H9 R) N- `: {uint32_t  I2C_AnalogFilter          //允许或禁止模拟滤波器
. ?7 L) |" u" R" ^6 d# u1 p5 wuint32_t  I2C_DigitalFilter         //允许或禁止7 f1 V- o  w6 u: ]" L
uint32_t  I2C_Mode                  //设置工作模式
8 D0 |1 e" r: I6 N# c) N9 xuint32_t  I2C_OwnAddress1           //设置自身器件地址' ~8 R7 b! O7 r- B  p. X4 E: U
uint32_t  I2C_Timing                //设置I2C时间寄存器的值' W8 k2 m, f' r* f
其中时间寄存器(I2C_TIMINGR_REGISTER)的值的设置需要参考ST公司的配置工具(I2C_Timing_Config_Tool)。
  I) C& B' P$ T) v经过查阅资料,本文说明此工具的使用。
3 ]5 K5 H) _# u! C: n: |二、工具使用
5 ?- w4 e4 d* Y) x- j( CST公司提供了I2C时间寄存器配置工具帮助我们进行相应的配置,工具使用EXCEL结合VBA写成。打开后界面如下图1所示。. d3 o$ {7 C5 A- N5 O, Q$ F

, i9 S; j5 x0 f: y8 O: o7 M图1 I2C时间寄存器配置工具界面! c0 q% S  k5 a7 J4 L
具体含义及使用步骤如下:
( M  I2 {# N+ h, S4 ]/ q; b  s1、选择器件模式:在“Device Mode”中有主模式(Master)和从模式(Slave)两个选项。
9 W+ o& U" \  m+ e' g4 y. N2、配置I2C的速度模式:在“I2C Speed Mode”中有标准模式(Standard mode)、快速模式(Fast mode)和增强快速模式(Fast mode Plus)选项。
& y2 G( a9 m! G1 B! U(1)标准模式:最大时钟频率100KHz。
, q8 E: M& A0 z(2)快速模式:最大时钟频率400KHz。! k+ o% X8 Z/ `6 H* @. r
(3)增强快速模式:最大时钟频率1000KHz。
* V1 O5 `9 ]+ Q. n' y$ |* `/ z3、如果在主模式(Master)下,设置I2C时钟频率(单位为KHz)。0 e* \) V8 d' q7 {
4、设置I2C时钟源频率(I2C Clock Source Frequency)值(单位为KHz)。
$ R. B3 S! \* o. ^5、确定是否启用模拟滤波器(Analog Filter Delay)。  M$ m1 T, @  Y9 Z* Q5 e9 M% j
6、确定是否使用数字滤波器(Coefficient of Digital Filter,不启用数字滤波器此处设置为0;如果启用数字滤波器,应设置为1-15,表示1到15个I2C外设时钟)。- J* p3 v. t& T8 W5 S
7、设置I2C的上升时间(Rise Time)。4 e7 M4 N; O- _, M% W( V
8、设置I2C的下降时间(Fall Time)。9 ]5 b  N0 {) `0 v: w. Q9 u7 W
9、单击运行(RUN)按钮。1 S' x8 T; k# @1 m/ N, Y0 [" ?
(1)如果时间寄存器计算完成,则会弹出计算完成提示框,可以使用计算的结果来初始化I2C结构体(双击TIMINGR Register Value可以复制计算出来的值)。
& L9 R6 V+ r8 I- |$ |! {(2)如果时间寄存器计算失败,则会弹出计算失败提示框,需要修改参数重新计算。/ I, G+ N* e! Q  O: I2 q
三、实例
+ j2 e- q; X6 X- C9 M若要求STMF0xx处理器I2C工作在:
1 R% E/ O) r% e( y% ]7 k: f- H+ i2 B(1)主机标准模式
" `! Y$ U! k  Y8 L" j9 f(2)100KHz频率
# b' R. W8 ~" |3 f8 W8 O1 w* u* m7 z(3)I2C时钟频率32000KHz
& v) F. n- A/ y* u4 U; E(4)使用模拟滤波器* z& C- l' D7 ]# E
(5)不使用数字滤波器% R) q1 p8 Q, ]. F, l0 }
(6)上升时间100ns1 [4 D! {4 Q/ S5 N7 D
(7)下降时间10ns
" ]3 B4 K. p# N- H/ W: n6 P' I(8)采用7为地址
+ |8 v7 w2 H- S3 K9 u! d+ f* D( j(9)允许应答# r- ?6 T! P9 K% W3 m
则按图1参数输入,点击运行(RUN)按钮,时间寄存器需要设置的值即可计算出来(0x20D22E37)。3 ?9 g( h+ m  @/ K3 B
则可以用下面代码初始化I2C结构体变量
8 G7 C- j; O, a2 w. b" Q/*----------------声明I2C初始化结构体----------------------------------*/2 h) H. X3 a# D  c* G
I2C_InitTypeDef I2C_InitStructure;
, Y- J5 d: u& f/*----------------初始化I2C机构体----------------------------------------*/
2 \; b' E. ~, x! L! s- D* S* C, ]8 vI2C_InitStructure.I2C_Mode = I2C_Mode_I2C;3 `  }6 b- \2 C7 }7 h5 K- f
I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable;2 T% a" w/ p9 H$ C. w$ ~9 M
I2C_InitStructure.I2C_DigitalFilter = 0x00;4 K$ N: e6 m7 N4 n; ]) H  Y& H
I2C_InitStructure.I2C_OwnAddress1 = 0x00;
4 V; j3 T) {. P2 K8 R9 V2 dI2C_InitStructure.I2C_Ack = I2C_Ack_Enable;" c9 k( ?; b+ v4 w2 `% ?) |: H4 I$ K, e
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
4 n- _/ V6 S4 Y: x( `# }I2C_InitStructure.I2C_Timing = 0x20D22E37;
3 }7 k4 p# Y( m: i! Y1 ~) p/*----------------调用 I2C_Init() 函数-------------------------------------*/( w: |% P7 @& A; R. D
I2C_Init(I2C1, &I2C_InitStructure);
I2C Timing.png

I2C_Timing_Configuration_V1.0.0.rar

下载

229.22 KB, 下载次数: 2418

I2C timing configuration tool for STM32F3xxxx and STM32F0xxxx microcontrollers.pdf

下载

391.97 KB, 下载次数: 1504

收藏 13 评论30 发布时间:2014-1-16 11:03

举报

30个回答
a93749 回答时间:2017-11-23 19:42:53
I2C时钟频率32000KHz,比较好奇这个是怎么弄出来的。
大海.Leon 回答时间:2017-11-18 22:59:49
你好,可以提供一些STM32F030F4的有关IIC操作的资料吗?我刚入手STM32F030,怎么样学习他的IIC的相关资料呢?先有一个问题有关IIC的从机模式的数据发送,外部主机和STM32F030F4通信一次后,就再也联系不上从机;我想尽快解决这个问题,可以帮到我吗,谢谢。
大海.Leon 回答时间:2017-11-18 22:59:35
你好,可以提供一些STM32F030F4的有关IIC操作的资料吗?我刚入手STM32F030,怎么样学习他的IIC的相关资料呢?先有一个问题有关IIC的从机模式的数据发送,外部主机和STM32F030F4通信一次后,就再也联系不上从机;我想尽快解决这个问题,可以帮到我吗,谢谢。
沐紫 回答时间:2014-1-20 08:50:38

RE:【STM32F030开发日志/评测/笔记】+(1)STM32F0处理器I2C时间配置工具使用

顶!多谢分享~7 ?" W& C4 Y0 r3 g7 L) `
 
$ ^9 y3 w: M1 y- g0 q继续阅读原创汇总:  o( T3 `1 @- Y$ a
STM32F030探索套件开发日志,中文教程,使用问答80篇
wenting920 回答时间:2015-4-21 13:52:20
mark.....I2C 是内伤,有阴影的飘过……
平山村栋爷 回答时间:2015-10-28 15:19:22
哪位大神有F030K6T6的工程模板啊,求
bjflsk 回答时间:2015-10-28 17:12:25
谢谢分享!9 M/ d0 r' J/ W0 B/ Q- M
! V( c: {" {' ?1 R: D
. g" n7 J% ^1 t" N: S- R- j
futu.png , e! X2 O1 _! g
yuankunli 回答时间:2016-8-9 20:10:19
让我困惑了一天 刚才STM32F1转而使用F0,这个时间参数都不知道怎么计算
Springyoung 回答时间:2016-9-7 15:01:19
多谢大神分享经验,很有用
小牛555 回答时间:2017-3-10 15:17:36
感谢楼主,通过这个帖子解决我一个大问题。
laishipeng 回答时间:2017-3-21 18:56:51
软件怎么下载?6 t% ]- D  y. E6 l6 J) @
laishipeng 回答时间:2017-4-24 17:48:10
laishipeng 发表于 2017-3-21 18:56
* w- |6 d# U( j6 H9 ^软件怎么下载?
- g7 q, n  @6 A8 G) C- ~3 `3 x

* l/ u' z. d# d  `! m& \: r知道了,原来个 Excel文件就是那个软件..... o9 A8 h$ p, B1 M- u: F* n
我用的Microsoft Office Excel  版本比较低,一直都弄不出来,还以为就是一个图,0 ]4 S  ^8 Y& x, P4 u# r
哎,这就坑了...
gdyn2 回答时间:2017-10-9 12:47:37
这个软件怎么用啊?我下载了,点击窗口没响应,动不了额,修改不了参数。是和Excel版本有关吗?那能够正常使用软件的Excel版本是哪个?静待大神解除疑惑
gdyn2 回答时间:2017-10-9 21:42:06
需要安装插件,知道了
123下一页

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版