你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f uart 如何接受电脑串口发送的break 信号

[复制链接]
roothan2018 提问时间:2018-3-23 22:46 /
    请教一下论坛内高手, 我看到老外的很多仪器上,串口通信软件,都会有个break 命名, 通过电脑串口发送break,来初始化仪器,通信。 想问一下,stm32f103 ,怎么样才能接受这个break信号,如何判断接受到这个break信号,应该如何判断。 用示波器看的tx管脚是有个电平变化。
收藏 评论10 发布时间:2018-3-23 22:46

举报

10个回答
xmshao 回答时间:2018-3-28 14:20:14
uart协议中有break 规定:
A Break character is interpreted on receiving “0”s for a frame period. At the end of the
break frame the transmitter inserts either 1 or 2 stop bits (logic “1” bit) to acknowledge the
start bit.

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

七哥 回答时间:2018-3-23 23:54:41
用逻辑分析或都示波器仪抓一下,或者用串口监控,看一下这个“break”到底是发的什么数据。
请抓个波形先。只要有准确的波形,就能给你分析出数据来

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

roothan2018 回答时间:2018-3-24 00:53:22
这个 *break* 是windows 串口api的 一个函数, 没有具体的协议字节的。 就是发个中断下去,唤醒下面的设备用的,比如下面的设备休眠,复位,通过这个break 唤醒的。
roothan2018 回答时间:2018-3-24 00:55:04

实际示波器看tx脚是拉一个跳变的方波出来。但是stm32 怎么来配置,响应这个信号,不知道?请高手指点一下。
MrJiu 回答时间:2018-3-24 09:51:39
MCU休眠的话,就采用外部中断唤醒。。。如果MCU正常工作,就采用外部中断,或者捕捉。。。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

roothan2018 回答时间:2018-3-28 01:09:36
不是这个概念,串口中断唤醒的  usart 的库文件中有 send_break的函数,不知道是怎么用的,我现在是pc串口发下来的break,stm32f103下不知道如何处理。
maxtch 回答时间:2018-3-28 01:29:39
串口有一个 break 信号:正常情况下,安静的 UART 信号应该是高电平;如果连续低电平超过一个字符长度,这就叫做一个 break 信号。STM32 的 UART 是有这个 break 检测功能的,找一下 USART 设备 SR 寄存器里面的数据。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

STM1024 回答时间:2018-3-28 17:58:08
本帖最后由 stm1024 于 2018-3-28 18:00 编辑

你可以看看库函数是如何实现的,这个在stm32f10x_usart.c的618行(库版本3.5):
  1. /**
  2.   * @brief  Transmits break characters.
  3.   * @param  USARTx: Select the USART or the UART peripheral.
  4.   *   This parameter can be one of the following values:
  5.   *   USART1, USART2, USART3, UART4 or UART5.
  6.   * @retval None
  7.   */
  8. void USART_SendBreak(USART_TypeDef* USARTx)
  9. {
  10.   /* Check the parameters */
  11.   assert_param(IS_USART_ALL_PERIPH(USARTx));
  12.   
  13.   /* Send break characters */
  14.   USARTx->CR1 |= CR1_SBK_Set;
  15. }
复制代码
看看CR1寄存器中的字段: 1.png 2.png 具体细节被硬件隐藏了,应该是和楼上所说的一样,要参考串口协议。








评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

roothan2018 回答时间:2018-9-13 23:33:56
我们在usart.c 库里,有发送的函数,,但是接受的是没有的,* @brief  Transmits break characters.
  * @param  USARTx: Select the USART or the UART peripheral.
  *   This parameter can be one of the following values:
  *   USART1, USART2, USART3, UART4 or UART5.
  * @retval None
  */
void USART_SendBreak(USART_TypeDef* USARTx)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  
  /* Send break characters */
  USARTx->CR1 |= CR1_SBK_Set;
}
roothan2018 回答时间:2018-9-13 23:38:31
另外在lin模式下,是有这个break 帧的,但是这个是同步模式下。。。

LIN 主從同步資料傳輸,使用break傳輸/偵測達到此目的。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版