永发信息网

单片机uart通讯中的UART通讯的波特率设置问题

答案:3  悬赏:30  手机版
解决时间 2021-11-29 12:37
  • 提问者网友:温旧梦泪无声
  • 2021-11-28 18:43
单片机uart通讯中的UART通讯的波特率设置问题
最佳答案
  • 五星知识达人网友:怙棘
  • 2021-11-28 19:30
方式零,不属于 UART,是 SPI 。
-----------
楼主弄混了概念。

51 单片机在串口方式0时,称为《同步传送方式》,并不是 UART (异步)方式。
两者并不兼容。

在同步传送方式,以 P3.0 输入、输出数据,以 P3.1 输出同步脉冲。
注意,数据的输入、输出,都是从 P3.0 走的。

在同步传送方式,数据的传输速度是 1M bit/s。比 UART,要快得很多。
而且,在同步传送方式,没有起始位、校验位和结束位,每一位,都是数据。

因此,在《同步传送方式》,并没有常说的 9600、4800...,等波特率。
同样,在 UART 中,也就没有 1M bit/s 这样的说法。

--每秒可以发送10^6个数据位,这时候的波特率是1mbit/s,
--那么在数据传输时波特率岂不是要设为1000,但是常用的为什么没有1000?

把它们混在一起讨论,是楼主的基本概念不清的表现。
楼主所选的答案,也没有搞清串口方式0的特点,只是用 UART 的理论来解释《同步传送》。
葫芦搅茄子而已,呵呵
全部回答
  • 1楼网友:等灯
  • 2021-11-28 22:37
建议你看看波特率与晶振的计算与关系,http://blog.csdn.net/zzwdkxx/article/details/8873061
  • 2楼网友:野味小生
  • 2021-11-28 21:09
一般设置为2400的整数倍速,如2400, 4800,9600 19200。。。115200. 当然你设置为1000也可以的。
//*******************************************************************
//函数名称:void SetBps(u16 uiBps)
//函数功能:设置串口接收数据的BPS
//入口参数:uiBps:接收数据的波特率
//*******************************************************************
void SetBps(u32 ulBps)
{
u16 uiDat;
uiDat = 65536 - CRYSTAL/ulBps/32;
TH2 = uiDat/256;
RCAP2H = uiDat/256;
TL2 = uiDat%256;
RCAP2L = uiDat%256;
TR2 = 1;
REN = 1;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯