Skip to content

Commit c744d08

Browse files
committed
fix: baudrates <= 10000 were not working. This push fixes it
1 parent dd845fb commit c744d08

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

Source/CAN_Hw.c

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*----------------------------------------------------------------------------
1+
/*----------------------------------------------------------------------------
22
* R T L - C A N D r i v e r
33
*----------------------------------------------------------------------------
44
* Name: CAN_Hw.c
@@ -75,11 +75,17 @@ static CAN_ERROR CAN_hw_set_baudrate (U32 ctrl, U32 baudrate) {
7575
appropriate bit timing */
7676
if (baudrate <= 500000) {
7777
brp = (brp / 18) / baudrate;
78-
78+
7979
/* Load the baudrate registers BTR */
8080
/* 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+
}
8389
} else if (baudrate <= 1000000) {
8490
brp = (brp / 9) / baudrate;
8591

@@ -168,7 +174,7 @@ U32 gCtrl;
168174
U32 gBaudrate;
169175
CAN_ERROR CAN_hw_init (U32 ctrl, U32 baudrate)
170176
{
171-
//徐成
177+
//其냥
172178
#if CAN_ART_Enable
173179

174180
CAN->MCR = CAN_MCR_INRQ;
@@ -191,7 +197,7 @@ CAN_ERROR CAN_hw_init (U32 ctrl, U32 baudrate)
191197

192198
CAN_ERROR CAN_hw_init_ex (U32 ctrl, U32 baudrate, U8 bArt)
193199
{
194-
//徐成
200+
//其냥
195201
if(bArt > 0)
196202
{
197203
CAN->MCR = CAN_MCR_INRQ;
@@ -215,7 +221,7 @@ CAN_ERROR CAN_hw_init_ex (U32 ctrl, U32 baudrate, U8 bArt)
215221

216222
CAN_ERROR CAN_hw_reinit(U32 ctrl, U32 baudrate)
217223
{
218-
//CAN强行复位
224+
//CAN퓻契릿貫
219225
CAN->MCR = CAN_MCR_RESET;
220226
CAN->MCR &= ~CAN_MCR_SLEEP;
221227

@@ -224,7 +230,7 @@ CAN_ERROR CAN_hw_reinit(U32 ctrl, U32 baudrate)
224230

225231
CAN_ERROR CAN_hw_reinit_ex(U32 ctrl, U32 baudrate, U8 bArt)
226232
{
227-
//CAN强行复位
233+
//CAN퓻契릿貫
228234
CAN->MCR = CAN_MCR_RESET;
229235
CAN->MCR &= ~CAN_MCR_SLEEP;
230236

@@ -247,7 +253,7 @@ CAN_ERROR CAN_hw_start (U32 ctrl)
247253
{
248254

249255
CAN->MCR &= ~CAN_MCR_INRQ; /* normal operating mode, reset INRQ */
250-
//徐成
256+
//其냥
251257
#if CAN_ABOM_Enable
252258
CAN->MCR |= CAN_MCR_ABOM;
253259
#endif
@@ -510,7 +516,7 @@ CAN_ERROR CAN_hw_rx_object_mask (U32 ctrl, U32 ch, U32 id, U32 mask, CAN_FORMAT
510516
}
511517

512518

513-
//带MASK和INDEX的FILTER
519+
//던MASK뵨INDEX돨FILTER
514520
CAN_ERROR CAN_hw_rx_object_mask_idx (U32 ctrl, U32 ch, U32 id, U32 mask, U8 idx, U8 enable, CAN_FORMAT format)
515521
{
516522
U32 CAN_msgId = 0;
@@ -630,26 +636,26 @@ void USB_LP_CAN_RX0_IRQHandler (void) {
630636

631637
/*--------------------------- CAN_SetErrCallBack ------------------------------
632638
*
633-
* 设置错误处理回调函数
639+
* 零댄轎뇹잿쀼딧변鑒
634640
*
635-
* 参数: ceh:错误处理函数指针
641+
* 꽝鑒: ceh:댄轎뇹잿변鑒寧濾
636642
*---------------------------------------------------------------------------*/
637643
static CANERRHANDLER gCanErrHandler = NULL;
638644
void CAN_err_config(CANERRHANDLER ceh)
639645
{
640-
//徐成改动
646+
//其냥맣땡
641647
NVIC_InitTypeDef NVIC_InitStructure;
642648

643649
gCanErrHandler = ceh;
644650

645-
//徐成
651+
//其냥
646652
NVIC_InitStructure.NVIC_IRQChannel = CAN_SCE_IRQChannel;
647653
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
648654
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
649655
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
650656
NVIC_Init(&NVIC_InitStructure);
651657

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); //댄轎쒸멩櫓뙤팁귁|댄轎굳땡櫓뙤팁귁|늴댄轎뵀櫓뙤팁귁|댄轎櫓뙤팁귁
653659
}
654660

655661
void CAN_SCE_IRQHandler(void)

0 commit comments

Comments
 (0)