[STM32L4] 帮忙看看问题在哪?

[复制链接]
 楼主| juventus9554 发表于 2021-2-7 21:52 | 显示全部楼层 |阅读模式
stm32l432kc+sn65hvd230,接收不到东西
zhanghqi 发表于 2021-2-7 21:54 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| juventus9554 发表于 2021-2-7 21:57 | 显示全部楼层
230的rs端接100k电阻到地

发送端:
/* CAN1 init function */
static void MX_CAN1_Init(void)
{
        CAN_FilterConfTypeDef  sFilterConfig;
  static CanTxMsgTypeDef        TxMessage;
  static CanRxMsgTypeDef        RxMessage;
        
  hcan1.Instance = CAN1;
        hcan1.pTxMsg = &TxMessage;
  hcan1.pRxMsg = &RxMessage;
        
  hcan1.Init.Prescaler = 8;
  hcan1.Init.Mode = CAN_MODE_NORMAL;
  hcan1.Init.SJW = CAN_SJW_1TQ;
  hcan1.Init.BS1 = CAN_BS1_6TQ;
  hcan1.Init.BS2 = CAN_BS2_3TQ;
  hcan1.Init.TTCM = DISABLE;
  hcan1.Init.ABOM = DISABLE;
  hcan1.Init.AWUM = DISABLE;
  hcan1.Init.NART = DISABLE;
  hcan1.Init.RFLM = DISABLE;
  hcan1.Init.TXFP = DISABLE;
  if (HAL_CAN_Init(&hcan1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
          /*##-2- Configure the CAN Filter ###########################################*/
  sFilterConfig.FilterNumber = 0;
  sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
  sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
  sFilterConfig.FilterIdHigh = 0x0000;
  sFilterConfig.FilterIdLow = 0x0000;
  sFilterConfig.FilterMaskIdHigh = 0x0000;
  sFilterConfig.FilterMaskIdLow = 0x0000;
  sFilterConfig.FilterFIFOAssignment = 0;
  sFilterConfig.FilterActivation = ENABLE;
  sFilterConfig.BankNumber = 14;

  if (HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig) != HAL_OK)
  {
    /* Filter configuration Error */
    Error_Handler();
  }

  /*##-3- Configure Transmission process #####################################*/
  hcan1.pTxMsg->StdId = 0x321;
  hcan1.pTxMsg->ExtId = 0x01;
  hcan1.pTxMsg->RTR = CAN_RTR_DATA;
  hcan1.pTxMsg->IDE = CAN_ID_STD;
  hcan1.pTxMsg->DLC = 8;

}
在主函数的whil(1)里
        for(uint8_t ii = 0; ii < 8; ii++)
        {
                hcan1.pTxMsg->Data[ii] = 0xAA;
        }
        HAL_CAN_Transmit(&hcan1,10);

接收端
static void MX_CAN1_Init(void)
{
        CAN_FilterConfTypeDef  sFilterConfig;
  static CanTxMsgTypeDef        TxMessage;
  static CanRxMsgTypeDef        RxMessage;
        
  hcan1.Instance = CAN1;
        hcan1.pTxMsg = &TxMessage;
  hcan1.pRxMsg = &RxMessage;
        
  hcan1.Init.Prescaler = 8;
  hcan1.Init.Mode = CAN_MODE_NORMAL;
  hcan1.Init.SJW = CAN_SJW_1TQ;
  hcan1.Init.BS1 = CAN_BS1_6TQ;
  hcan1.Init.BS2 = CAN_BS2_3TQ;
  hcan1.Init.TTCM = DISABLE;
  hcan1.Init.ABOM = DISABLE;
  hcan1.Init.AWUM = DISABLE;
  hcan1.Init.NART = DISABLE;
  hcan1.Init.RFLM = DISABLE;
  hcan1.Init.TXFP = DISABLE;
  if (HAL_CAN_Init(&hcan1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
          /*##-2- Configure the CAN Filter ###########################################*/
  sFilterConfig.FilterNumber = 0;
  sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
  sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
  sFilterConfig.FilterIdHigh = 0x0000;
  sFilterConfig.FilterIdLow = 0x0000;
  sFilterConfig.FilterMaskIdHigh = 0x0000;
  sFilterConfig.FilterMaskIdLow = 0x0000;
  sFilterConfig.FilterFIFOAssignment = 0;
  sFilterConfig.FilterActivation = ENABLE;
  sFilterConfig.BankNumber = 14;

  if (HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig) != HAL_OK)
  {
    /* Filter configuration Error */
    Error_Handler();
  }

  /*##-3- Configure Transmission process #####################################*/
  hcan1.pTxMsg->StdId = 0x321;
  hcan1.pTxMsg->ExtId = 0x01;
  hcan1.pTxMsg->RTR = CAN_RTR_DATA;
  hcan1.pTxMsg->IDE = CAN_ID_STD;
  hcan1.pTxMsg->DLC = 8;
}

主函数里
        __HAL_CAN_ENABLE_IT(&hcan1,CAN_IT_FF0);
        HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn);
        if (HAL_CAN_Receive_IT(&hcan1, CAN_FIFO0) != HAL_OK)
  {
    /* Reception Error */
    Error_Handler();
  }
yszong 发表于 2021-2-7 22:00 | 显示全部楼层
感觉是230有问题
 楼主| juventus9554 发表于 2021-2-7 22:02 | 显示全部楼层
用示波器接在230的D,R上能看到信号,但在CANH和CANL上就没有信号了
 楼主| juventus9554 发表于 2021-2-7 22:06 | 显示全部楼层
 楼主| juventus9554 发表于 2021-2-7 22:08 | 显示全部楼层
230接法如图,漏了什么?
pengf 发表于 2021-2-7 22:10 | 显示全部楼层
是不是不匹配 呀
houcs 发表于 2021-2-7 22:12 | 显示全部楼层
能看到发送端发出数据了吗
ousj 发表于 2021-2-7 22:16 | 显示全部楼层
能看到发送端发出数据了吗
木木guainv 发表于 2021-3-2 18:54 | 显示全部楼层
能确认发送数据了吗
磨砂 发表于 2021-3-2 18:56 | 显示全部楼层
先排除发送端的问题吧
晓伍 发表于 2021-3-2 18:58 | 显示全部楼层
感觉接的没问题啊
八层楼 发表于 2021-3-2 19:01 | 显示全部楼层
需要接终端电阻吗
观海 发表于 2021-3-2 19:02 | 显示全部楼层
用示波器看看波形
SamYS 发表于 2021-5-19 16:05 | 显示全部楼层
可以用回环测试模式,看看能不能收到自己发的数据,跟外部的CAN总线芯片就没关系了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

900

主题

12190

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

900

主题

12190

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部