1
- /*----------------------------------------------------------------------------
1
+ /*----------------------------------------------------------------------------
2
2
* R T L - C A N D r i v e r
3
3
*----------------------------------------------------------------------------
4
4
* Name: CAN_Hw.c
@@ -75,11 +75,17 @@ static CAN_ERROR CAN_hw_set_baudrate (U32 ctrl, U32 baudrate) {
75
75
appropriate bit timing */
76
76
if (baudrate <= 500000 ) {
77
77
brp = (brp / 18 ) / baudrate ;
78
-
78
+
79
79
/* Load the baudrate registers BTR */
80
80
/* so that sample point is at about 72% bit time from bit start */
81
- /* TSEG1 = 12, TSEG2 = 5, SJW = 4 => 1 CAN bit = 18 TQ, sample at 72% */
82
- CAN_set_timing ( 12 , 5 , 4 , brp );
81
+ if (baudrate <= 10000 ) {
82
+ /* TSEG1 = 3, TSEG2 = 2, SJW = 4 => 1 CAN bit = 18 TQ, sample at 72% */
83
+ CAN_set_timing (3 , 2 , 4 , brp * 3 );
84
+ }
85
+ else {
86
+ /* TSEG1 = 12, TSEG2 = 5, SJW = 4 => 1 CAN bit = 18 TQ, sample at 72% */
87
+ CAN_set_timing (12 , 5 , 4 , brp );
88
+ }
83
89
} else if (baudrate <= 1000000 ) {
84
90
brp = (brp / 9 ) / baudrate ;
85
91
@@ -168,7 +174,7 @@ U32 gCtrl;
168
174
U32 gBaudrate ;
169
175
CAN_ERROR CAN_hw_init (U32 ctrl , U32 baudrate )
170
176
{
171
- //徐成
177
+ //其냥
172
178
#if CAN_ART_Enable
173
179
174
180
CAN -> MCR = CAN_MCR_INRQ ;
@@ -191,7 +197,7 @@ CAN_ERROR CAN_hw_init (U32 ctrl, U32 baudrate)
191
197
192
198
CAN_ERROR CAN_hw_init_ex (U32 ctrl , U32 baudrate , U8 bArt )
193
199
{
194
- //徐成
200
+ //其냥
195
201
if (bArt > 0 )
196
202
{
197
203
CAN -> MCR = CAN_MCR_INRQ ;
@@ -215,7 +221,7 @@ CAN_ERROR CAN_hw_init_ex (U32 ctrl, U32 baudrate, U8 bArt)
215
221
216
222
CAN_ERROR CAN_hw_reinit (U32 ctrl , U32 baudrate )
217
223
{
218
- //CAN强行复位
224
+ //CAN퓻契릿貫
219
225
CAN -> MCR = CAN_MCR_RESET ;
220
226
CAN -> MCR &= ~CAN_MCR_SLEEP ;
221
227
@@ -224,7 +230,7 @@ CAN_ERROR CAN_hw_reinit(U32 ctrl, U32 baudrate)
224
230
225
231
CAN_ERROR CAN_hw_reinit_ex (U32 ctrl , U32 baudrate , U8 bArt )
226
232
{
227
- //CAN强行复位
233
+ //CAN퓻契릿貫
228
234
CAN -> MCR = CAN_MCR_RESET ;
229
235
CAN -> MCR &= ~CAN_MCR_SLEEP ;
230
236
@@ -247,7 +253,7 @@ CAN_ERROR CAN_hw_start (U32 ctrl)
247
253
{
248
254
249
255
CAN -> MCR &= ~CAN_MCR_INRQ ; /* normal operating mode, reset INRQ */
250
- //徐成
256
+ //其냥
251
257
#if CAN_ABOM_Enable
252
258
CAN -> MCR |= CAN_MCR_ABOM ;
253
259
#endif
@@ -510,7 +516,7 @@ CAN_ERROR CAN_hw_rx_object_mask (U32 ctrl, U32 ch, U32 id, U32 mask, CAN_FORMAT
510
516
}
511
517
512
518
513
- //带MASK和INDEX的FILTER
519
+ //던MASK뵨INDEX돨FILTER
514
520
CAN_ERROR CAN_hw_rx_object_mask_idx (U32 ctrl , U32 ch , U32 id , U32 mask , U8 idx , U8 enable , CAN_FORMAT format )
515
521
{
516
522
U32 CAN_msgId = 0 ;
@@ -630,26 +636,26 @@ void USB_LP_CAN_RX0_IRQHandler (void) {
630
636
631
637
/*--------------------------- CAN_SetErrCallBack ------------------------------
632
638
*
633
- * 设置错误处理回调函数
639
+ * 零댄轎뇹잿쀼딧변鑒
634
640
*
635
- * 参数 : ceh:错误处理函数指针
641
+ * 꽝鑒 : ceh:댄轎뇹잿변鑒寧濾
636
642
*---------------------------------------------------------------------------*/
637
643
static CANERRHANDLER gCanErrHandler = NULL ;
638
644
void CAN_err_config (CANERRHANDLER ceh )
639
645
{
640
- //徐成改动
646
+ //其냥맣땡
641
647
NVIC_InitTypeDef NVIC_InitStructure ;
642
648
643
649
gCanErrHandler = ceh ;
644
650
645
- //徐成
651
+ //其냥
646
652
NVIC_InitStructure .NVIC_IRQChannel = CAN_SCE_IRQChannel ;
647
653
NVIC_InitStructure .NVIC_IRQChannelPreemptionPriority = 0 ;
648
654
NVIC_InitStructure .NVIC_IRQChannelSubPriority = 0 ;
649
655
NVIC_InitStructure .NVIC_IRQChannelCmd = ENABLE ;
650
656
NVIC_Init (& NVIC_InitStructure );
651
657
652
- CAN_ITConfig (CAN_IT_ERR |CAN_IT_EWG |CAN_IT_EPV |CAN_IT_BOF , ENABLE ); //错误警告中断屏蔽|错误被动中断屏蔽|上次错误号中断屏蔽|错误中断屏蔽
658
+ CAN_ITConfig (CAN_IT_ERR |CAN_IT_EWG |CAN_IT_EPV |CAN_IT_BOF , ENABLE ); //댄轎쒸멩櫓뙤팁귁|댄轎굳땡櫓뙤팁귁|늴댄轎뵀櫓뙤팁귁|댄轎櫓뙤팁귁
653
659
}
654
660
655
661
void CAN_SCE_IRQHandler (void )
0 commit comments