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

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

查看全部评分

toofree 回答时间: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;
}
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版