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

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

[复制链接]
lkl0305 发布时间:2014-1-16 11:03
板子早就收到了,但未能及时上传笔记,最近几天学习了STM32F0的I2C硬件编程,整理了一个小的关于I2C结构体初始化中时间寄存器的配置的内容。给大家共享一下,共同学习。
今天先发一部分使用方法,整理好后给大家发一个完整的程序。
一、问题
在使用STM32F0xx处理器操纵硬件I2C时,在初始化GPIO后要进行I2C结构体初始化,其结构体成员为:
uint32_t  I2C_Ack                   //允许或禁止应答
uint32_t  I2C_AcknowledgedAddress   //配置7位或10位地址
uint32_t  I2C_AnalogFilter          //允许或禁止模拟滤波器
uint32_t  I2C_DigitalFilter         //允许或禁止
uint32_t  I2C_Mode                  //设置工作模式
uint32_t  I2C_OwnAddress1           //设置自身器件地址
uint32_t  I2C_Timing                //设置I2C时间寄存器的值
其中时间寄存器(I2C_TIMINGR_REGISTER)的值的设置需要参考ST公司的配置工具(I2C_Timing_Config_Tool)。
经过查阅资料,本文说明此工具的使用。
二、工具使用
ST公司提供了I2C时间寄存器配置工具帮助我们进行相应的配置,工具使用EXCEL结合VBA写成。打开后界面如下图1所示。

图1 I2C时间寄存器配置工具界面
具体含义及使用步骤如下:
1、选择器件模式:在“Device Mode”中有主模式(Master)和从模式(Slave)两个选项。
2、配置I2C的速度模式:在“I2C Speed Mode”中有标准模式(Standard mode)、快速模式(Fast mode)和增强快速模式(Fast mode Plus)选项。
(1)标准模式:最大时钟频率100KHz。
(2)快速模式:最大时钟频率400KHz。
(3)增强快速模式:最大时钟频率1000KHz。
3、如果在主模式(Master)下,设置I2C时钟频率(单位为KHz)。
4、设置I2C时钟源频率(I2C Clock Source Frequency)值(单位为KHz)。
5、确定是否启用模拟滤波器(Analog Filter Delay)。
6、确定是否使用数字滤波器(Coefficient of Digital Filter,不启用数字滤波器此处设置为0;如果启用数字滤波器,应设置为1-15,表示1到15个I2C外设时钟)。
7、设置I2C的上升时间(Rise Time)。
8、设置I2C的下降时间(Fall Time)。
9、单击运行(RUN)按钮。
(1)如果时间寄存器计算完成,则会弹出计算完成提示框,可以使用计算的结果来初始化I2C结构体(双击TIMINGR Register Value可以复制计算出来的值)。
(2)如果时间寄存器计算失败,则会弹出计算失败提示框,需要修改参数重新计算。
三、实例
若要求STMF0xx处理器I2C工作在:
(1)主机标准模式
(2)100KHz频率
(3)I2C时钟频率32000KHz
(4)使用模拟滤波器
(5)不使用数字滤波器
(6)上升时间100ns
(7)下降时间10ns
(8)采用7为地址
(9)允许应答
则按图1参数输入,点击运行(RUN)按钮,时间寄存器需要设置的值即可计算出来(0x20D22E37)。
则可以用下面代码初始化I2C结构体变量
/*----------------声明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;
I2C_InitStructure.I2C_OwnAddress1 = 0x00;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStructure.I2C_Timing = 0x20D22E37;
/*----------------调用 I2C_Init() 函数-------------------------------------*/
I2C_Init(I2C1, &I2C_InitStructure);
I2C Timing.png

I2C_Timing_Configuration_V1.0.0.rar

下载

229.22 KB, 下载次数: 2357

I2C timing configuration tool for STM32F3xxxx and STM32F0xxxx microcontrollers.pdf

下载

391.97 KB, 下载次数: 1479

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

举报

30个回答
传说哥001 回答时间:2017-11-23 19:42:53
I2C时钟频率32000KHz,比较好奇这个是怎么弄出来的。
沐紫 回答时间:2014-1-20 08:50:38

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

顶!多谢分享~
 
继续阅读原创汇总:
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
谢谢分享!


futu.png
yuankunli 回答时间:2016-8-9 20:10:19
让我困惑了一天 刚才STM32F1转而使用F0,这个时间参数都不知道怎么计算
尘土-347769 回答时间:2016-9-7 15:01:19
多谢大神分享经验,很有用
小牛555 回答时间:2017-3-10 15:17:36
感谢楼主,通过这个帖子解决我一个大问题。
laishipeng 回答时间:2017-3-21 18:56:51
软件怎么下载?
laishipeng 回答时间:2017-4-24 17:48:10


知道了,原来个 Excel文件就是那个软件....
我用的Microsoft Office Excel  版本比较低,一直都弄不出来,还以为就是一个图,
哎,这就坑了...
1234下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

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