一、通信方式
1、并行通信:一次可收发2bit/2bit以上。通信效率高;但对SOC硬件资源占用率太高。
串行通信:一次通信传递1bit。降低对硬件占用率;但通信速率低。
2、单工通信:只能A发送,B接收。
半双工通信:A、B均可收发,但不能同时通信。
全双工通信:A、B可同时收发。
eg:USB(统一串行总线)、串口均属于串行通信。
二、串口通信中
1、同步串行通信:I2C通信。
异步串行通信:串口通信(UART)。
区别:同步俩设备间有SCK同步时钟线用来同步双方。
不通信时,SCK为高电平。
★2、数据格式
(1)起始位为0;
(2)数据位为8位。先发低位,称lsb先行;先发高位,称msb先行。UART属于lsb先行。
(3)校验位。有三种校验:奇校验(为e)、偶校验(为0)、无校验(无)。
(4)停止位为1。因为不通信时,就处于高电平。
波特率:1200,2400,4800,9600,115200.
eg:9600,n,8,1表示波特率为9600bps,无校验,有8位数据位,停止位为1。
3、主机间通信时的电器物理问题
(1)TTL
TTL(Transistor-Transistor Logic)通常指的就是芯片引脚产生的电压,这个电压值跟选择的芯片有关,在51单片机系统下是5v;在2440下是3.3v等等。5vTTL通信距离通常被限制在10~20米之间。
(2)RS232
逻辑高电平(逻辑1):在-3V到-15V之间
逻辑低电平(逻辑0):在+3V到+15V之间
收发主机间有三根线,分别是收、发和地,因此RS232是全双工的。
理论上RS232能够传输20~30米。
(3)RS485
RS485使用两根信号线(A和B)来传输数据,通过比较A和B之间的电压差来识别信息,电压范围分别为+7V到+12V和-7V到-12V。正电压表示高电平,负电压表示低电平。这种差分信号传输方式提高了抗干扰能力。RS485的传输距离可达1200米,适用于大范围的数据传输需求。由于采用的是压差,RS485在传输数据的某一时刻,两根线都要用到,所以它是半双工的。
注:①由TTL->RS232->RS485逐步发展,其都是为了使抗干扰性逐渐增强、传输距离更远。
②常用TTL到RS232转换的芯片为:MAX3232。
③常用TTL到RS485转换的芯片为:MAX485。
三、UART实现
用到:PCLK(50MHZ)、9600,n,8,1.
查表:ULCON0、UCON0(Rx中断类型:脉冲)、UTRSTAT0、UTXH0、URXH0、UBRDIV0.
波特率发生:UBRDIVn = (int)(UART时钟)/(波特率*16)-1. 结果取最接近的整数。
50*10^6/(9600*16)-1 ≈ 325.
1、modbus协议实现——收发数据
可完成多种不同的任务,modbus为应用层协议。
数据通信格式:
校验码方式:累加和,取低八位;CRC。