完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
429主频180M, APB1 45MHz. 而手册上写CR2 FREQ最多设置APB是42M。 请问429 I2C是怎么设置的?有没有例子?
|
|
相关推荐
1个回答
|
|
STM32F429I是一款基于ARM Cortex-M4处理器的微控制器,具有高速I2C接口。在配置I2C接口时,需要正确设置CR2寄存器。CR2寄存器主要用于设置I2C时钟频率和I2C总线速度。
首先,我们需要了解STM32F429I的时钟配置。根据您提供的信息,主频为180MHz,APB1时钟为45MHz。I2C时钟频率(I2CCLK)应小于APB1时钟的1/10,以满足手册中的要求。 接下来,我们可以通过以下步骤设置I2C CR2寄存器: 1. 计算I2C时钟分频值(I2CCLK):由于手册要求I2CCLK应小于APB1时钟的1/10,我们可以将I2C时钟设置为APB1时钟的1/10,即4.5MHz。但是,由于实际硬件可能无法达到这个值,我们可以将其设置为4MHz。 2. 计算I2C时钟分频系数(I2C_CCR):I2C_CCR = (APB1时钟) / (I2CCLK * 3)。将我们计算的I2CCLK值代入公式,得到I2C_CCR = (45MHz) / (4MHz * 3) = 3.75。由于I2C_CCR必须是整数,我们可以将其四舍五入为4。 3. 设置CR2寄存器的FREQ位:根据手册,FREQ位用于设置I2C总线速度。当FREQ为0时,总线速度为标准模式(100kHz);当FREQ为1时,总线速度为快速模式(400kHz)。根据您的需求,可以选择相应的FREQ值。 4. 配置CR2寄存器:将计算得到的I2C_CCR值设置到CR2寄存器的CCR位,并将FREQ位设置为所需的总线速度。 例如,如果您希望使用标准模式(100kHz)的I2C总线速度,可以这样设置CR2寄存器: ```c I2Cx->CR2 &= ~I2C_CR2_FREQ_Msk; // 清除FREQ位 I2Cx->CR2 |= (0 << I2C_CR2_FREQ_Pos); // 设置FREQ为0(标准模式) I2Cx->CR2 &= ~I2C_CR2_CCR_Msk; // 清除CCR位 I2Cx->CR2 |= (4 << I2C_CR2_CCR_Pos); // 设置CCR为4(I2C时钟分频系数) ``` 请注意,这里的`I2Cx`应替换为您正在使用的I2C外设的寄存器地址。 这样,您就可以根据STM32F429I的时钟配置和所需的I2C总线速度,正确设置I2C CR2寄存器。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1658 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1568 浏览 1 评论
996 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
695 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1616 浏览 2 评论
1876浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
662浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
528浏览 3评论
547浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
517浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 06:31 , Processed in 0.836038 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号