OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2669|回复: 1

关于hal库CAN初始化配置导致无法正常输出波形

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2018-12-12
在线时间
7 小时
发表于 2019-12-30 11:37:46 | 显示全部楼层 |阅读模式
20金钱
附上代码,问题如图,当使用初始化代码1时波形无输出,使用初始化代码2是波形正常输出。
两份初始化代码的区别就在于波特率的设置。
根据波特率计算公式这两个位置应该是同级别的,为什么换了一下位置居然有着如此大的差别






初始化代码1:  
hcan.Instance = CAN;
  hcan.Init.Prescaler = 40;
  hcan.Init.Mode = CAN_MODE_NORMAL;
  hcan.Init.SyncJumpWidth = CAN_SJW_2TQ;
  hcan.Init.TimeSeg1 = CAN_BS1_1TQ;
  hcan.Init.TimeSeg2 = CAN_BS2_2TQ;
  hcan.Init.TimeTriggeredMode = DISABLE;
  hcan.Init.AutoBusOff = DISABLE;
  hcan.Init.AutoWakeUp = DISABLE;
  hcan.Init.AutoRetransmission = DISABLE;
  hcan.Init.ReceiveFifoLocked = DISABLE;
  hcan.Init.TransmitFifoPriority = DISABLE;
  if (HAL_CAN_Init(&hcan) != HAL_OK)
  {
    Error_Handler();
  }


初始化代码2:

    hcan.Instance = CAN;
    hcan.Init.Prescaler = 40;
    hcan.Init.Mode = CAN_MODE_NORMAL;
    hcan.Init.SyncJumpWidth = CAN_SJW_2TQ;
    hcan.Init.TimeSeg1 = CAN_BS1_2TQ;
    hcan.Init.TimeSeg2 = CAN_BS2_1TQ;
    hcan.Init.TimeTriggeredMode = DISABLE;
    hcan.Init.AutoBusOff = DISABLE;
    hcan.Init.AutoWakeUp = DISABLE;
    hcan.Init.AutoRetransmission = DISABLE;
    hcan.Init.ReceiveFifoLocked = DISABLE;
    hcan.Init.TransmitFifoPriority = DISABLE;
    if (HAL_CAN_Init(&hcan) != HAL_OK)
    {
      Error_Handler();
    }

微信图片_20191230113441.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2018-12-12
在线时间
7 小时
 楼主| 发表于 2019-12-30 17:08:29 | 显示全部楼层
添加测试结果:
针对这个问题我进行了很多次的测量,TimeSeg1寄存器赋值CAN_BS1_1TQ时会无法输出波形,另外不单纯是hal库问题,经过测试标准库也是同样问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 17:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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