CAN(Transmit 2 Farme clear time)
hello
first of all, sorry for my short English skills....
I am working on a project that uses STM32F207 and STM32 HAL Driver using STM32CubeMX.
I succeed in Tx and Rx.
I have a question for CAN.
Data is only 8byte in CAN Frame
If I transmit 2 Frame, I have to send each 1 Frame between 7ms(when data is 8byte).
I think 7ms is too long.... but I cannot find in referenc manual about clear Tx mailbox time.
how and where can I find about clear Tx mailbox time?
Thank you in advane.
http://prev.kr/app/ColorScripter
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
/*** CAN 2.0B send 2 Frame ***/
Send_CAN1_MSG(0x080, 0x02000C12, CAN_ID_EXT, 8, 0x00026364, 0x00340100);
// 1Frame
HAL_Delay(7);
// 8byte -> clear delay : 7ms
Send_CAN1_MSG(0x080, 0x02001012, CAN_ID_EXT, 8, 0x01000000, 0x00);
// 2Frame
// Send_CAN1_MSG(0x080, 0x02000C12, CAN_ID_EXT, 2, 0xFFFF0000, 0x00);
// HAL_Delay(4); // 2byte -> clear delay : 4ms
// Send_CAN1_MSG(0x080, 0x02000C12, CAN_ID_EXT, 2, 0xCCCC0000, 0x00);
// Send_CAN1_MSG(0x080, 0x02000C12, CAN_ID_EXT, 1, 0xFF000000, 0x00);
// HAL_Delay(2); // 1byte -> clear delay : 2ms
// Send_CAN1_MSG(0x080, 0x02000C12, CAN_ID_EXT, 1, 0xCC000000, 0x00);
void
Send_CAN1_MSG(uint16_t StdId, uint32_t ExtId, uint32_t IDE, uint8_t Data_Length, uint32_t Data_High, uint32_t Data_Low){
/*** Identifier ***/
hcan1.pTxMsg->StdId = StdId;
hcan1.pTxMsg->ExtId = ExtId;
/*** Remote Transmission Request ***/
hcan1.pTxMsg->RTR = CAN_RTR_DATA;
/*** IDentifier Extension bit ***/
hcan1.pTxMsg->IDE = IDE;
/*** Data Length Code ***/
hcan1.pTxMsg->DLC = Data_Length;
/*** Data[0] ~ [3] ***/
hcan1.pTxMsg->Data[0] = (Data_High & 0xFF000000)>>24;
hcan1.pTxMsg->Data[1] = (Data_High & 0x00FF0000)>>16;
hcan1.pTxMsg->Data[2] = (Data_High & 0x0000FF00)>>8;
hcan1.pTxMsg->Data[3] = (Data_High & 0x000000FF);
/*** Data[4] ~ [7] ***/
hcan1.pTxMsg->Data[4] = (Data_Low & 0xFF000000)>>24;
hcan1.pTxMsg->Data[5] = (Data_Low & 0x00FF0000)>>16;
hcan1.pTxMsg->Data[6] = (Data_Low & 0x0000FF00)>>8;
hcan1.pTxMsg->Data[7] = (Data_Low & 0x000000FF);
/*** Transmission ***/
HAL_CAN_Transmit(&hcan1, 10);
}
#mailbox #stm32 #can