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