深圳市航顺芯片技术研发有限公司
登录
直播中
自我清欢
9年用户
986经验值
擅长:可编程逻辑 模拟技术 EMC/EMI设计 光电显示 存储技术
私信
关注
[问答]
如何去使用STM32F0芯片的I2C1工作时钟呢
开启该帖子的消息推送
STM32F0
芯片
时钟
2C1的工作时钟是由哪几部分成的?
如何去使用
STM32
F0芯片的I2C1工作时钟呢?
回帖
(1)
王桂珍
2021-11-1 11:36:02
使用STM32F0芯片的I2C1,根据STM32F0参考手册描述,I2C1的时钟可以自行选择HSI或者SYSCLK。
比如选择HSI作为I2C1的工作时钟时,在用STM32CUBEMX配置生成初始化代码时,还要配置I2C1的APB时钟【如下面截图所示】
这里关于I2C1的工作时钟即source clock,和APB时钟,我们可以把它看成两部分。
一部分是I2C1的工作模块,另外一部分是其控制模块,或者说控制接口模块。
前者的工作时钟可以在HIS和SYSCLK二者间进行选择。
控制模块的时钟仍然由外设时钟PCLK提供,保障外设相关寄存器的正常工作。CPU借助于APB总线访问相关寄存器达到对I2C1工作模块的控制,包括对I2C1模块的开启和关闭。
所以上面代码做两件事:I2C1工作时钟源选择;I2C1模块工作时钟的开启使能。
至于前面提到的“还要配置I2C1的APB”应是一种误解,这里只是通过APB总线访问I2C1控制模块,实质就是通过访问寄存器来控制I2C1工作时钟的开启。
那stm32f070f6p6在cubemx中有配置2个uart,但为什么在clock configuration只有uart1可以配置呢?【如下图】
这个问题跟第一个问题时类似的,只是换了个外设而已。在STM32F070F6P6芯片里,USART1可以有多个时钟源,所以单列出来让用户选择。而USART2固定使用PCLK时钟,只有开启和关闭的问题,不存在其它时钟源选择。所以STM32CUBEMX就没把它有单列出来。
同样,对于USART1,除了对其工作时钟源做选择外,跟上面I2C1一样,其外设模块时钟也有关闭或使能的问题,CPU通过APB外设总线访问USART1的相关寄存器完成。
小结下,STM32芯片中有多个工作时钟源的外设很常见。不过,我们不要把外设工作时钟和CPU访问它的外设总线时钟混为一谈。很多情况下,外设工作时钟来源于其总线时钟,将总线时钟进行分频或倍频后再作为外设工作时钟。当然也有诸如上面提到的情况,外设工作时钟源跟其外设总线时钟没有关系,只是外设控制接口挂在外设总线上。还是以上面谈到的STM32F0芯片为例,ADC外设的工作时钟源也有两个,即HSI14和PCLK;RTC也有多个工作时钟源,如LSE,HSE,LSI。
不管这些外设有多少个工作时钟源,但CPU访问它们还是通过外设总线完成,比如APB总线。也就是说各个外设都是挂在相应的外设总线上的。本质上讲,CPU通过外设总线访问各外设的寄存器来发布指令或获取数据及状态,从而实现对各个外设工作的管控。
使用STM32F0芯片的I2C1,根据STM32F0参考手册描述,I2C1的时钟可以自行选择HSI或者SYSCLK。
比如选择HSI作为I2C1的工作时钟时,在用STM32CUBEMX配置生成初始化代码时,还要配置I2C1的APB时钟【如下面截图所示】
这里关于I2C1的工作时钟即source clock,和APB时钟,我们可以把它看成两部分。
一部分是I2C1的工作模块,另外一部分是其控制模块,或者说控制接口模块。
前者的工作时钟可以在HIS和SYSCLK二者间进行选择。
控制模块的时钟仍然由外设时钟PCLK提供,保障外设相关寄存器的正常工作。CPU借助于APB总线访问相关寄存器达到对I2C1工作模块的控制,包括对I2C1模块的开启和关闭。
所以上面代码做两件事:I2C1工作时钟源选择;I2C1模块工作时钟的开启使能。
至于前面提到的“还要配置I2C1的APB”应是一种误解,这里只是通过APB总线访问I2C1控制模块,实质就是通过访问寄存器来控制I2C1工作时钟的开启。
那stm32f070f6p6在cubemx中有配置2个uart,但为什么在clock configuration只有uart1可以配置呢?【如下图】
这个问题跟第一个问题时类似的,只是换了个外设而已。在STM32F070F6P6芯片里,USART1可以有多个时钟源,所以单列出来让用户选择。而USART2固定使用PCLK时钟,只有开启和关闭的问题,不存在其它时钟源选择。所以STM32CUBEMX就没把它有单列出来。
同样,对于USART1,除了对其工作时钟源做选择外,跟上面I2C1一样,其外设模块时钟也有关闭或使能的问题,CPU通过APB外设总线访问USART1的相关寄存器完成。
小结下,STM32芯片中有多个工作时钟源的外设很常见。不过,我们不要把外设工作时钟和CPU访问它的外设总线时钟混为一谈。很多情况下,外设工作时钟来源于其总线时钟,将总线时钟进行分频或倍频后再作为外设工作时钟。当然也有诸如上面提到的情况,外设工作时钟源跟其外设总线时钟没有关系,只是外设控制接口挂在外设总线上。还是以上面谈到的STM32F0芯片为例,ADC外设的工作时钟源也有两个,即HSI14和PCLK;RTC也有多个工作时钟源,如LSE,HSE,LSI。
不管这些外设有多少个工作时钟源,但CPU访问它们还是通过外设总线完成,比如APB总线。也就是说各个外设都是挂在相应的外设总线上的。本质上讲,CPU通过外设总线访问各外设的寄存器来发布指令或获取数据及状态,从而实现对各个外设工作的管控。
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32F0
芯片
时钟
STM32F
407IGT:
I2C
3正常
工作
但
I2C1
和
I2C2
有问题怎么处理?
2023-01-05
261
如何对
STM32F0
芯片
与
STM32F1
芯片
进行配置
呢
2021-11-17
1996
如何使用
stm32f0
的硬件
I2C
去
驱动MPU9250 & MS5611两个外设
呢
2021-11-19
862
如何
去
实现
stm32F0
和
stm32F
4的printf重定向
呢
2021-12-02
695
STM32F
415的
I2C
行为不正常
2018-09-14
2807
STM32F103C
8 UART
1
,
I2C1
, CAN冲突问题怎么解决?
2024-04-08
320
如何
去
实现一种基于
STM32F0
标准库函数的工程
呢
2021-10-25
842
为什么轮询
I2C1
的BUSY标志与
I2C2
的
工作
方式不同
呢
?
2022-12-20
343
I2C1
它不
工作
怎么办
2020-05-13
1282
STM32F0
产品列表分享
2021-02-02
1566
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分