32stm
波特率:
用途:规定串口通信的速率。串口一般是使用异步通信,所以需要双方约定一个通信的速率。比如发送方每隔一秒发送一位,那接收方就得每个一秒接收一位,如果波特率是1000,那么一秒就发送1000位,每一位发送的间隔时间为1ms。如果接收快了就会重复接收某些位,接收慢了就会漏掉某些位。波特率是每秒传输码元的个数,单位是码元/s,或者直接叫波特(Baud),另外还有个速率表示叫比特率,意思是每秒传输的比特数,单位是bit/s,或者叫bps。在二进制调制的情况下,一个码元就是一个bit,此时波特率就等于比特率。单片机串口的通信基本都是比特率调制,高电平表示1,低电平表示0,一位就是1bit。串口的波特率经常会和比特率混用,因为这两个说法的数值相等。注意如果是多进制调制,那么波特率和比特率就不一样。
起始位:
标志一个数据帧的开始,固定位低电平。串口的空闲状态是高电平,也就是没有数据传输的时候,引脚必须置高电平。要开始传输的时候必须先发送一个起始位,这个起始位必须是低电平来打破空闲时候的高电平,产生一个下降沿。这个下降沿将会告诉接收设备,这一帧数据要开始了。如果没有起始位的话,发送八个1,那么数据线一直是高电平,没有任何数据波动,接收方无法判断是否发送了数据。所以一定要有一个固定为低电平的起始位。
数据位:
比如发送一个字节是0x0f,先转化为二进制 0000 1111 ,地位先行,所以数据要从地位开始发送,也就是将1111 0000依次放在引脚上。可以按波特率要求,定时翻转电平,产生相应的波形便可以发送该数据。
校验位:
这里串口使用的是一种叫做奇偶校验的验证方法,用来判断数据传输是否出错。如果数据出错了可以选择丢弃或者要求重传。校验可以选择三种方式,分别是:无校验、奇校验和偶校验。
无校验:
无校验就是不需要校验位,波形就是左边的图(串口参数及时序下方的图),包含有起始位、数据位和停止位三个部分。
奇偶校验:
奇校验和偶校验的波形是右边的图(串口参数及时序下方的图),包含起始位、数据位、校验位和停止位四个部分。
奇校验:
如果使用了奇校验,那么包括校验位在内的9位数据会出现奇数个1,比如传输的是
0000 1111,目前总共是4个1,是偶数个,那么校验位就需要再补一个1,连同校验位一共就是0000 1111 1 一共五个1,保障1为奇数。如果数据是0000 1110一共三个1是奇数个,那么校验位就补一个0,连同校验位一共就是0000 1110 0,总共还是3个1。发送方在发送数据后会补一个校验位,保证1的个数为奇数。接收方在接收数据后会验证数据位和校验位,如果1的个数还是奇数,那就认为数据没有出错。如果在传输过程中,因为干扰有一位由1变为0,或者由0变成1,那么整个数据的奇偶特性就会发生变化,接收方一验证,发现1的个数不是奇数,那就认为传输出错,可以选择丢弃或者重传。
偶校验:
保证1 的个数是偶数,校验方法同理奇校验。
缺点:
当两位数据同时出错时,奇偶特性不变时,那就校验不出,奇偶校验只能保证一定程度上的校验。如果要求更高的检出率,可以使用CRC校验,好用但是复杂
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_74859061/article/details/136503332
原文地址:https://blog.csdn.net/weixin_74859061/article/details/136559624
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!