打印
[STM32F1]

串口通信

[复制链接]
995|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
复仇之矛|  楼主 | 2015-3-6 16:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在学习串口,使用串口接收扫描枪的数据,设置了两者的参数:波特率9600,1个起始位,8个数据位,无校验位,无硬件流控制,1个停止位。STM32同电脑收发正常,扫描枪和电脑通信正常,但是STM32和扫描枪通信不上,请问各位大神,这其中还有什么通信要求么?
沙发
cxz_00| | 2015-3-6 16:50 | 只看该作者
没有图和程序,这个还真不好判断,你还是把你的文件发出来,大家才能给你建议,只有这个描述,很难判断的

使用特权

评论回复
板凳
复仇之矛|  楼主 | 2015-3-6 17:00 | 只看该作者
cxz_00 发表于 2015-3-6 16:50
没有图和程序,这个还真不好判断,你还是把你的文件发出来,大家才能给你建议,只有这个描述,很难判断的 ...

单片机用的是开发板,程序不会上传,给你贴出来哈
        RCC->APB2ENR|=1<<2;  
        GPIOA->CRL&=0XFFFF00FF;
        GPIOA->CRL|=0X00008B00;
        RCC->APB1ENR|=1<<17;             
        RCC->APB1RSTR|=1<<17;   
        RCC->APB1RSTR&=~(1<<17);                     
        USART2->BRR=(pclk2*1000000)/(bound);            
        USART2->CR1|=0X200C;  
        USART2->CR3=1<<7;          
这是参数配置
if(USART2->SR&(1<<5))
{
         res=USART2->DR;
//          if(res==0x0D)
//          {
//     USART2_RX_STA|=0x80;
//                  finish=1;
//     }
//                 else
//                 {
   USART2_RX_BUF[USART2_RX_STA&0X3F]=res;
   USART2_RX_STA++;
     if(USART2_RX_STA>(USART2_MAX_LEN-1))
           {
                 USART2_RX_STA=0;
     }
    }       
这是简单的接收程序

使用特权

评论回复
地板
mmuuss586| | 2015-3-6 18:16 | 只看该作者
通讯协议不对吧;
造成无法连接上吧;

用串口监控把相关的数据抓下来看看;

使用特权

评论回复
5
mmuuss586| | 2015-3-6 18:16 | 只看该作者
还有就是硬件连错了;

使用特权

评论回复
6
复仇之矛|  楼主 | 2015-3-7 08:33 | 只看该作者
mmuuss586 发表于 2015-3-6 18:16
还有就是硬件连错了;

硬件不会有问题,单片机是用的开发板,扫描枪是成品的,问题可能是协议,我去用你的建议实验实验。

使用特权

评论回复
7
chenyu988| | 2015-3-7 09:06 | 只看该作者
TX,RX接错没

使用特权

评论回复
8
小班儿| | 2015-3-7 09:47 | 只看该作者
可能是协议问题

使用特权

评论回复
9
ningling_21| | 2015-3-7 10:17 | 只看该作者
进入调试状态,看看STM32能否收发扫描枪的串口数据

使用特权

评论回复
10
diy1997| | 2015-3-7 15:06 | 只看该作者
STM32同电脑收发正常---你用串口调试助手之类的测试的?

扫描枪和电脑通信正常---你用扫描枪的专用软件试的?

但是STM32和扫描枪通信不上---那么很明显,协议问题啊。

找扫描枪的协议,找不到相关资料就自己抓吧。

使用特权

评论回复
11
lnulibin| | 2015-3-7 18:11 | 只看该作者
一般单片机和电脑通信时,由于电脑的兼容性较强。下位机(单片机)上晶振的频率以及串口时钟源的设置可以宽松一些。
但是如果是单片机与单片机通信,要求要严格一些。
以前用过51单片机进行串口通信,必须用11.0592M的晶振。如果是12M就不行了。
试试找一下,所用单片机最适宜的晶振频率。使波特率非常准。就可以通信了。

使用特权

评论回复
12
复仇之矛|  楼主 | 2015-3-9 09:41 | 只看该作者
diy1997 发表于 2015-3-7 15:06
STM32同电脑收发正常---你用串口调试助手之类的测试的?

扫描枪和电脑通信正常---你用扫描枪的专用软件试 ...

和电脑都是用串口调试助手测试的

使用特权

评论回复
13
复仇之矛|  楼主 | 2015-3-9 09:43 | 只看该作者
lnulibin 发表于 2015-3-7 18:11
一般单片机和电脑通信时,由于电脑的兼容性较强。下位机(单片机)上晶振的频率以及串口时钟源的设置可以宽 ...

好的,我试试

使用特权

评论回复
14
复仇之矛|  楼主 | 2015-3-9 09:46 | 只看该作者

我用的是9针口,不会连接错误

使用特权

评论回复
15
复仇之矛|  楼主 | 2015-3-9 09:48 | 只看该作者
diy1997 发表于 2015-3-7 15:06
STM32同电脑收发正常---你用串口调试助手之类的测试的?

扫描枪和电脑通信正常---你用扫描枪的专用软件试 ...

确实没有扫描枪具体协议,只知道串口设置,字符串结尾是0X0A

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

185

帖子

3

粉丝