1. 单片机的几种传输方式的总结
学习了51单片机以及STM32后总结下单片机与外设或者上位机通讯的几种传输方式
串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)
串行通信:指数据一位一位顺序传送
串行接口:简称串口(COM口)
并行通信:一组数据的各数据位在多线上同时被传输
并行接口:一种接口,各数据位同时被传输,传输速度快,效率高,一般用于MCU
串行通信分为:
单工:数据单项传送
半双工:数据能双向传送但不能同时
全双工:数据能同时双向传送
通用的、及支持同步也支持异步的接收、发送“模块”,在芯片内部,与SPI、I2C一起构成单片机的总线“枝干”,对于串口,串口通信指串口按位(bit)发送和接收字节,尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
串行通信技术标准EIA-232/485也就是以前所称的RS-232/485。
232是PC机与通信工业中应用最广泛的一种串行接口,RS232单端通信,传输距离可达15米,最高速率20Kbps。
RS485传输速率为10Mbps,最大传输距离1219米,,采用二线制时可实现真正的多点双向通信,而采
用四线连接时只能实现点对多点通信,无论四线还是二线连接方式总线上可接多达 32 个设备。
串行通信传输速率用于说明传输的快慢。在串行通信中,数据是按位进
行传送的,因此传输速率用每秒钟传送格式位的数目来表示,称之波特率
(band rate)。每秒传送一个格式位就是 1 波特。常用的波特率有:4800、
9600、19200、115200 波特。
串口三个脚:TX、RX、GND
IIC总线是一种两线式串行总线,支持多主控,其中任何能够进行发送和接收的设备都可以成为主总线,一个主控能够控制信号的传输和时钟频率,当然在任何时间点上只能有一个主控。IIC总线是由数据线SDA和时钟SCl构成的串行总线,可发送和接收数据,在CPU与被控IC之间,IC与IC之间进行双向传送,最高传送速率100Kbps,各种被控制电路均并联在这条总线上,每个设备模块都有唯一的地址,IIC总线上的每一个设备模块既是主控器或被控器,又是发送器或接收器,这取决于你要实现的功能是怎样的。
CPU发出的控制信号分为地址码和控制量两部分
IIC总线传输过程中有三种信号:起始信号,终止信号,应答信号。
起始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据;
终止信号:SCL 为低电平时,SDA 由低电平向高电平跳变,结束传送数据;
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出
特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,
等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情
况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单
元出现故障。
SPI允许单片机和外围设备或者单片机之间高速同步数据传输,SPI可以有主机和从机模式之选,通信的主从机之间通过移位寄存器同时交换数据。目前自己用的以主机模式居多。SPI需要四线:SS,MISO,MOSI,SCK。
通信过程:在设置好SPI的工作模式:包括SCK频率(数据传输速率),工作速度,主从模式,以及数据接收发送对应的时钟极性。在主模式下,将SS拉低表示通信的开始,然后通过向SPI数据寄存器中写入一字节的数据后自动启动时钟SCK开始进行一次通信,通信完成后会产生相应的中断标志,标志一个字节数据的传送完成。通信完成后将SS脚拉高,表示通信过程已经结束。
注意SS引脚的设置:当设置为从机模式时,SS引脚应设置为输入,拉低的时候SPI才能起作用,拉高的话是消极的SPI模式;在主机模式下,SS引脚可以设置,一般应设置为输出,如果设置为输入的话应保持为高,否则将不能进行正常的主机模式操作。
单片机通讯方式
2. pic单片机用串口发送接收数据
当接收到数据时,RCIF会被置1,如果读了接收结果RCREG,则系统自动会把RCIF清0。
程序把清RCIF语句屏蔽了,但TXREG=RCREG;这一句就是读接收结果(把接收结果RCREG送到发送寄存器TXREG里),所以会自动让RCIF清0,只有新数据来时,RCIF才会置1,才能再进入中断。
如果把发送的语句改为TXREG=0X12(或其他不是RCREG的寄存器的变量),因此中断后没有读取接收数据,也就不能清RCIF,RCIF仍然为1,即中断服务程序退出后,还存在的中断请求,因此就会马上进入中断,从而出现不停的发送数据的现象。
解决的办法有2:
1、让原来屏蔽的语句RCIF=0有效;
2、空读RCREG,如定义一个变量A(unsigned char A),在发送数据后或前,增加A=RCREG就可以了。
3. 单片机怎样通过串口向计算机发送数据
单片机怎样通过串口向计算机发送数据:
单片机可以实现与计算机的发送和接收。首先,要正确配置单片机的串口,包括波特率、使用时钟源、COM口、数据位位数、奇偶校验位、停止位位数等,同时要保证计算机的配置和单片机的一致。然后,把要发送的数据送到发送缓存,只能一个字节一个字节的发送。启动单片机发送,就可以完成发送操作。如果打开接收中断,计算机发送数据过来的时候,就会进入到接收中断,单片机进入接收数据状态。
要注意的是,单片机是TTL电平,而计算机是232电平,所以在硬件电路连接上要有电平转换芯片,常用的有MAX232等。
4. 关于单片机串口同时收发数据的时序问题
回答这些问题之前,你要先复习一下串口部件的结构和数据收发的原理。
1.不管你有没有处理RI,还是在继续接收数据的。数据接收完成之后,数据从移位寄存器转移到数据寄存器中,这时才产生中断,但移位寄存器是空的,还可以继续接收数据。
2.你想让串口的收和发同时工作,那就只能使用中断方式,你用查询方式是不可能的。如果是使用“半双工”,那就简单些:A查询方法发送数据,B以查询方式接收数据,反之依然,这样的缺点是比较耗时,没有实时性。
后面的几个问题就用2来回答了,就是用中断的方法来接收和发送数据,这样不管你是不是同时收发的,都能处理。按照你的例子说,上位机要发送命令来查询下位机的结果,那简单,下位机必须要一个缓冲区来保存收到的数据,然后在主程序中处理缓冲区中的内容,再根据情况向上位机发送数据。当然下位机的发送也可以使用缓冲区来保存待发送的数据。
使用缓冲区的好处就是能保证不发送遗漏。比如上位机可以一次发送多个命令给下位机,这样就是在接收缓冲区中形成命令队列,即“排队”,下位机逐一处理队列中的每一条命令,然后将对应结果送入发送缓冲区中“排队”,再有串口发送中断逐一将其中的字节发送出去。
5. 串口发送数据是单片机发送数据吗
通常,具备串行通讯端口的设备都可以发送和接收数据,那么单片机自然也可以发送串行数据。
PC电脑具有串行通讯端口,也能发送和接收串行数据,电脑和电脑之间,单片机和单片机之间,电脑和单片机之间都能发送和接收数据。当然还有其它设备也可以。
所以说单片机能够发送数据,但串口发送数据不是只有单片机才能发送数据。
6. 51单片机串口通信是全双工的,但是为什么又说它的发送和接受不可以同时进行呢
51单片机串口通信是全双工的,发送和接受可以同时进行。不可以同时进行的是半双工。
全双工方式分别由两根不同的传输线传送数据时,通信双方都能在同一时刻进行发送和接收操作,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在发送和接受两个方向上传送。
半双工使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据。采用半双工方式时,通信系统每一端的发送器和接收器,通过收/发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟。收/发开关实际上是由软件控制的电子开关。
(6)单片机串口发送接收扩展阅读:
全双工方式在发送设备的发送方和接收设备的接收方之间采取点到点的连接,这意味着在全双工的传送方式下,可以得到更高的数据传输速度。
全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利。这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线传送数据信号。