melo199281 发表于 2014-9-18 20:14:00

STC11系列单片机有办法让波特率达到345600吗

主机为STM32单片机,从机为STC11F04E单片机,要求波特率为345600,如何达到?

janafar 发表于 2014-9-18 20:28:35

做梦的时候能达到{:smile:}

melo199281 发表于 2014-9-18 20:31:08

janafar 发表于 2014-9-18 20:28
做梦的时候能达到

我也这么觉得。。。。。。。所以很坑。。。

TZQ95865 发表于 2014-9-18 20:31:15

记号 关注

饭桶 发表于 2014-9-18 20:41:04

15系列自定义内部震荡频率,应该可以的。11系列怕是没有正好的晶体购买到。

颜靖峰 发表于 2014-9-18 20:43:51

做梦何止这么多,我怀疑波特率为2.4G都有可能哦!

一心2013 发表于 2014-9-18 20:47:30

有办法,不是满带宽的情况下再在中间用一片STM32去转接,DMA传输{:lol:}{:lol:}{:lol:}

饭桶 发表于 2014-9-18 20:55:56

使用33.1176晶体

void UartInit(void)                //345600bps@33.1176MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x40;                //定时器1时钟为Fosc,即1T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //清除定时器1模式位
        TMOD |= 0x20;                //设定定时器1为8位自动重装方式
        TL1 = 0xFD;                //设定定时初值
        TH1 = 0xFD;                //设定定时器重装值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
}

饭桶 发表于 2014-9-18 20:56:51

使用11.0592MHz晶体

void UartInit(void)                //345600bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x40;                //定时器1时钟为Fosc,即1T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //清除定时器1模式位
        TMOD |= 0x20;                //设定定时器1为8位自动重装方式
        TL1 = 0xFF;                //设定定时初值
        TH1 = 0xFF;                //设定定时器重装值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
}

饭桶 发表于 2014-9-18 20:58:49

独立波特率发生器,不使用定时器
void UartInit(void)                //345600bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x04;                //独立波特率发生器时钟为Fosc,即1T
        BRT = 0xFF;                //设定独立波特率发生器重装值
        AUXR |= 0x01;                //串口1选择独立波特率发生器为波特率发生器
        AUXR |= 0x10;                //启动独立波特率发生器
}

饭桶 发表于 2014-9-18 20:59:28

void UartInit(void)                //345600bps@133.1176MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x04;                //独立波特率发生器时钟为Fosc,即1T
        BRT = 0xFD;                //设定独立波特率发生器重装值
        AUXR |= 0x01;                //串口1选择独立波特率发生器为波特率发生器
        AUXR |= 0x10;                //启动独立波特率发生器
}

饭桶 发表于 2014-9-18 21:00:00

哪个还有问题?

bluestone2012 发表于 2014-9-18 21:11:17

丢不丢数?带不带隔离?

孤独_求败 发表于 2014-9-18 21:30:46

那么高的波特率,不丢帧么

4058665 发表于 2014-9-18 21:40:02

有意义吗?

benli 发表于 2014-9-18 22:00:40

达到没有问题,关键是传输的稳定性

lgg88 发表于 2014-9-19 08:37:44

为毛要这么高的波特率,实在搞不懂???

melo199281 发表于 2014-9-19 10:03:34

饭桶 发表于 2014-9-18 20:59
void UartInit(void)                //345600bps@133.1176MHz
{
        PCON &= 0x7F;                //波特率不倍速


我的是9位数据~TB8和RB8也是数据

melo199281 发表于 2014-9-19 10:04:00

bluestone2012 发表于 2014-9-18 21:11
丢不丢数?带不带隔离?

带隔离了应该~

melo199281 发表于 2014-9-19 10:04:32

lgg88 发表于 2014-9-19 08:37
为毛要这么高的波特率,实在搞不懂???

没办法,对方要求这么搞,基本都在接数据,发数据的情况很少

饭桶 发表于 2014-9-19 10:13:24

void UartInit(void)               
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0xD0;                //9位数据,可变波特率
        AUXR |= 0x04;                //独立波特率发生器时钟为Fosc,即1T
        BRT = 0xFD;                //设定独立波特率发生器重装值
        AUXR |= 0x01;                //串口1选择独立波特率发生器为波特率发生器
        AUXR |= 0x10;                //启动独立波特率发生器
}

bbs2009 发表于 2014-9-19 11:38:09

bbs2009 发表于 2014-9-19 11:43:43

spacekey 发表于 2014-9-19 11:49:12

345K 传声音没问题了吧

melo199281 发表于 2014-10-1 20:25:50

bbs2009 发表于 2014-9-19 11:43
貌似 可以使用 SERIAL PORTMODE 2 , 时钟 11.0592 Mhz 或22.1184 Mhz均可。

不用定时器,不用独立 ...

多谢,已经成功使用方式2做到了
页: [1]
查看完整版本: STC11系列单片机有办法让波特率达到345600吗