串口通信为异步通信,即发送和接收数据的时钟信号不同步。因此,在串口接收数据时,必须在正确的时刻读取数据。如果串口接收引脚设置成输入模式,但没有接收到有效数据时,引脚电平可能会偶尔处于高电平或低电平状态,导致输入电压不稳定,可能被误认为是一个有效的数据位。因此,为避免误读,串口接收引脚一般都设置成浮空输入。
所谓浮空输入就是将引脚连接到电路的一端,而另一端保持未连接或被接地。这样,当串口没有接收到有效数据时,引脚电平就处于未连接的状态,不会被误认为是一个有效的数据位。
当同一个串口信号被多个设备共享时,容易出现电平冲突。如果串口接收引脚设置成输出模式,当这个引脚被某一个设备设置成高电平时,其他设备如果在此时将引脚设置成低电平,就会发生电平冲突。为了避免这种情况出现,串口接收引脚一般都设置成浮空输入。
在浮空状态下,引脚电平不会影响其他设备的输入或输出状态,也就不会发生电平冲突。
如果串口接收引脚设置成输入模式,但没有接收到有效数据时,引脚电平可能会偶尔处于高电平或低电平状态,导致电路消耗不必要的能量。而将引脚设置成浮空输入后,引脚处于未连接状态,电路的能耗会进一步降低。
一些常见的串口控制器,如STC单片机、51单片机、AVR等,都通常将串口接收引脚设置成浮空输入。
以STC单片机为例,其UART通信引脚(P3.0和P3.1)具有上拉电阻,并默认设置为浮空输入模式,以便外部设备接口可以自由控制传输方向和传输速率。