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

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)
wambob 回答时间: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版