搜索
bottom↓
回复: 4

STM32F0自带的LIN总线,接收到断开帧,同时也会认为一帧数据?

[复制链接]

出590入992汤圆

发表于 2020-7-3 16:00:47 | 显示全部楼层 |阅读模式
最近调试STM23F0的LIN总线。
发现一个问题:
        在开启:断开帧接收中断与数据接收中断后:
        在总线上出现断开帧的时候,中断检测到了断开帧。同时也检测到了:接收数据不这空中断。

我本身的想法是:如果出现断开帧,接收数据中断不应该出现?

请问有没有遇到这种情况的,还是说:STM32就应该是这样?

出590入992汤圆

 楼主| 发表于 2020-7-3 16:19:21 | 显示全部楼层
现在我认为是这样的:
断开帧让RX上的低电平,导致了:误认为接收了0x00数据。
现在的问题是:如何判断是正确接收了了:0x00,还是由于断开符导致的0x00?

出0入0汤圆

发表于 2020-7-3 23:39:22 | 显示全部楼层
没明白你说的 “断开帧接收中断” 意思
                    “数据接收中断”

出590入992汤圆

 楼主| 发表于 2020-7-4 15:01:39 | 显示全部楼层
zirong0804 发表于 2020-7-3 23:39
没明白你说的 “断开帧接收中断” 意思
                    “数据接收中断”

问题已解决:
原来,当检测到LIN BREAK检测到后:
断开符中断标志会置位。
同时:接收不为空中断标志位与帧错误中断标志位也会置位。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2020-7-4 22:19:26 | 显示全部楼层
SUPER_CRJ 发表于 2020-7-4 15:01
问题已解决:
原来,当检测到LIN BREAK检测到后:
断开符中断标志会置位。

谢谢分享,断开帧接收中断USART_IT_LBD;数据接收中断USART_IT_RXNE
我这边用状态机处理
void LIN_StateMachine(void)
{
  uint8_t Temp = 0;

  switch(LinState)
  {
    case DETECT_BREAK:
      if(USART_GetFlagStatus(USART3, USART_IT_LBD) != RESET)
      {
        USART_ClearFlag(USART3, USART_IT_LBD);
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 04:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表