求助一个自定义波特率的软件

2019-08-15 16:34发布

首先我使用了很多可自定义的波特率调试软件,但是发现,波特率在8K到14K的区域误差是相当严重的,其他区域也存在如此问题,
但是如果把波特率设置到那几个常用的 9600 115200 38400 等是很准确的,但是因为项目需要,对ISO14230通信协议里面的波特率要求10.4K,但是通过串口调试助手打出来实际只有9.3K,引起误码严重。
下面我以 战舰提供的串口助手为例,如果我把波特率设置到12000,那么实际示波器看到的却是9.4k左右,
1.jpg
2.jpg
这让我很郁闷。有不有现成的,测过波特率用起来准的串口调试助手

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
squall001
1楼-- · 2019-08-15 20:00
 精彩回答 2  元偷偷看……
jokeym
2楼-- · 2019-08-15 23:41
我的是这样算的

void Init_USART2(u8 clk,u32 b)
{
        float div;
        u16 mantissa;
        u16 fraction;
       
        RCC->APB1ENR |= 1<<17;                //USART2时钟使能
        RCC->APB2ENR |= 1<<2;                //使能PA口时钟  PA2:TX   PA3:RX
       
        GPIOA->CRL &= 0XFFFF00FF;//PA2:复用推挽输出
        GPIOA->CRL |= 0X00004B00;//PA3:浮空输入
       
        RCC->APB1RSTR |= 1<<17;        //复位串口时钟
        RCC->APB1RSTR &= ~(1<<17);//停止复位时钟
       
        div = (float)(clk*1000000)/(b *16);
       
        mantissa = div;
        fraction = (div - mantissa) *16;
       
        mantissa <<= 4;
        mantissa += fraction;
       
        USART2->BRR = mantissa;//设置波特率
       
        USART2->CR1 = 0X200C;  //使能串口模块,使能接收和发送
}

一周热门 更多>