串口引入之波特率的配置

        STC89C51RC/RD+系列单片机内部集成有一个功能很强的全双工串行通信口,与传统8051单片机的串口完全兼容。设有2个互相独立的接收、发送缓冲器,可以同时发送和接收数据。发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入,,因而两个缓冲器可以共用一个地址码(99H)。两个缓冲器统称串行通信特殊功能寄存器SBUF。
        串行通信设有4种工作方式,其中两种方式的波特率是可变的,另两种是固定的,以供不
同应用场合选用。波特率由内部定时器/计数器产生,用软件设置不同的波特率和选择不同的工作方式。主机可通过查询或中断方式对接收/发送进行程序处理,使用十分灵活。                        STC89C51RCRD+系列单片机串行口对应的硬件部分对应的管脚是P3.0/RxDP3.1/TxD

        STC89C51RCIRD+系列单片机的串行通信口,除用于数据通信外,还可方便地构成一个或
多个并行1/O口,或作串一并转换,或用于扩展串行外设等。

串行口相关寄存器

串行口控制寄存器SCON和PCON

        STC89C51RCIRD+系列单片机的串行口设有两个控制寄存器:串行控制寄存器SCON和波特率选择特殊功能寄存器PCON。

        串行控制寄存器SCON用于选择串行通信的工作方式和某些控制功能。其格式如下:

SCON:  串行控制寄存器(可位寻址)

SFR nameAddressbitB7B6B5B4B3B2B1B0
SCON98HnameSM0/FESM1SM2RENTB8RB8T1R1

 SMO/FE:  当PCON睿存器中的SMODO0/PCON.6位为1时,该位用于错误检测。当检测到一个

                  无效停止位时,通过UART接收器设置该位。它必须由软件清零。

                  当PCON寄存器中的SMODO/PCON.6位为0时,该位和SM1一起指定串行通信的工作

                   方式,如下表所示。

其中SM0、SM1按下列组合确定串行口的工作方式:

SM0SM1工作方式功能说明波特率
00方式0同步移位串行方式;移位寄存器波特率是SYSclk/12
01方式18位UART,波特率可变(2^{SMOD}/32)×(定时器1的溢出率)
10方式29位UART(2^{SMOD}/64)×SYSclk系统工作时钟频率
11方式39位UART,波特率可变(2^{SMOD}/32)×(定时器1的溢出率)

         当单片机工作再12T模式时,定时器1的溢出率 = SYSclk/12/(256 - T H1);

         当单片机工作再6T模式时,  定时器1的溢出率 = SYSclk/6/(256 - T H1)

SM2: 允许方式2或方式3多机通信控制位。在方式2或方式3时,如SM2位为1,REN位为1,则从机处于只有接收到RB8位为1(地址帧)时才激活中断请求标志位RI为1,并向主机请求中断处理。被确认为寻址的丛机则复位SM2位为0,从而才接收RB8为0的数据帧。在方式1时,如果SM2位为1,则只有在接收到有效的停止位时才置位中断请求标志位RI为1:在方式0时,SM2应为0。

REN: 允许/禁止串行接收控制位。由软件置位REN,即REN=1为允许串行接收状态,可启动REN:串行接收器RxD,开始接收信息。软件复位REN,即REN=0,则止接收。

TB8: 在方式2或方式3,它为要发送的第9位数据,按需要由软件置位或清0。例如,可用作数据的校验位或多机通信中表示地址帧/数据帧的标志位。

RB8: 在方式2或方式3,是接收到的第9位数据。在方式1,若SM2-0,则RB8是接收到的停止位。方式0不用RB8。

TI:     发送中断请求标志位。在方式0,当串行发送数据第8位结束时,由内部硬件自动置位,即TI=1,向主机请求中断,响应中断后必须用软件复位,即TI=0。再其它方式中,则再停止位开始发送时由内部硬件置位,必须用软件复位。

RI:    接受中断请求标志位。在方式0,当串行接收到第8位结束时由内部硬件自动置位RI = 1,向主机请求中断,响应中断后必须用软件复位,即RI = 0。在其他方式中,串行接收到停止位的中间时刻由内部硬件置位,即RI = 1(例外情况见SM2说明),必须由软件复位,即RI = 0。

        SCON的所有位可通过整机复位信号复位为全“0”。SCON的字节地址尾98H,可位导址,各位地址为98H--9FH,可用软件实现位设置。当用指令改变SCON的有关内容时,其改变的状态将在下一条指令的第一个机器周期的S1P1状态发生作用。如果一次串行发送已经开始,则输出TB8将是原先的值,不是新改变的值。

        串行通信的中断请求:当一帧发送完成,内部硬件自动置位TI,即TI=1,请求中断处理:当接收完一顿信息时,内部硬件自动置位RI,即RI=1,请求中断处理。由于T和RI以“或逻辑”关系向主机请求中断,所以主机响应中断时事先并不知道是TI还是RI请求的中断,必须在中断服务程序中查询TI和RI进行判别,然后分别处理。因此,两个中断请求标志位均不能由硬件自动置位,必须通过软件清0,否则将出现一次请求多次响应的错误。

SCON = 0x50; //8位数据,可变波特率
用 8 4 2 1 表示
即 0 1 0 1  0 0 0 0
高八位(SM0)和高七位(SM1)是01,即工作方式1,波特率可变
SM2是多机的时候使用,暂时用不到,REN允许串行接受状态

PCON:电源控制寄存器(不可位寻址)

SFR nameAddressbitB7B6B5B4B3B2B1B0
PCON87HnameSMODSMOD0  -POFGF1GF0PDIDL

SMOD: 波特率选择位。当用软件置位SMOD,即SMOD=1,则使串行通信方式1、2、3的波特率加倍:SMOD=0,则各工作方式的波特率正常。复位时SMOD=0。

SMOD0: 帧错误检测有效控制位。当SMOD0=1,SCON寄存器中的SMO/FE位用于FE(错误检测)功能:当SMOD0=0,SCON寄存器中的SMO/FE位用于SM0功能,和SM1一起指定串行口的工作方式。复位时SMOD0=0

PCON &= 0x7F;   //波特率不倍速
用 8 4 2 1 表示
即 0 1 1 1   1 1 1 1
高八位被清零,其它不变,对应最高位B7

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Raspberry Pi 4B的波特率是根据使用的串口或者通信协议而定的。Raspberry Pi 4B有多个可用的UART串口,每个串口都可以设置不同的波特率。对于UART串口,可以通过设置config.txt文件或者使用软件来配置不同的波特率,常见的波特率有9600、115200等。 另外,对于其他通信协议,如SPI和I2C,Raspberry Pi 4B也支持不同的通信速率,这些通信速率也可以被认为是一种波特率。SPI通信速率可以在代码中进行配置,一般在MHz级别。I2C通信速率也可以通过代码进行配置,一般在100kHz或400kHz。 需要注意的是,波特率是指单位时间内传输的比特数,波特率越高,传输速率越快,但也会引入更多的噪声和误码。因此,在选择和配置波特率时,需要根据实际应用场景的需求进行权衡,确保数据传输的稳定性和准确性。 总之,Raspberry Pi 4B的波特率取决于所使用的串口或通信协议,并且可以通过软件或代码进行配置。根据不同的需求和应用场景,选择合适的波特率可以实现稳定和快速的数据传输。 ### 回答2: Raspberry Pi 4B的波特率是指用于与其他设备进行通信的传输速率。波特率是指在单位时间内传输的数据位数。Raspberry Pi 4B支持多种不同的波特率,可以根据需要进行设置。 Raspberry Pi 4B的默认波特率是115200,这是一个常用的标准波特率,可用于与其他硬件设备进行串口通信。可以通过设置串口配置文件或者命令行界面来修改默认波特率。 除了默认波特率外,Raspberry Pi 4B还支持更高的波特率,如230400、460800、921600等。这些更高的波特率可以用于需要快速数据传输的应用,例如高速传输大量数据或者与其他高速设备进行通信。 修改Raspberry Pi 4B的波特率可以通过修改配置文件来实现,如修改串口配置文件中的波特率参数。另外,也可以通过命令行界面使用特定的指令来修改波特率设置。在修改波特率之后,需要确保与Raspberry Pi 4B通信的设备也能支持相同的波特率,以保证正常的数据传输。 总之,Raspberry Pi 4B的波特率是可以根据需求进行修改的,它可以支持多种不同的波特率用于与其他设备进行通信。根据实际应用的需要选择合适的波特率可以确保数据的快速、稳定传输。 ### 回答3: Raspberry Pi 4B支持的常用串口通信波特率是300字。 Raspberry Pi 4B在硬件上增加了两个串口UART接口,其中一个UART接口可通过GPIO引脚使用,另一个UART可通过USB-C接口使用。这两个UART接口都可以用于与外部设备进行串口通信。 在Raspberry Pi上,设定波特率通常需要在操作系统中进行配置。对于GPIO UART接口,可以通过在命令行中使用"stty"命令来设定波特率。通过设置特定的参数,比如"-F /dev/serial0"来指定使用的串口设备,并通过参数"-speed 300"来设置波特率为300。 对于USB-C UART接口,通常可以在操作系统的串口设置菜单中设定波特率。支持的波特率通常包括300、1200、2400等常见的波特率。用户可以根据实际需要选择适合的波特率。 总而言之,Raspberry Pi 4B支持的波特率包括300字,用户可以根据实际需求选择适合的波特率来与外部设备进行串口通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值