STM32与其他类型的单片机直接通过引脚连接串口通信异常

DwyaneCV 2017-08-17 09:48:22
电路是STM32F103与一款赛普拉斯的单片机CY8C5668AXI-LP034直接通过单片机引脚相连从而进行串口通信,已经共地,供电电压都是3.3V。
测试过程中,STM32发给CY8C5668的数据可以收到,但CY8C5668发给STM32的数据总是异常;
异常情况如下:
1.低速率9600~38400之间,发送每帧低于100字节长度的数据接收没问题,但一旦将波特率提高,就难以收到完整的一帧数据,显示为乱码;
2.低速率9600~38400之间,虽然也能收到数据,但测试的误码率也很高,CY8C5668连续发送60000帧数据给STM32,STM32最多只能收到10000~20000个之间的完整整包数据帧。

疑问:STM32不能与其他ARM直接引脚相连进行串口通信?如果能需要在程序或硬件上注意什么?谢谢
...全文
992 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
TCangi 2017-08-21
  • 打赏
  • 举报
回复
你好,是不是你接收中断里做了过多的处理,导致后续字节的接收老是被打断导致的。
tianxj001 2017-08-20
  • 打赏
  • 举报
回复
串口因为是异步方式,影响数据传输精度的原因非常多,串口设备处理能力、缓冲区溢出等等等等。 设想一下,中间任何一个单字节识别错误,而你的字节间隔短于标准字节长度,接下来的数据将会是灾难性的,因此连续串口数据包,必须协调好双方处理能力的匹配,通常安全的做法是建立一个完整的封包协议,一般协议里面至少得包含校验和应答。把超长包拆分并在完成协议要求的应得后,继续数据包的传输,这样才能充分照顾到双方的串口设备处理能力差异,保证数据的完整性。
dceacho 2017-08-18
  • 打赏
  • 举报
回复
速率高丢包率就上来了,难道时处理速度不够快?
DwyaneCV 2017-08-18
  • 打赏
  • 举报
回复
引用 3楼Acuity_ 的回复:
理论上不会有问题,单片机直接连接Cortex A系列的串口,跑Linux系统,与st串口通信无问题;反而之前遇到一个奇葩的问题:两块STM32串口直接连接通信,上电瞬间,如果不是同时上电,总会烧掉其中一块单片机,实在无解,后面加2片232芯片转换下电平,暂时解决。
会不会是两个单片机时钟不同造成的?按理说波特率一样就应该没问题啊
world_all 2017-08-18
  • 打赏
  • 举报
回复
一些单片机的串口通信都是有误码率的。和外部晶振频率有关。
worldy 2017-08-18
  • 打赏
  • 举报
回复
引用 楼主 dwyaneyywade 的回复:
电路是STM32F103与一款赛普拉斯的单片机CY8C5668AXI-LP034直接通过单片机引脚相连从而进行串口通信,已经共地,供电电压都是3.3V。 测试过程中,STM32发给CY8C5668的数据可以收到,但CY8C5668发给STM32的数据总是异常; 异常情况如下: 1.低速率9600~38400之间,发送每帧低于100字节长度的数据接收没问题,但一旦将波特率提高,就难以收到完整的一帧数据,显示为乱码; 2.低速率9600~38400之间,虽然也能收到数据,但测试的误码率也很高,CY8C5668连续发送60000帧数据给STM32,STM32最多只能收到10000~20000个之间的完整整包数据帧。 疑问:STM32不能与其他ARM直接引脚相连进行串口通信?如果能需要在程序或硬件上注意什么?谢谢
波特率定时器设置不对? 连接线太长?建议改双绞线试试 晶振频率误差比较大?导致波特率设置不同步
Acuity. 2017-08-17
  • 打赏
  • 举报
回复
理论上不会有问题,单片机直接连接Cortex A系列的串口,跑Linux系统,与st串口通信无问题;反而之前遇到一个奇葩的问题:两块STM32串口直接连接通信,上电瞬间,如果不是同时上电,总会烧掉其中一块单片机,实在无解,后面加2片232芯片转换下电平,暂时解决。
DwyaneCV 2017-08-17
  • 打赏
  • 举报
回复
引用 1 楼 qq_38204686 的回复:
1. 线太长? 距离过大会导致不稳定 2.硬件问题? 板子有问题.. 3.接触不良? 换线 4.程序问题? 其它中断的影响?
1.PCB板级布线,两个单片机距离很近,所以线很短; 2.只是引脚相连,而且都共地了,实在找不出硬件哪里问题,。。。 3.PCB板级布线....换不了线唉。。。 4.其他中断全关了..... 谢谢啊
大米粥哥哥 2017-08-17
  • 打赏
  • 举报
回复
1. 线太长? 距离过大会导致不稳定 2.硬件问题? 板子有问题.. 3.接触不良? 换线 4.程序问题? 其它中断的影响?

27,372

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧