重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1135|回复: 2

设置波特率上面的坑

[复制链接]

230

主题

566

帖子

3270

积分

学生管理组

Rank: 8Rank: 8

积分
3270
发表于 2017-7-31 02:07:39 | 显示全部楼层 |阅读模式
首先我使用了很多可自定义的波特率调试软件,但是发现,波特率在8K到14K的区域误差是相当严重的,其他区域也存在如此问题,

申明:在单片里面设置波特率是很正确的,误差几乎很小,下面我再提供一段号称精确度高100倍的串口设置代码,拿去加在USART_Init()函数的末端即

  1. //在函数顶部定义这个
  2. uint32_t   baudsource,interger,fractional;
  3. 、、、、、
  4. //在函数最下面再加上
  5.      baudsource = apbclock*1E5/(16*(USART_InitStruct->USART_BaudRate));
  6.      interger = baudsource/(u32)1E5;
  7.      fractional = (baudsource%(u32)1E5 + 3125)/6250;
  8.      USART1->BRR = (interger<<4) + fractional;
  9. //反正这个意思就是算个更精确的数出来,给BRR赋值嘛。。
复制代码



--------------------------------------------------------------------------------------------------------------------
下面说说PC端,为了调试需要,从PC端发串口数据到单片,是更容易调试的,但是遇到问题。
如果用任意可以自定义波特率的串口调试软件,把波特率设置到那几个常用的 9600 115200 38400 等是很准确的,但是因为项目需要,对ISO14230通信协议里面的波特率要求10.4K,但是通过串口调试助手打出来实际只有9.3K,引起误码严重。
下面我以 战舰提供的串口助手为例,如果我把波特率设置到12000,那么实际示波器看到的却是9.4k左右,
1.jpg
2.jpg


然后我很郁闷,以为他们都写错程序了,由于卡在这里很久了,马上打开VS2017,用C#自己写了个串口调试的程序,发现效果和人家写的一样。。。郁闷了,我想可能是C#固定了波特率,只能写那几个系统分配的波特率,这个从OS的设备属性里面可以看出,如下图
3.jpg
,于是乎,改用C++,因为windows开启所有CPU以外的资源都是把资源看做是一个文件来打开的,例如显卡,网卡等,串口也不例外,所以我直接用MFC里面定义设备描述表DC,波特率设置为12000,然后CreateFile打开串口,再发一个数据0xdd,结果效果还是一样。。。郁闷了。。
于是乎马上去翻MSDN,相信微软不会忽悠我的,
找到SerialPort::BaudRate Property,有如下描述
4.jpg
恍然大悟,可能是设备不支持。。。现在403教室里面的,是统一买的一盒PL-2303转出来的。于是我马上拿个CH340的试,果断马上就得行了。。。
哎被坑惨了。。。。
回复

使用道具 举报

230

主题

566

帖子

3270

积分

学生管理组

Rank: 8Rank: 8

积分
3270
 楼主| 发表于 2017-7-31 02:18:57 | 显示全部楼层
分析一个基于WPF做的串口调试助手,看起还可以,分卷压缩的,都下下来解压即可,VS2015以上打开,
SerialCom1.part1.rar (3 MB, 下载次数: 0)
回复 支持 反对

使用道具 举报

230

主题

566

帖子

3270

积分

学生管理组

Rank: 8Rank: 8

积分
3270
 楼主| 发表于 2017-7-31 02:19:31 | 显示全部楼层
本帖最后由 李维强-15级 于 2017-7-31 02:20 编辑

分析一个基于WPF做的串口调试助手,看起还可以,分卷压缩的,都下下来解压即可,VS2015以上打开,

SerialCom1.part1.rar

3 MB, 下载次数: 0

SerialCom1.part2.rar

2.06 MB, 下载次数: 0

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2019-7-16 20:05 , Processed in 0.111802 second(s), 33 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表