OpenEdv-开源电子网

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

关于fdcan,会重复发送的问题

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-11-27
在线时间
3 小时
发表于 2020-3-19 18:08:13 | 显示全部楼层 |阅读模式
1金钱
  fdcan可以发送,但是只有第一帧时正常的,后面每次都会发送同样的两帧。有人碰到这样的问题吗?
只要一写fdcan的TXBAR寄存器,就i会有两帧发送出来,不知道时哪里的问题,有大神知道吗?
帧数据如下,也用示波器看了,确实是一下发送了两帧。
1.png
初始化代码
hfdcan1.Instance = FDCAN1;
  hfdcan1.Init.FrameFormat = FDCAN_FRAME_CLASSIC;
  hfdcan1.Init.Mode = FDCAN_MODE_NORMAL;
  hfdcan1.Init.AutoRetransmission = DISABLE;
  hfdcan1.Init.TransmitPause = DISABLE;
  hfdcan1.Init.ProtocolException = DISABLE;
  hfdcan1.Init.NominalPrescaler = 30;        //480Mhz/30 = 16Mhz
  hfdcan1.Init.NominalSyncJumpWidth = 1;        //10+3+3 = 16 1Mhz bps
  hfdcan1.Init.NominalTimeSeg1 = 9;
  hfdcan1.Init.NominalTimeSeg2 = 6;
  hfdcan1.Init.DataPrescaler = 30;        //480Mhz/30 = 16Mhz
  hfdcan1.Init.DataSyncJumpWidth = 1;        //10+3+3=16  1MHz bps
  hfdcan1.Init.DataTimeSeg1 = 9;
  hfdcan1.Init.DataTimeSeg2 = 6;
  hfdcan1.Init.MessageRAMOffset = 0;
  hfdcan1.Init.StdFiltersNbr = 0;
  hfdcan1.Init.ExtFiltersNbr = 0;
  hfdcan1.Init.RxFifo0ElmtsNbr = 0;
  hfdcan1.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8;
  hfdcan1.Init.RxFifo1ElmtsNbr = 0;
  hfdcan1.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8;
  hfdcan1.Init.RxBuffersNbr = 0;
  hfdcan1.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
  hfdcan1.Init.TxEventsNbr = 0;
  hfdcan1.Init.TxBuffersNbr = 0;
  hfdcan1.Init.TxFifoQueueElmtsNbr = 32;                //32 fifo
  hfdcan1.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
  hfdcan1.Init.TxElmtSize = FDCAN_DATA_BYTES_8;
  if (HAL_FDCAN_Init(&hfdcan1) != HAL_OK)
  {
    Error_Handler();
  }

发送代码:
        FDCAN_txheader.Identifier = 1234;
        FDCAN_txheader.IdType = FDCAN_STANDARD_ID;
        FDCAN_txheader.TxFrameType = FDCAN_DATA_FRAME;
        FDCAN_txheader.DataLength = FDCAN_DLC_BYTES_4;
        FDCAN_txheader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
        FDCAN_txheader.BitRateSwitch = FDCAN_BRS_OFF;//FDCAN_BRS_ON;
        FDCAN_txheader.FDFormat = FDCAN_CLASSIC_CAN;//FDCAN_FD_CAN;
        FDCAN_txheader.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
        FDCAN_txheader.MessageMarker = 0;

                        for(i=0; i<8; i++)
                                CANTxBuf = 0x00;
                        CANTxBuf[0] = SYSTEM_TotalSecs;
                        CANTxBuf[1] = SYSTEM_TotalSecs>>8;
                        CANTxBuf[2] = SYSTEM_TotalSecs>>16;
                        CANTxBuf[3] = SYSTEM_TotalSecs>>24;                       
                        HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &FDCAN_txheader, CANTxBuf);

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-5-17
在线时间
4 小时
发表于 2020-4-22 19:12:39 | 显示全部楼层
请问一下楼主解决没?我最近也在调这个,头大
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-2 09:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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