
串口uart发送出错
大家好!我在做单片机串口的驱动。串口接收还好,但是发送只要波特率一高,就会出错。我设置9600波特率,发送数据基本正确,但是如果调到115200,发送数据基本上全错了。我...
大家好!我在做单片机串口的驱动。串口接收还好,但是发送只要波特率一高,就会出错。
我设置9600波特率,发送数据基本正确,但是如果调到115200,发送数据基本上全错了。
我是用中断写的,每发完一个数据就会产生一个中断,由中断服务程序负责将要发送的数据依次送出。
中断服务程序:
1.关中断
2.tx_buf++; (要发送的数据存在tx_buf里)
tx_cnt--; (要发送的数据个数)
3.开中断
4.IO_HSC1BUF=*tx_buf;
不知道我这样做对不对,为什么波特率一高,就出错?是不是应该加上一些延时,如果是的话,加哪呢?
麻烦大家指点下哦~ 展开
我设置9600波特率,发送数据基本正确,但是如果调到115200,发送数据基本上全错了。
我是用中断写的,每发完一个数据就会产生一个中断,由中断服务程序负责将要发送的数据依次送出。
中断服务程序:
1.关中断
2.tx_buf++; (要发送的数据存在tx_buf里)
tx_cnt--; (要发送的数据个数)
3.开中断
4.IO_HSC1BUF=*tx_buf;
不知道我这样做对不对,为什么波特率一高,就出错?是不是应该加上一些延时,如果是的话,加哪呢?
麻烦大家指点下哦~ 展开
展开全部
用示波器量一下波形,是否规整,如果信号失真太大。那么不能用高的波特率。
一般来讲,115200对于一般的单片机都能达到。
再就是传输距离,如果串口总线信号电压是12V,20m没什么太大问题。如果没有电压转换,距离太长了,波特率高了,信号失真太大。接收就会有问题
一般来讲,115200对于一般的单片机都能达到。
再就是传输距离,如果串口总线信号电压是12V,20m没什么太大问题。如果没有电压转换,距离太长了,波特率高了,信号失真太大。接收就会有问题

2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
那 就用 9600波特率
可能 存在 误差
可能 存在 误差
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
收发的波特率是否一致?最好贴出程序。
另外,太高的波特率会有误差的
另外,太高的波特率会有误差的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要看看你的晶振电路是不是有问题,先把晶振换个好的试试再说,如果不行,再看单片机的硬件设计是不是有问题,当然也可考虑程序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询