深圳市瑞申电子有限公司

深圳市瑞申电子有限公司是一家10年专业大功率电感生产加工厂商,主要以大功率,大电流、扁平线圈电感、平面变压器设计、生产、销售工厂。设计、绕线、组装、检测、包装、出货等全制程的工艺流程!拥有完整、科学的质量管理体系。专业技术团队10人,我们的诚信、实力和产品质量获得业界的认可。欢迎各界朋友莅临参观、指导和业务洽谈。 ...

求助!STM32F105 CAN重映射问题

时间:2021-12-12 06:20:15 点击:
大家好!
想要向大家请教一下CAN端口重映射这个功能。
目前使用的芯片是STM32F105,两路CAN均使用了端口重映射。

目前使用环回模式调试,CAN1,CAN2均可以收到CAN信号。
但是使用普通模式下,使用CAN卡向其发送信号,接收不到。
向CAN卡发送信号也同样接收不到。
想请问一下,重映射部分是否有配置出错。

主要是CAN2部分,CAN1部分由于板子的收发器有些问题所以还没法进行普通模式的调试。
CAN2部分的话,收发器用的TJA1050,测得芯片RX引脚是3.1V,TX引脚是0V。

希望大家能一起看一下!感激不尽!

配置如下
void CAN1_Mode_Init(void)
{
        GPIO_InitTypeDef                   GPIO_InitStructure;
        CAN_InitTypeDef        CAN_InitStructure;
  CAN_FilterInitTypeDef  CAN_FilterInitStructure;
        
        RCC_APB2PeriphclockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
        
        GPIO_PinRemapConfig(GPIO_Remap1_CAN1 , ENABLE);
        
        /* Configure CAN1 RX pin */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
        
        /* Configure CAN1 TX pin */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
        
        
        
        CAN_DeInit(CAN1);
        CAN_Structinit(&CAN_InitStructure);
        
        CAN_InitStructure.CAN_TTCM=DISABLE;        
  CAN_InitStructure.CAN_ABOM=DISABLE;      
  CAN_InitStructure.CAN_AWUM=DISABLE;        
  CAN_InitStructure.CAN_NART=ENABLE;      
  CAN_InitStructure.CAN_RFLM=DISABLE;        
  CAN_InitStructure.CAN_TXFP=DISABLE;        
        
        CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;           
  CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;        
  CAN_InitStructure.CAN_BS1=CAN_BS1_9tq;        
  CAN_InitStructure.CAN_BS2=CAN_BS2_8tq;        
  CAN_InitStructure.CAN_Prescaler=4;                 //500Kbps
        CAN_Init(CAN1, &CAN_InitStructure);
        
        CAN_FilterInitStructure.CAN_FilterNumber=0;         
  CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;        
  CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;         
  CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;         
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;        
  CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;   
  CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;        
  CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;        
  CAN_FilterInit(&CAN_FilterInitStructure);
}

void CAN2_Mode_Init(void)
{
        GPIO_InitTypeDef                   GPIO_InitStructure;
        CAN_InitTypeDef        CAN_InitStructure;
  CAN_FilterInitTypeDef  CAN_FilterInitStructure;
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
        
        GPIO_PinRemapConfig(GPIO_Remap_CAN2 , ENABLE);
        
        /* Configure CAN2 RX pin */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
        
        /* Configure CAN2 TX pin */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
        
        
        
        CAN_DeInit(CAN2);
        CAN_StructInit(&CAN_InitStructure);
        
        CAN_InitStructure.CAN_TTCM=DISABLE;      
  CAN_InitStructure.CAN_ABOM=DISABLE;        
  CAN_InitStructure.CAN_AWUM=DISABLE;      
  CAN_InitStructure.CAN_NART=ENABLE;        
  CAN_InitStructure.CAN_RFLM=DISABLE;        
  CAN_InitStructure.CAN_TXFP=DISABLE;      
        
        CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;           
  CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;         
  CAN_InitStructure.CAN_BS1=CAN_BS1_9tq;         
  CAN_InitStructure.CAN_BS2=CAN_BS2_8tq;         
  CAN_InitStructure.CAN_Prescaler=4;                 //500Kbps
        CAN_Init(CAN2, &CAN_InitStructure);
        
        CAN_FilterInitStructure.CAN_FilterNumber=14;        
  CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;         
  CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;         
  CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;         
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;      
  CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;   
  CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;        
  CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;      
  CAN_FilterInit(&CAN_FilterInitStructure);
}


此问答贴被选为2月23日的每日一答贴,活动详情见:https://bbs.elecfans.com/jishu_1111064_1_1.html  希望大家可以踊跃帮助坛友解决问题,谢谢。


采用示波器的单次触发功能看看是否有波形输出,如果有检查总线是否连接正确,波特率是否正确


这个可以去开源电子网找一下答案


致芯科技,芯片解密


致芯科技,芯片解密,15313166207,qq2424720092


STM32F105


波特率,过滤器配置正不正确

大功率电感厂家 |大电流电感工厂

  • 基于FPGA的X射线安检设备控制器
    摘 要:依据X射线安检设备各部分工作原理及控制要求,本文采用FPGA和以太网技术设计了基于FPGA的X射线安检设备控制器。本文以Xilinx公司的ISE为开发平台,在ModelSim中仿真了控制器各
  • 浅谈电气现场总线控制系统(FCS)
    浅谈电气现场总线控制系统(FCS) 0 引言 随着我国电力行业的高速发展,DCS的应用也越来越广泛,但DCS主要完成的是汽轮机、锅炉的自动化过程控制,对电气部分的自动化结合较少,DCS一般未充分考虑
  • 基于DSP正弦信号发生器设计
    摘要:提出了一种基于TMS320C5402实现正弦信号发生器的设计原理与方法,介绍了所设计的正弦信号发生器硬件电路结构和软件程序流程图。结合DSP硬件特性,通过使用泰勒级数展开法得到设定参数的正弦波形
  • 大功率电感