fpga_feixiang 发表于 2021-1-14 10:38:46

串口通信的接收过程

(异步通信:接收器和发送器有各自的时钟;同步通信:发送器和接收器由同一个时钟源控制。RS232是异步通信)

  (1)开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对“接收时钟”计数。

  (2)当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”,而不是干扰信号。

  (3)接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。若为逻辑1, 作为数据位1;若为逻辑0,作为数据位0。

  (4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。…。,直到全部数据位都输入。

  (5)检测校验位P(如果有的话)。

  (6)接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。

  (7)本幀信息全部接收完,把线路上出现的高电平作为空闲位。

  (8)当信号再次变为低时,开始进入下一幀的检测。

http://www.elecfans.com/uploads/allimg/171101/2362487-1G1011I106133.jpg

单片机常用11.0592M的的晶振,这个奇怪数字是有来历的:

  波特率为9600BPS每位位宽t1=1/9600s

  晶振周期t2=1/11.0592/1000000S

  单片机机器周期t3=12*t2

  t1/t3=96

  即对于9600BPS的串口,单片机对其以96倍的速率进行采样。

  如果单片机晶振用的不正确,会对串口接受产生误码。

大鹏 发表于 2021-1-17 16:12:29

串口通信的接收过程

zxopenhl 发表于 2021-1-18 15:11:27

串口通信的接收过程
页: [1]
查看完整版本: 串口通信的接收过程