STM32-自学笔记(5.丰富多样的外部设备下)

 

通信接口

5个通信接口设备。用于IC间通信的SPI和I2C接口,用于控制局域网通信的CAN总线接口,与PC通信的USB接口,还有最常见的通用同步/异步串口USART。

1.串行外设接口(SPI)

为了能够和其他IC进行通信,STM32配备2个SPI接口。并提供高达18MHz的全双工SPI通信。但要特别注意,有一个SPI接口位于满速为72MHz的APB2高速总线上,而另外一个SPI接口则挂载在满速为36MHz的APB1低速总线上。用户可以对每个SPI设备的时钟极性和相位进行定制。其发送数据的长度可以为8位或16位,还可以选择从最高位还是最低位开始发送。每个SPI 都可以扮演主机或从机和其他SPI设备进行通信。

STM32-自学笔记(5.丰富多样的外部设备下)
为了更好的发挥SPI(最大18MHz)的特性,每个SPI 设备都可以申请两个DMA传输通道,一个用于数据发送,一个用于数据接收。SPI接口在DMA的支持下,很容易实现纯硬件运作的高速数据双向传输。除了具备基本的SPI特性之外,STM32的SPI还包括两个硬件CRC单元,一个用于数据发送过程中的CRC校验,一个用于数据接收过程中的CRC校验。每个CRC单元都可以CRC8和CRC16的校验。

 

2.两线串行总线接口(I2C)

STM32还用I2C总线接口和其他IC通信,扮演总线上的主机和从机。I2C接口支持I2C总线上的多主机仲裁机制。支持I2C的标准100kHz,也支持高速400kHz。还支持7位或者10位地址模式。使用I2C接口可以很轻易的从I2C总线上实现数据存取,用户要通过软件来控制I2C的启动,实现与不同器件的通信。I2C接口部分提供两个中断源:传输错误中断和数据传输期间的阶段性中断。此外,还有2个DMA通道与I2C设备的数据缓存区连接。若启用I2C接口上的DMA支持,一旦I2C总线上的地址数据传输完毕。将由硬件来接管数据进出STM32的过程。

STM32-自学笔记(5.丰富多样的外部设备下)
此外STM32上的I2C还加入了一些比普通I2C更高级的特性。如:硬件信息错误检测单元(PEC)。

STM32上的I2C接口还支持两种通信协议:系统管理总线(SMBus)协议,电源管理总线(PMBus)协议。

 

3.通用同步/异步串行接口(USART)

通用同步/异步串行通信接口在大部分PC机上被取消了 ,但在嵌入式芯片中,USART仍然使用最广泛。STM32配备了3个增强型USART接口,并都支持最新的通信协议。每个USART的最大通信速率位4.5Mbps。它是一个全面定制的串行通信口,其数据长度,波特率,停止位等都是可以设置的。3个USART中,其中一个是挂载在APB2总线上,另外两个挂载在APB1总线上。

STM32-自学笔记(5.丰富多样的外部设备下)
每个USART的波特率产生器可以产生精确到小数级别的波特率。和其他通信接口一样,每个USART配备两个DMA通道,用来接管USART数据寄存器和内存之间的数据进出。STM32的USART支持数种特殊通信模式,也可以使用Tx单线实现半双工通信。如图

STM32-自学笔记(5.丰富多样的外部设备下)
USART还支持同步通信,可以和3线SPI总线连接。

STM32-自学笔记(5.丰富多样的外部设备下)


4.CAN接口和USB接口