我们在初学单片机的时候都知道单片机GPIO的作用是巨大的,在配置GPIO的时候,结构体初始化里有一个选项是配置输入输出速度的,对于这个速度输出是必须要配置的,输入没有明令说明需不需要配置。
这个速度对于学习过32单片机的都应该知道,手册中给出了2M、10M和50MHZ的速度,那么这个输出速度到底是什么意思呢?配置成不同的数值有什么影响呢?
I/O口的输出速度指的是高低电平翻转的最快频率,比如你配置的是10MHZ,f = 1/T,那么这个时间周期T就等于100ns。对于单片机的IO口,高低电平变化理论上是一个方波,这也不难理解。实际不是这样的,它会有别的影响,要有上升的时间和下降的时间,对应下图的tr和tf。
为了保障输出的信号波形不失真,能够正确的被识别到,那么tr+tf <= 2/3T才可以,所以频率越高,单片机就要将tr和tf控制的越小。那么如何控制?并不能只能单纯的讲单片机,还要配合单片机IO口驱动的负载。因为输出的信号一般就是用来驱动负载的。
看下图,这里将负载等效为一个负载电容CL,因为只有电容会影响电压变换的频率。右图公式中的C代代表电容,dv/dt代表电压变化的频率。所以,这个速率会影响单片机的功耗。对于信号变化的频率越快,还会涉及到一个叫EMI电磁干扰的问题。
最后,单片机IO输出速度设置根据需求选择即可,并不一定是越大越好。