PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : [سوال] مشکل در دریافت داده از can



arn.hafez
04-06-2016, 02:51
با سلام
دوستان کسی با CAN کار کرده؟
من وقتی که تو مود LoopBack هست اینتراپت RX فعال میشه واسم ولی وقتی که خارجی دو تا پایه رو به هم وصل میکنم هیچ اتفاقی نمیفته
اینم بگم خارچی دو تا پایه رو مستقیم به هم وصل نمیکنم دیود و مقاومت پول اپ رو میذارم
البته من با دو تا برد هم تست کردم که روشون ای سی کن باشه ولی باز هم جواب نداد
بردم هم برد RedBull فروشگاهه دوتا ازش رو خریدم ولی جواب نمیده
کد هم خود مثال ST هست
اینم تابع کانفیگ کن:


void CAN_Config(void){
GPIO_InitTypeDef GPIO_InitStructure;

/* GPIO clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO |RCC_APB2Periph_GPIO_CAN, ENABLE);

/* Configure CAN pin: RX */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_CAN_RX;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIO_CAN, &GPIO_InitStructure);

/* Configure CAN pin: TX */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_CAN_TX;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIO_CAN, &GPIO_InitStructure);

// GPIO_PinRemapConfig(GPIO_Remap_CAN , ENABLE);

/* CAN1 Periph clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);


/* CAN register init */
CAN_DeInit(CAN1);
CAN_StructInit(&CAN_InitStructure);


/* CAN cell init */
CAN_InitStructure.CAN_TTCM = DISABLE;
CAN_InitStructure.CAN_ABOM = DISABLE;
CAN_InitStructure.CAN_AWUM = DISABLE;
CAN_InitStructure.CAN_NART = DISABLE;
CAN_InitStructure.CAN_RFLM = DISABLE;
CAN_InitStructure.CAN_TXFP = DISABLE;
CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;//;CAN_Mode_LoopBack;//
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq;
CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
CAN_InitStructure.CAN_Prescaler = 4;
CAN_Init(CAN1, &CAN_InitStructure);

/** bit rate = 36MHz/(1tq + 3tq + 5tq)/4 = 36MHz/36= 1MHz */
/* CAN filter init */
CAN_FilterInitStructure.CAN_FilterNumber = 0; /* change it to 14!!! */
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh = 0xffff;
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);

/* Transmit */
TxMessage.StdId =1;// 0x321;
TxMessage.ExtId = 0x01;
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = 8;
}

l90mehdi
11-09-2016, 01:30
سلام
بیشتر توضیح بدین
اگر پایه های tx وrx منظورتون هست
باید بگم با ابن کار شما هیچی نباد دریافت کنید دوست عزیز