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

429 I2C CR2怎么设置?

[复制链接]
winamp123 提问时间:2014-11-30 18:29 /
429主频180M, APB1 45MHz. 而手册上写CR2 FREQ最多设置APB是42M。 请问429 I2C是怎么设置的?有没有例子?
收藏 评论2 发布时间:2014-11-30 18:29

举报

2个回答
Dylan疾风闪电 回答时间:2014-12-11 10:33:39
本帖最后由 Dylan疾风闪电 于 2014-12-11 10:36 编辑

官网的STM32F429I-Discovery例程中有I2C的例子。
--------------------------------------------------------------
下面的附件截取自STM32F429探索套件官方例程“stm32cubef4\STM32Cube_FW_F4_V1.1.0\Projects\STM32F429I-Discovery\Examples\I2C”
本论坛内的下载地址是:https://www.stmcu.org.cn/document/list/index/category-634
--------------------------------------------------------------

I2C.rar (209.93 KB, 下载次数: 8)
wamcncn 回答时间:2014-12-11 20:11:07
首先配置 I2C

1. 通过 APB 复位 I2C, 使能 I2C 时钟

2. 使能 GPIO 时钟,  配置 GPIO 在 AF OD 模式

3. 使能 I2C ( PE="1")

4. 设置速度参数 FREQ CCR F/S DUTY TRISE

A : CR2.FREQR = 期望的I2C时钟, 一般设置为最大的时钟
确定了 Tck = 1 / FREQ -- 类似于 CANBus 的时间片 Tq

B : PE="0", 设置适当的 CCR F/S DUTY 以及 TRISE, PE="1"

标准模式 Tlow  : Thigh = 1 : 1

快速模式 Tlow : Thigh = 2 : 1 ( DUTY="0")

快速模式 Tlow : Thigh = 16 : 9 ( DUTY="1")

以上类似于 CANBus 的 Tseg1, Tseg2

设置 CCR 决定了时钟高低占用的 Tck 个数, 同时确定了时钟的Tbus

标准模式 Tbus = 2 Tck * CCR

快速模式 Tbus = 3 Tck * CCR

快速模式 Tbus = 25 Tck * CCR

首先设置 Tck, 然后根据期望的 TBus 设置 CCR F/S DUTY

假设 Tck = 125ns ( FREQ = 8 Mhz), 期望 100 khz Tbus="10us",  上升时间 Tr = 1000 ns

采用标准模式 F/S = 0  : CCR = Tbus / 2  / Tck = 10 000 /  (1+1)  / 125 = 40 = 0x28

TRISE = ( Tr / Tck ) + 1 = ( 1000 / 125 ) + 1 = 0x09

5. 配置 I2C 模式 : CR1 = ( ACK="1", SMBUS="0",  PE="1" )

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版