单片机/MCUwilliam hill官网
直播中

王萍

7年用户 1322经验值
私信 关注
[问答]

只使用单片机一个串口如何转换波特率?

只运用单片机一个串口,下载程序的波特率是115200,但是程序需要的通信波特率是9600

回帖(16)

张敏

2018-11-27 13:36:43
下载程序是BOOT程序,开机后用户程序的波特率可以自己设置的。
举报

杨海清

2018-11-27 13:37:07
PC端的串口,连接不同的外设,波特率不一样,你说咋办?
举报

尚文清

2018-11-27 13:37:17
用USB转串口不行吗
举报

刘杰

2018-11-27 13:37:28
根据需要设置不同的波特率即可
PS:一般下载程序时不需要通信,通信的时候不需要下载
举报

王萍

2018-11-27 13:38:20
我问的有问题。就是这个单片机是内置的时钟(串口不管是下载还是应用都是同一个时钟源),但是下载程序需要的也是串口的功能,就是库里默认定时器2设置成了115200。 但是我要用9600连接一个模块,我把定时器2改了设置之后,就下不了程序了。
举报

张敏

2018-11-27 13:38:52
你这个解释还是不够清楚,串口的波特率可以根据不同需求修改。你这个模块什么时候使用?下载程序又是什么时候使用?一个串口,肯定不可以2个波特率同时和2个模块通信的。这个就需要你优化设计,不可以随心所欲的干啥就干啥。
举报

刘杰

2018-11-27 13:39:12
把库里默认设置改成9600 行不行?
模块的波特率能不能改?
举报

李红

2018-11-27 13:39:50
用的是什么单片机?你用的什么下载软件?
举报

刘敏

2018-11-27 13:40:01
下载无需设置波特率
举报

王萍

2018-11-27 13:40:15
手上这款单片机ISP方式下载,flash烧程序。
我看网上有人说,stm32用这种方式(就是用串口)下载的时候,不需要设置波特率?那为什么不需要设置波特率?
我看了MAX232的威廉希尔官方网站 图(用来搞ISP)的,不是需要MCU和PC的波特率一致才能通信吗?
网上还有人说,下载和应用的时候不一样,不用管波特率的设置?我还是不明白。为什么?
举报

杨丽

2018-11-27 13:40:33
stm32的内置 ISP 程序,开始时并不 enable 串口的,而是把串口的 RXD 当做普通 IO,设置为输入模式,当 PC 发出串口数据时,ISP 程序会测量串口数据的脉冲宽度,然后计算出适合的波特率,并使用这个波特率 enable 串口。这样就可以做到自动适配 PC 的波特率。
举报

王萍

2018-11-27 13:44:50
楼上解释很详细。那我还想知道,程序是怎么自动测量脉冲宽度的?是STM32自己固有的某种协议吗?它是怎么开头的呢?
举报

杨丽

2018-11-27 13:45:19
PC 先发出一个字节,0x00,uart 时序就是在起始位之后有一个下降沿(A),然后是8个bit的低电平,然后有一个上升沿(B),再跟着一个停止位。stm32的isp程序启动后设置RXD引脚为I/O输入模式并启用下降沿中断,当下降沿A来到时,中断服务程序启动一个定时器,并启用上升沿中断,当上升沿B来到时,读取定时器的计数值,这个计数值就是8个bit所需要的时间。
举报

杨丽

2018-11-27 13:45:27
以此计数值就可以计算出波特率。这个技术并不是stm32特有的,早在8051时代就已经比较普遍了。
举报

杨静

2018-11-27 13:45:40
两个模式完全分隔,各做各的初始化,没问题的,既伎同模式下也可分时,握手调整,看看你的WIFI支持多少速率,还自动切换
举报

刘超

2018-11-27 13:45:54
你用的什么芯片?下载速率和工作速率是有区别的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分