电子说
单片机与外围设备,单片机与单片机之间进行通信,通俗点说就是数据传输,数据传输的方式有多种,我们经常用到的就有串口通信、IIC通信、RS232,485,CAN总线等等。目前在中小学实验室中,学生们操作开源硬件,用到的通信方式以IIC,串口通信居多。今天咱们就先来聊聊串口通信。
单片机的CPU和外界通信时采用的是并行模式,为什么采用并行模式?大家只要稍微一思考就能想出答案。并行通信指的是数据(以8位为基数)在传输时一次同时发送8个位,打个比方,这就像8个人同时去打水,每人提一个水桶,那怎样才能在最短的时间内将8个水桶装满水呢?那当然是用8个水龙头同时为8个水桶装水,每个水龙头装一个桶,8个水龙头相互之间各不影响。单片机的接口与外部设备进行通信时则是采用串行通信模式,所谓串行通信模式,就是数据按照顺序一位一位的传输,数据的传输具有时间上的先后顺序。同样打个比方,8个人去提水,只有一个水龙头,这8个人就要一个一个排队,装满一个水桶再装下一个水桶。很显然,并行通信比串行通信速度更快。
采用并行通信,由于在同一时间内需要同时发送或接收8个位的数据,每个数据占据一个数据位,就需要8条数据线来进行数据传送与接收,在提高传输速度的同时牺牲了硬件资源;而采用串行通信,数据是一个位一个位的按顺序发送或接收,那就只需要两条数据线就够了,一条用于发送数据,一条用于接收数据。数据传输的速度比不上并行通信,但是节省了大量的硬件资源。
至此,也许你已经对串口通信有了初步认识,但是,还没结束。我们在应用串口通信时还会遇到一些专业术语知识,下面我再给大家简单介绍一下:
1、串口连接。单片机进行串口通信时总是要求实现数据的双向传输,即发送数据和接收数据。在我们的单片机上你会找到串口通信接口,TXD(Transmit Data)数据发送端口和RXD(Receive Data)数据接收端口。单片机在进行串行通信连接时,一方的TX数据发送端要接另一方的RX数据接收端;RX数据接收端接另一方的TX数据发送端。即你发我收,我发你收。当然还要为单片机提供电源,这个就不用多说了吧!
2、波特率(bps)。bits per second,比特/秒。也叫做比特率,只是音译上的区别而已。它反应的是每秒进行通讯的位数。我们经常看到电脑网络连接速度XXMbps,即是指每秒钟处理数据的个数为XX兆位。
3、数据模式。这里就要为大家介绍下数据位、停止位、校验位的概念。
数据位是衡量通信中实际数据位的参数。当计算机发送一个信息包时,实际的数据不一定全是8位的,标准的值是5、6、7和8位。究竟是几位取决于实际传送的信息。我们都知道一个字节是8个位。标准的ASCII码是0~127(7位)。而扩展的ASCII码则是0~255(8位)。如果数据使用标准 ASCII码,那么每个数据包就是7个数据位。每个数据包是指一个字节,包括开始/停止位,数据位和校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
停止位用于表示一个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的时差,导致不同步。因此停止位不仅仅是表示传输的结束,它还提供计算机校正时钟同步的机会。停止位的位数越多,时钟校正的程度越大,数据传输率同时也越慢。
检验位是串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。也可以没有校验位。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶数个或者奇数个逻辑1。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑1的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑1位。高位和低位不是真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,判断通信是否受到干扰或者传输和接收数据是否同步。
一般在默认的情况下为“8N1”模式,即8位数据位,无(None)校验,1位停止位。
相信通过以上介绍,你已经对串口通信又有了更深的理解。真正掌握串口通信原理还需要在实践中不断探索。
编辑:hfy
全部0条评论
快来发表一下你的评论吧 !