13:54:08
虽然自己还有很多的不懂,但是我可以慢慢的学习,一点点的积累。单片机串口通信有以下的知识。
电平转换
单片机TTL电平,逻辑0为电压0V,逻辑1为电压+5V。
RS-232电平特性:
逻辑1(MARK)=-3V~-15V
逻辑0(SPACE)=+3~+15V
在RTS、CTS、DSR、DTR和DCD等控制线上:
信号有效(接通,ON状态,正电压)=+3V~+15V
信号无效(断开,OFF状态,负电压)=-3V~-15V
常用电平转换芯片MAX232可以完成双向电平转换,还有其他一些常用单向转换芯片不在叙述。
串口通信方式
51系列单片机串口通信方式总共有四种,由串口控制寄存器SCON设定, 方式0和方式2的波特率是固定的,方式1和3波特率是可变的,计算公式为
如果PCON中的SMOD位为1则;
波特率 = 2*(T1的溢出率)/32
如果PCON中的SMOD位为0则;
波特率 = 1*(T1的溢出率)/32
溢出速率=(计数速率)/(所用周期数)
计数速率与晶振有关,计数速率即机器周期的倒数,为fose/12。fose为晶振频率。
所用周期与定时器工作方式和初值有关。
通信协议
通信方式中的误码问题,一般采用数据校验的办法
奇偶校验。
校验和。
CRC校验(循环冗余校验)。
关于CRC校验,弄的不是很明白,希望高手可以详细给我讲解。好了说一点知道的吧,CRC校验是利用生成的多项式(原理比较多)最高次幂n一般为4、8、16、32等等,首先把数据后添加n位,然后再和多项式进行二进制除法(就是异或运算)最后得到的余数即为CRC校验码,然后加在数据位后面一起发送。
通信中先发低位,后高位。发送完数据由硬件置RI为1,RI只能用软件清零。接受完一帧数据硬件置TI为1,软件清零。