我编写程序用过STM32F411上的I2C,STM32F446上的I2C.
最近发现STM32F446上还有叫 FMPI2C 的硬件,寄存器表和 I2C 部分不一样,直接写寄存器操作的话是无法兼容了。因为新画的板子I2C是连在FMPI2C的I/O上,原来的程序得改。
读了读手册发现 FMPI2C 并不仅仅是多了支持 Fastmode Plus (1Mbps),硬件设计用起来要方便些。比如有一个传输数据量的控制寄存器,比如读写数据寄存器分开。
我好奇在哪些STM32上有FMPI2C,于是查了机器上下载过的其它手册,观察I2C部分的寄存器表,发现的确存在两个版本的I2C硬件,名字可能都叫I2C.
F0x0, F0x2, L476, L432, F746, F722, F767 I2C都是新的
F10x, F411, F407, F429 只有老I2C
F446, F413 新老共存(分为I2C, FMPI2C)
|