6436|10

14

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

stm uart通信问题求助 [复制链接]

使用stm8 uart2进行串口调试实验,初始化寄存器,使能接收发送和接收中断响应。

平台发送数据到PC机:PC端接收正常。

PC端发送数据到平台,平台能够接收到数据,但是都是乱码。

请问哪位大虾碰到过此类问题,帮忙协助,感谢~~~

此帖出自stm32/stm8论坛

最新回复

虽然只用过32 不过看上去应该没什么问题啊  有参考例程么?  详情 回复 发表于 2011-7-27 22:10
点赞 关注
 

回复
举报

1059

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
你是说显示为乱码么?让板子收到数据后回送.回送如果正常.显示也乱码.就是ascii码算错了
此帖出自stm32/stm8论坛
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 astwyg 的帖子

就是平台接收到数据,用调试工具监听收到的ASCII码,发现跟发送的ascii码不匹配,重新发送到PC端显示也是不正常数据。

如PC端发送数据为12,相当于传输了两个字节
平台接收再回传出现如下情况
Receive Byte is 0x67
Receive Byte is 0x33

请帮忙分析下可能的原因,非常感谢!!!
此帖出自stm32/stm8论坛
 
 

回复

2131

帖子

0

TA的资源

至上芯片

4
 

回复 板凳 terry_cui 的帖子

是否波特率设置 正常,格式是否正确?
此帖出自stm32/stm8论坛
 
个人签名处处留心皆学问!
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 daicheng 的帖子

波特率应该是正常的不然PC端应该不可能收到正常的数据

Receive Byte is 这几个都是传输到PC端的数据,显示都是正常的。

格式是否正确是指什么方面?还请指教~感谢!!

坐等回复~~~
此帖出自stm32/stm8论坛
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

6
 
把程序打包发过来看看mine1264@sina.com
此帖出自stm32/stm8论坛
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

7
 
发送和接受数据不要用ASCII码,直接用HEX格式收发试试
此帖出自stm32/stm8论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 7楼 tree0429 的帖子

直接用HEX收发也是乱码。用示波器量波形,感觉发送到RX上的信号有点不正常,比如接收 ? ascii码为63,应该先低后高
但是看到波形不一样,怀疑RS232线存在问题,待从新找跟线测试!
此帖出自stm32/stm8论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 7楼 tree0429 的帖子

抱歉没有仔细看波形,比对了发送端跟接收端的波形,发现是一致的,所以可能还是哪里设定有问题,附上代码,请帮忙参考,感谢!

void STM8_Uart_Initialize(void)
{
        UART2->CR1 &= (u8)(~0x10);        //set M 0,use 8bits transfer.
        UART2->CR3 |= (u8)(0x10);        //set 1 stop bit.
        UART2->BRR2 = (u8)(0x03);        //set buad of [15..12]&&[3..0] used for 16M baud as 9600
        UART2->BRR1 = (u8)(0x68);        //set buad of [11..4]
        UART2->CR2 |= (u8)(0x2C);        //enable transfer and receiver flag.
        UART2->CR1 &= (u8)(~0x20);        //enable uart communicate.
}

void STM8_Uart_SendByte(u8 bData)
{
         while(!(UART2->SR & 0X80))
                  ;
         UART2->DR = bData;
}

u8 STM8_Uart_ReceiveByte(void)   //中断接收,就是这个步骤读到的数据异常。
{
        u8 bReceiveData = 0;

        if(UART2->SR & 0x20)
        {
                bReceiveData = UART2->DR;
        }
        return bReceiveData;
}
此帖出自stm32/stm8论坛
 
 
 

回复

1059

帖子

0

TA的资源

纯净的硅(高级)

10
 

回复 9楼 terry_cui 的帖子

虽然只用过32 不过看上去应该没什么问题啊  有参考例程么?
此帖出自stm32/stm8论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

11
 

回复 10楼 astwyg 的帖子

有参考过例程,没什么差别,难道是IC的RDR存在问题?
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表