I did it and it's work but that code is deep in register I think that code is so difficul for me. I just want to config it like this below code
Code C - [expand] |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| void CAN_setup()
{
CAN_InitTypeDef CAN_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;
u8 TransmitMailbox = 0; // Keep number of mail box status
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE);
/* CAN register init */
CAN_DeInit();
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_LoopBack;
//CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;
/*
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
CAN_InitStructure.CAN_Prescaler=1;
*/
//CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
//CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;
//CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
//CAN_InitStructure.CAN_Prescaler=5; //72MHz/2=36MHz=PCLK1 / 5 => 7200KHz / (1+8+7) => 450KHz
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1=CAN_BS1_10tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
CAN_InitStructure.CAN_Prescaler=4; //72MHz/2=36MHz=PCLK1 / 4 => 9000KHz / (1+10+7) => 500KHz
//CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
//CAN_InitStructure.CAN_BS1=CAN_BS1_10tq;
//CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
//CAN_InitStructure.CAN_Prescaler=2; //72MHz/2=36MHz=PCLK1 / 2 => 18000KHz / (1+10+7) => 1000KHz
CAN_Init(&CAN_InitStructure);
// CAN filter setup
CAN_FilterInitStructure.CAN_FilterNumber=1;
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);
} |
Last edited by a moderator: