STM32G0的复用率是很高的,更多的引脚可以被当做GPIO引脚来使用。
G0的GPIO模块与F0的类似,主要有以下区别
STM32F0系统架构
STM32G0系统架构
主要特性
双向操作最多达60个I/O引脚,从GPIOA~GPIOF共5个端口,每个端口最多16个I/O引脚,全部具有外部中断和唤醒功能,使用BSRR和BRR寄存器进行原子操作(置位和复位),每个端口独立配置。
GPIOx直接挂在IOPORT总线上。
大多数I/O引脚能够支持5V容忍。
引脚的基本结构
操作模式
输入模式:悬浮(无上下拉电阻),输入上拉/下拉,模拟输入模式。
输出模式:推挽,带有可选上拉/下拉的开漏。
可配置的输出斜率,速度可达80MHz。
复用功能模式:I/O可以用作不同引脚的配置,复用功能越灵活,用的时候越方便。
用于冻结I/O端口配置的锁定机制(GPIOx_LCKR)。
复用功能
多个集成外设共享相同的I/O引脚,包含USARTx_TX,TIMx_CHx,SPIx_MISO……
复用功能多路选择器选择连接到I/O引脚的外设,一次只有一个复用功能连接到特定的I/O引脚,通过GPIOx _AFRL和GPIOx_AFRH寄存器配置。
重定位GPIOs
PA10和PA9分别可以重映射PA12和PA11这两个GPIO口,为那些在封装上没有提供这些引脚但又想访问它们的引脚功能提供了可能,通过SYS_CFG寄存器重映射。
I/O引脚的特殊注意事项
在复位期间和复位后,复用功能是未激活状态,I/O引脚默认为模拟状态,在复位期间和复位后关闭施密特触发器以降低功耗。
只有SWD调试引脚保持为AF上拉/下拉的配置模式,PA13:SWDIO;PA14:SWCLK(BOOT0)。
I/O管脚在低功耗模式下的状态
中断
EXTI原理图
主要特性
从stop模式唤醒,生成中断和事件,独立的中断和事件屏蔽。
可配置事件:边沿选择;
专门的挂起标志;
可由软件触发;
连接到GPIO,PVD,COMPx。
直接事件:状态标志由相关外设提供;
连接到I2Cx,USARTx,UARTx,LPUARTx,SPIx。
GPIO MUX从STSCFG移到EXTI
EXTI线重映射
DMA
G0的DMA控制器与F0的类似,但是多了一个多路复用控制器DMAMUX。
G0 DMA特性
减少CPU负载,用于从内存映射源到内存映射目标的数据传输。
1x DMA控制器:可编程块传输,具有7个并发通道可以独立配置;
可编程通道优先级;
通过AHB主端口(连接到总线矩阵)传输数据;
1x 新DMA请求多路复用(DMAMUX):可编程映射DMA请求;
事件触发和同步的DMA请求生成。
DMAMUX+DMA的方式最先出现在H7,然后是L4+,好处是使DMA通道对应的外设更加灵活,不再受限。
STM32G0 DMA和DMAMUX示例
DMA特点
外设到内存,内存到外设,和内存到内存的数据传输。
DMA上有7个独立可配置的通道,每个通道要么分配给DMA硬件和外设请求,或者用在内存传输中的软件请求。DMA通道之间的数据传输优先级可配置为非常高、高、中、低。每个通道可各自配置不同的数据传输格式(数据格式、地址增量类型、起始地址、块大小)。各个通道拥有各自的标志位和(块)半传输,(块)传输完成,传输错误等中断。
在总线访问错误的情况下,会自动禁用故障通道。
用于批量数据传输的可编程功能。
DMAMUX结构
DMAMUX特性
DMAMUX是DMA请求多路复用器/路由器。
DMAMUX可将来自任何外设请求路由到7个DMA通道中任意一个中去。
另外的,有4个请求发生器,可配置由本身生成的DMA请求,触发输入及配置如下:
触发选择:EXTI0~15,LPTIM1/2 OUT,TIM14_OC,或4个生成的DMAMUX事
件中任一个。
触发事件:上升沿,下降沿或双边沿。
触发事件时生成的DMA请求数(在请求发生器内置了一个计数器)。
当下一个触发事件到来而之前由生成的DMA请求数尚未完成时,触发器溢中断会通知软件处理。
对于每个DMAMUX请求多路复用器,可以配置:
从外设或者从请求发生器中选择DMA的请求输入,该请求输出连接到DMA控制
器的给定通道。
可配置的同步输入:
同步选择:EXTI0~15,LPTIM1/2 OUT,TIM14_OC或4个生
成的DMAMUX事件中任一个。
同步时间:上升沿,下降沿或双边沿。
同步事件发生时允许通过的DMA请求数。
当下一个同步信号到来之前DMA请求数还没有全部通过时,将会产生溢出中断。
可选生成的DMAMUX事件输出(多路复用器内置了一个计数器),4个DMAMUX事件作为触发输入和同步输入环回到DMAMUX,应用基于DMA通道间链接的场合。
生成的DMA请求和DMAMUX事件
DMA中断
每个通道的中断事件:
半传输:当块数据的一半传输完成时置位;
传输完成:当块传输完成时置位;
传输错误:当数据传输出错时置位;
全局中断:每当半传输、传输完成或传输出错时置位;
DMAMUX中断
中断事件:
请求发生器触发溢出:当下一个触发输入事件到来而之前由DMAMUX生成的DMA请
求数尚未完成时,请求发生器触发溢出标志位会被置位。
请求多路复用器同步溢出:当下一个同步事件到来而之前由DMAMUX生成的DMA请
求数尚未完成时,请求多路复用器同步溢出标志位会被置
位。
低功耗模式下的DMA
互联矩阵
互联矩阵就是一个外设可以触发另一个外设工作,而CPU不用参与。
运用优势:时间可预测的操作;
降低了功耗;
减少了GPIO的使用。
主要特性
外围设备之间的直接自由连接:消除了软件处理方面的延时;
节省了CPU资源;
无需通过专用GPIO去搭建环回信号。
可以在低功耗模式下运行(取决于外设)。
源和目的
源外设
定时器:TIMx,LPTIMx,RTC
模拟IP:ADC,COMPx,DACx,Vreflnt,VBAT,Temp,Sensor
时钟:HSE,LSE,LSI,HSI16,MCO
EXTI
系统错误
目的外设
定时器: TIMx,LP TIMx,IRTIM
模拟IP:ADCx,COMPx,DACx
DMA
低功耗模式
所有互联均可在下述模式下工作:RUN,Sleep,Low-power run和Low-power sleep模式
从RTC,COMP1,COMP2到低功耗定时器的(LPTIM1/LPTIM2)的连接,也适用于stop 0,stop 1和stop 2(仅LPTIM1)模式。
运用示例
定时器同步或链接
触发ADC,DAC或COMP(通过定时器或EXTI)
触发DMA数据从内存到DAC(通过定时器)
校准HSI16/LSI时钟
温度和电压监控
保护定时器驱动的电源开关(定时器系统错误)
红外信号产生(定时器到IRTIM)
定时器同步示例
定时器2可以作为定时器2的预分频器