一. I2C
STM32F0系列MCU的I2C和SPI是板子上芯片之间最常用的通信方式,I2C有SDA和SCL两个信号构成,电路设计非常简单。
电路设计时,主控的SDA信号接到外围芯片的SDA引脚上,SCL接到外围芯片的SCL引脚上,然后SDA和SCL分别上拉一个上拉电阻到VCC即可,一个简单的参考设计如下图(图一)所示。
I2C总线可以并联多个外围芯片,但注意并上去的这些外围芯片的地址不要冲突,当在I2C总线上并联多个外围芯片时,Layout注意把上拉电阻放在最远端芯片上。
(图一)
二. SPI
SPI相对I2C多了2个信号线,当然数据吞吐量也比I2C的大。SPI主要有片选信号CS、时钟信号SCK、主输入从输出信号MISO、主输出从输入信号MOSI构成。对于走SPI协议的外围芯片,也可以通过放置多个CS信号实现多芯片并联。
一个简单的SPI参考设计如图(图二)所示。主控芯片的SCK、MOSI、MISO对应接到外围芯片I3G425D的对应信号引脚上即可,对于片选信号CS的处理,如果需要并联多个I3G425D,可以任意选择其他GPIO做CS,然后SCK、MOSI、MISO信号直接并联即可,如果不并联,可使用芯片可复用为SPI片选的GPIO。
(图二)
三. USB
STM32F0系列MCU支持USB2.0全速接口,芯片内部已经在DP信号上加了1.5kΩ的上拉电阻,无需在外部再添加。外部也不需要给DM和DP两个信号串联电阻做阻抗匹配,芯片内部已经做了相应处理了。细节在规格书中的第99页的USB characteristics小节详细描述。
USB2.0信号只有2个,DP和DM。如果有USB2.0的产品需求,使用STM32F0系列芯片设计非常简单,我们从规格书第41页的引脚描述找到PA11和PA12,可以看到它们复用功能分别对应USB的DM和DP信号,设计时只需要把他们拉到USB接口上即可,如下图(图三)所示,DM接到USB接口的D-,DP接到USB接口的D+。
(图三)