大家好!
想要向大家請教一下CAN端口重映射這個功能。
目前使用的芯片是STM32F105,兩路CAN均使用了端口重映射。
目前使用環(huán)回模式調(diào)試,CAN1,CAN2均可以收到CAN信號。
但是使用普通模式下,使用CAN卡向其發(fā)送信號,接收不到。
向CAN卡發(fā)送信號也同樣接收不到。
想請問一下,重映射部分是否有配置出錯。
主要是CAN2部分,CAN1部分由于板子的收發(fā)器有些問題所以還沒法進行普通模式的調(diào)試。
CAN2部分的話,收發(fā)器用的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??希望大家可以踴躍幫助壇友解決問題,謝謝。
采用示波器的單次觸發(fā)功能看看是否有波形輸出,如果有檢查總線是否連接正確,波特率是否正確
這個可以去開源電子網(wǎng)找一下答案
致芯科技,芯片解密
致芯科技,芯片解密,15313166207,qq2424720092
STM32F105
波特率,過濾器配置正不正確
大功率電感廠家 |大電流電感工廠
基于FPGA的X射線安檢設(shè)備控制器 摘 要:依據(jù)X射線安檢設(shè)備各部分工作原理及控制要求,本文采用FPGA和以太網(wǎng)技術(shù)設(shè)計了基于FPGA的X射線安檢設(shè)備控制器。本文以Xilinx公司的ISE為開發(fā)平臺,在ModelSim中仿真了控制器各
淺談電氣現(xiàn)場總線控制系統(tǒng)(FCS)淺談電氣現(xiàn)場總線控制系統(tǒng)(FCS) 0 引言 隨著我國電力行業(yè)的高速發(fā)展,DCS的應(yīng)用也越來越廣泛,但DCS主要完成的是汽輪機、鍋爐的自動化過程控制,對電氣部分的自動化結(jié)合較少,DCS一般未充分考慮
基于DSP正弦信號發(fā)生器設(shè)計摘要:提出了一種基于TMS320C5402實現(xiàn)正弦信號發(fā)生器的設(shè)計原理與方法,介紹了所設(shè)計的正弦信號發(fā)生器硬件電路結(jié)構(gòu)和軟件程序流程圖。結(jié)合DSP硬件特性,通過使用泰勒級數(shù)展開法得到設(shè)定參數(shù)的正弦波形