stm32f103的串口如何识别串口数据前的低电平信号(break信号)

储哈哈 2018-08-31 04:58:00
如图DMX512信号来临前,会有一个持续大于88us的低电平,然后开始真正的串口数据;
现在无法识别这个break信号,希望有高手能帮忙,卡了一周了,

关于这个break:
发送端是这么处理的:发送端将TX引脚发送持续88us的低电平;然后再开启串口数据发送。

关键问题点 在于:接收端串口接收引脚如何识别这个低电平,串口数据来临前先有的这个低电平(即break)信号;
程序的后面框架是当识别了break来临,串口接收数据;每次break来临,串口数据才接收放置数组。


看了数据手册,尝试用FE标志位来判断,但是一直没有成功过,stm32f103没有break中断;
大侠给个帮助
...全文
1578 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_27364827 2018-09-20
  • 打赏
  • 举报
回复
1、利用IO捕获,先关闭串口,当捕获你想要的break时候,开启串口,如此避开;
2、利用错误帧+空闲帧方法是可以实现该信号的收集的
qq_39138630 2018-09-02
  • 打赏
  • 举报
回复
1.你的波形图似乎不大正确;作为一个单线传输线的异步通信机制,需要有起始信号,数据信号,结束信号等组成;另外串行通信另外一个很重要的点就是设置波特率(1s传输多少个bit),以在接受端恢复接受时钟信号。
2.我查阅到的DMX512波形图如下:
引用
http://www.elecfans.com/led/ledzhaoming/435695.html

无论如何,先找示波器确认你的DMX512波形,读取数据,分析数据编码格式。才能准确通过软件实现数据存取。
3.串口通信有其标准的格式,DMX512不是标准的串口通信,使用单片机串口接收方式应该不能取到标准的数据。

4.是否有DMX512接受时序标准相适应的单片机通信接口(硬件实现的)?
5.如果没有,只能靠软件模拟的方式读取数据;具体方式是通过精确的定时器(循环定时读取IO状态)先把(break)低电平时间读出来88us~1000000us,用同样的方式再读MAB,,SC,,数据帧1,数据帧2~~~数据帧512,,MTBP,,,一包完整数据读完。
tianxj001 2018-09-01
  • 打赏
  • 举报
回复
就像你发送采用部分软件部分硬件一样,你接受也必须这样处理。
先关闭接受使能,RX当作IO中断处理,直读低电平时间,合格的,确认是DMX512的BREAK信号,然后直接开启RX接受使能。等每个完整数据帧标志处理完成,就关闭RX使能。

5,315

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用专区,欢迎大家讨论硬件相关内容 宝藏!数字IC精品文章收录(CSDN近500篇) http://t.csdn.cn/QbivO
社区管理员
  • 硬件使用社区
  • 张江打工人
加入社区
  • 近7日
  • 近30日
  • 至今

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