Lines Matching refs:can_periph
108 void can_deinit(uint32_t can_periph) in can_deinit() argument
111 switch(can_periph){ in can_deinit()
128 switch(can_periph){ in can_deinit()
297 ErrStatus can_init(uint32_t can_periph, can_parameter_struct* can_parameter_init) in can_init() argument
306 CAN_CTL(can_periph) &= ~CAN_CTL_SLPWMOD; in can_init()
308 CAN_CTL(can_periph) |= CAN_CTL_IWMOD; in can_init()
310 while((CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)) && (0U != timeout)){ in can_init()
314 if(CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)){ in can_init()
319 fdctl_status = CAN_FDCTL(can_periph); in can_init()
323 CAN_FDCTL(can_periph) = fdctl_status; in can_init()
324 CAN_BT(can_periph) = (BT_MODE((uint32_t)can_parameter_init->working_mode) | \ in can_init()
330 CAN_FDCTL(can_periph) = fdctl_status; in can_init()
333 CAN_BT(can_periph) = (BT_MODE((uint32_t)can_parameter_init->working_mode) | \ in can_init()
341 CAN_BT(can_periph) = (BT_MODE((uint32_t)can_parameter_init->working_mode) | \ in can_init()
350 CAN_CTL(can_periph) |= CAN_CTL_TTC; in can_init()
352 CAN_CTL(can_periph) &= ~CAN_CTL_TTC; in can_init()
356 CAN_CTL(can_periph) |= CAN_CTL_ABOR; in can_init()
358 CAN_CTL(can_periph) &= ~CAN_CTL_ABOR; in can_init()
362 CAN_CTL(can_periph) |= CAN_CTL_AWU; in can_init()
364 CAN_CTL(can_periph) &= ~CAN_CTL_AWU; in can_init()
368 CAN_CTL(can_periph) &= ~CAN_CTL_ARD; in can_init()
370 CAN_CTL(can_periph) |= CAN_CTL_ARD; in can_init()
374 CAN_CTL(can_periph) |= CAN_CTL_RFOD; in can_init()
376 CAN_CTL(can_periph) &= ~CAN_CTL_RFOD; in can_init()
380 CAN_CTL(can_periph) |= CAN_CTL_TFO; in can_init()
382 CAN_CTL(can_periph) &= ~CAN_CTL_TFO; in can_init()
385 CAN_CTL(can_periph) &= ~CAN_CTL_IWMOD; in can_init()
388 while((CAN_STAT_IWS == (CAN_STAT(can_periph) & CAN_STAT_IWS)) && (0U != timeout)){ in can_init()
416 void can_filter_init(uint32_t can_periph, can_filter_parameter_struct* can_filter_parameter_init) in can_filter_init() argument
422 CAN_FCTL(can_periph) |= CAN_FCTL_FLD; in can_filter_init()
424 CAN_FW(can_periph) &= ~(uint32_t)val; in can_filter_init()
429 CAN_FSCFG(can_periph) &= ~(uint32_t)val; in can_filter_init()
431 CAN_FDATA0(can_periph, can_filter_parameter_init->filter_number) = \ in can_filter_init()
435 CAN_FDATA1(can_periph, can_filter_parameter_init->filter_number) = \ in can_filter_init()
442 CAN_FSCFG(can_periph) |= (uint32_t)val; in can_filter_init()
444 CAN_FDATA0(can_periph, can_filter_parameter_init->filter_number) = \ in can_filter_init()
448 CAN_FDATA1(can_periph, can_filter_parameter_init->filter_number) = \ in can_filter_init()
456 CAN_FMCFG(can_periph) &= ~(uint32_t)val; in can_filter_init()
459 CAN_FMCFG(can_periph) |= (uint32_t)val; in can_filter_init()
465 CAN_FAFIFO(can_periph) &= ~(uint32_t)val; in can_filter_init()
468 CAN_FAFIFO(can_periph) |= (uint32_t)val; in can_filter_init()
474 CAN_FW(can_periph) |= (uint32_t)val; in can_filter_init()
478 CAN_FCTL(can_periph) &= ~CAN_FCTL_FLD; in can_filter_init()
500 void can_filter_mask_mode_init(uint32_t can_periph, uint32_t id, uint32_t mask, can_format_fifo_enu… in can_filter_mask_mode_init() argument
570 can_filter_init(can_periph, &can_filter); in can_filter_mask_mode_init()
586 ErrStatus can_monitor_mode_set(uint32_t can_periph, uint8_t mode) in can_monitor_mode_set() argument
593 CAN_CTL(can_periph) &= (~(uint32_t)CAN_CTL_SLPWMOD); in can_monitor_mode_set()
595 CAN_CTL(can_periph) |= (uint8_t)CAN_CTL_IWMOD; in can_monitor_mode_set()
598 while((CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)) && (0U != timeout)){ in can_monitor_mode_set()
602 if(CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)){ in can_monitor_mode_set()
605 CAN_BT(can_periph) &= ~BT_MODE(3); in can_monitor_mode_set()
606 CAN_BT(can_periph) |= BT_MODE(mode); in can_monitor_mode_set()
610 CAN_CTL(can_periph) &= ~(uint32_t)(CAN_CTL_SLPWMOD | CAN_CTL_IWMOD); in can_monitor_mode_set()
612 … while((0U != (CAN_STAT(can_periph) & (CAN_STAT_IWS | CAN_STAT_SLPWS))) && (0U != timeout)){ in can_monitor_mode_set()
615 if(0U != (CAN_STAT(can_periph) & (CAN_STAT_IWS | CAN_STAT_SLPWS))){ in can_monitor_mode_set()
649 ErrStatus can_fd_init(uint32_t can_periph, can_fdframe_struct* can_fdframe_init) in can_fd_init() argument
659 CAN_CTL(can_periph) &= ~CAN_CTL_SLPWMOD; in can_fd_init()
661 CAN_CTL(can_periph) |= CAN_CTL_IWMOD; in can_fd_init()
663 while((CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)) && (0U != timeout)){ in can_fd_init()
667 if(CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)){ in can_fd_init()
671 CAN_DBT(can_periph) = (BT_DSJW((uint32_t)can_fdframe_init->data_resync_jump_width) | \ in can_fd_init()
691 …CAN_FDTDC(can_periph) = (FDTDC_TDCF(can_fdframe_init->p_delay_compensation->tdc_filter) | FDTDC_TD… in can_fd_init()
706 CAN_FDCTL(can_periph) = tempreg; in can_fd_init()
709 CAN_CTL(can_periph) &= ~CAN_CTL_IWMOD; in can_fd_init()
712 while((CAN_STAT_IWS == (CAN_STAT(can_periph) & CAN_STAT_IWS)) && (0U != timeout)){ in can_fd_init()
732 ErrStatus can_frequency_set(uint32_t can_periph, uint32_t hz) in can_frequency_set() argument
739 if(SUCCESS == can_working_mode_set(can_periph, GD32_CAN_MODE_INITIALIZE)){ in can_frequency_set()
740 reg_temp = CAN_BT(can_periph); in can_frequency_set()
742 fdctl_status = CAN_FDCTL(can_periph); in can_frequency_set()
746 CAN_FDCTL(can_periph) = fdctl_status; in can_frequency_set()
747 CAN_BT(can_periph) = reg_temp | dev_can_baudrate_set(hz); in can_frequency_set()
749 CAN_FDCTL(can_periph) = fdctl_status; in can_frequency_set()
752 CAN_BT(can_periph) = reg_temp | dev_can_baudrate_set(hz); in can_frequency_set()
758 if(SUCCESS != can_working_mode_set(can_periph, GD32_CAN_MODE_NORMAL)){ in can_frequency_set()
776 ErrStatus can_fd_frequency_set(uint32_t can_periph, uint32_t hz) in can_fd_frequency_set() argument
780 if(SUCCESS == can_working_mode_set(can_periph, GD32_CAN_MODE_INITIALIZE)){ in can_fd_frequency_set()
781 CAN_DBT(can_periph) = dev_can_fd_baudrate_set(hz); in can_fd_frequency_set()
786 if(SUCCESS != can_working_mode_set(can_periph, GD32_CAN_MODE_NORMAL)){ in can_fd_frequency_set()
800 void can_fd_function_enable(uint32_t can_periph) in can_fd_function_enable() argument
802 CAN_FDCTL(can_periph) |= CAN_FDCTL_FDEN; in can_fd_function_enable()
812 void can_fd_function_disable(uint32_t can_periph) in can_fd_function_disable() argument
814 CAN_FDCTL(can_periph) &= ~CAN_FDCTL_FDEN; in can_fd_function_disable()
825 ErrStatus can_frequency_set(uint32_t can_periph, uint32_t hz) in can_frequency_set() argument
832 if(SUCCESS == can_working_mode_set(can_periph, GD32_CAN_MODE_INITIALIZE)){ in can_frequency_set()
833 reg_temp = CAN_BT(can_periph); in can_frequency_set()
836 CAN_BT(can_periph) = reg_temp | dev_can_baudrate_set(hz); in can_frequency_set()
841 if(SUCCESS != can_working_mode_set(can_periph, GD32_CAN_MODE_NORMAL)){ in can_frequency_set()
878 void can_debug_freeze_enable(uint32_t can_periph) in can_debug_freeze_enable() argument
881 CAN_CTL(can_periph) |= CAN_CTL_DFZ; in can_debug_freeze_enable()
883 switch(can_periph){ in can_debug_freeze_enable()
897 switch(can_periph){ in can_debug_freeze_enable()
917 void can_debug_freeze_disable(uint32_t can_periph) argument
920 CAN_CTL(can_periph) &= ~CAN_CTL_DFZ;
922 switch(can_periph){
935 switch(can_periph){
955 void can_time_trigger_mode_enable(uint32_t can_periph) argument
960 CAN_CTL(can_periph) |= CAN_CTL_TTC;
963 CAN_TMP(can_periph, mailbox_number) |= CAN_TMP_TSEN;
974 void can_time_trigger_mode_disable(uint32_t can_periph) argument
979 CAN_CTL(can_periph) &= ~CAN_CTL_TTC;
982 CAN_TMP(can_periph, mailbox_number) &= ~CAN_TMP_TSEN;
1000 uint8_t can_message_transmit(uint32_t can_periph, can_trasnmit_message_struct* transmit_message) argument
1012 if(CAN_TSTAT_TME0 == (CAN_TSTAT(can_periph)&CAN_TSTAT_TME0)){
1014 }else if(CAN_TSTAT_TME1 == (CAN_TSTAT(can_periph)&CAN_TSTAT_TME1)){
1016 }else if(CAN_TSTAT_TME2 == (CAN_TSTAT(can_periph)&CAN_TSTAT_TME2)){
1026 CAN_TMI(can_periph, mailbox_number) &= CAN_TMI_TEN;
1029 CAN_TMI(can_periph, mailbox_number) |= (uint32_t)(TMI_SFID(transmit_message->tx_sfid) | \
1033 CAN_TMI(can_periph, mailbox_number) |= (uint32_t)(TMI_EFID(transmit_message->tx_efid) | \
1041 CAN_TMP(can_periph, mailbox_number) &= ~(CAN_TMP_DLENC|CAN_TMP_ESI|CAN_TMP_BRS|CAN_TMP_FDF);
1042 CAN_TMP(can_periph, mailbox_number) |= transmit_message->tx_dlen;
1044 CAN_TMDATA0(can_periph, mailbox_number) = TMDATA0_DB3(transmit_message->tx_data[3]) | \
1048 CAN_TMDATA1(can_periph, mailbox_number) = TMDATA1_DB7(transmit_message->tx_data[7]) | \
1053 canfd_en = CAN_FDCTL(can_periph) & CAN_FDCTL_FDEN;
1075 CAN_TMP(can_periph, mailbox_number) = reg_temp;
1086 CAN_TMDATA0(can_periph, mailbox_number) = *(uint32_t *)p_temp;
1089 CAN_TMDATA0(can_periph, mailbox_number) = *(uint32_t *)p_temp;
1100 CAN_TMP(can_periph, mailbox_number) &= ~CAN_TMP_DLENC;
1101 CAN_TMP(can_periph, mailbox_number) |= transmit_message->tx_dlen;
1103 CAN_TMDATA0(can_periph, mailbox_number) = TMDATA0_DB3(transmit_message->tx_data[3]) | \
1107 CAN_TMDATA1(can_periph, mailbox_number) = TMDATA1_DB7(transmit_message->tx_data[7]) | \
1113 CAN_TMI(can_periph, mailbox_number) |= CAN_TMI_TEN;
1128 can_transmit_state_enum can_transmit_states(uint32_t can_periph, uint8_t mailbox_number) argument
1137 val = CAN_TSTAT(can_periph) & (CAN_TSTAT_MTF0 | CAN_TSTAT_MTFNERR0 | CAN_TSTAT_TME0);
1141 val = CAN_TSTAT(can_periph) & (CAN_TSTAT_MTF1 | CAN_TSTAT_MTFNERR1 | CAN_TSTAT_TME1);
1145 val = CAN_TSTAT(can_periph) & (CAN_TSTAT_MTF2 | CAN_TSTAT_MTFNERR2 | CAN_TSTAT_TME2);
1187 void can_transmission_stop(uint32_t can_periph, uint8_t mailbox_number) argument
1190 CAN_TSTAT(can_periph) |= CAN_TSTAT_MST0;
1191 while(CAN_TSTAT_MST0 == (CAN_TSTAT(can_periph) & CAN_TSTAT_MST0)){
1194 CAN_TSTAT(can_periph) |= CAN_TSTAT_MST1;
1195 while(CAN_TSTAT_MST1 == (CAN_TSTAT(can_periph) & CAN_TSTAT_MST1)){
1198 CAN_TSTAT(can_periph) |= CAN_TSTAT_MST2;
1199 while(CAN_TSTAT_MST2 == (CAN_TSTAT(can_periph) & CAN_TSTAT_MST2)){
1222 void can_message_receive(uint32_t can_periph, uint8_t fifo_number, can_receive_message_struct* rece… argument
1233 receive_message->rx_ff = (uint8_t)(CAN_RFIFOMI_FF & CAN_RFIFOMI(can_periph, fifo_number));
1236 … receive_message->rx_sfid = (uint32_t)(GET_RFIFOMI_SFID(CAN_RFIFOMI(can_periph, fifo_number)));
1239 … receive_message->rx_efid = (uint32_t)(GET_RFIFOMI_EFID(CAN_RFIFOMI(can_periph, fifo_number)));
1243 receive_message->rx_ft = (uint8_t)(CAN_RFIFOMI_FT & CAN_RFIFOMI(can_periph, fifo_number));
1245 receive_message->rx_fi = (uint8_t)(GET_RFIFOMP_FI(CAN_RFIFOMP(can_periph, fifo_number)));
1248 … receive_message->fd_flag = (uint8_t)((CAN_RFIFOMP_FDF & CAN_RFIFOMP(can_periph, fifo_number))>>7);
1250 canfd_en = CAN_FDCTL(can_periph) & CAN_FDCTL_FDEN;
1254 … receive_message->rx_dlen = (uint8_t)(GET_RFIFOMP_DLENC(CAN_RFIFOMP(can_periph, fifo_number)));
1256 …receive_message->rx_data[0] = (uint8_t)(GET_RFIFOMDATA0_DB0(CAN_RFIFOMDATA0(can_periph, fifo_numbe…
1257 …receive_message->rx_data[1] = (uint8_t)(GET_RFIFOMDATA0_DB1(CAN_RFIFOMDATA0(can_periph, fifo_numbe…
1258 …receive_message->rx_data[2] = (uint8_t)(GET_RFIFOMDATA0_DB2(CAN_RFIFOMDATA0(can_periph, fifo_numbe…
1259 …receive_message->rx_data[3] = (uint8_t)(GET_RFIFOMDATA0_DB3(CAN_RFIFOMDATA0(can_periph, fifo_numbe…
1260 …receive_message->rx_data[4] = (uint8_t)(GET_RFIFOMDATA1_DB4(CAN_RFIFOMDATA1(can_periph, fifo_numbe…
1261 …receive_message->rx_data[5] = (uint8_t)(GET_RFIFOMDATA1_DB5(CAN_RFIFOMDATA1(can_periph, fifo_numbe…
1262 …receive_message->rx_data[6] = (uint8_t)(GET_RFIFOMDATA1_DB6(CAN_RFIFOMDATA1(can_periph, fifo_numbe…
1263 …receive_message->rx_data[7] = (uint8_t)(GET_RFIFOMDATA1_DB7(CAN_RFIFOMDATA1(can_periph, fifo_numbe…
1270 canfd_recv_cnt = (uint8_t)(GET_RFIFOMP_DLENC(CAN_RFIFOMP(can_periph, fifo_number)));
1279 …receive_message->fd_brs = (uint8_t)((CAN_RFIFOMP(can_periph, fifo_number) & CAN_RFIFOMP_BRS) >> 5);
1280 …receive_message->fd_esi = (uint8_t)((CAN_RFIFOMP(can_periph, fifo_number) & CAN_RFIFOMP_ESI) >> 4);
1291 data_temp = CAN_RFIFOMDATA0(can_periph, fifo_number);
1296 data_temp = CAN_RFIFOMDATA0(can_periph, fifo_number);
1304 receive_message->rx_dlen = (uint8_t)(GET_RFIFOMP_DLENC(CAN_RFIFOMP(can_periph, fifo_number)));
1307 …receive_message -> rx_data[0] = (uint8_t)(GET_RFIFOMDATA0_DB0(CAN_RFIFOMDATA0(can_periph, fifo_num…
1308 …receive_message -> rx_data[1] = (uint8_t)(GET_RFIFOMDATA0_DB1(CAN_RFIFOMDATA0(can_periph, fifo_num…
1309 …receive_message -> rx_data[2] = (uint8_t)(GET_RFIFOMDATA0_DB2(CAN_RFIFOMDATA0(can_periph, fifo_num…
1310 …receive_message -> rx_data[3] = (uint8_t)(GET_RFIFOMDATA0_DB3(CAN_RFIFOMDATA0(can_periph, fifo_num…
1311 …receive_message -> rx_data[4] = (uint8_t)(GET_RFIFOMDATA1_DB4(CAN_RFIFOMDATA1(can_periph, fifo_num…
1312 …receive_message -> rx_data[5] = (uint8_t)(GET_RFIFOMDATA1_DB5(CAN_RFIFOMDATA1(can_periph, fifo_num…
1313 …receive_message -> rx_data[6] = (uint8_t)(GET_RFIFOMDATA1_DB6(CAN_RFIFOMDATA1(can_periph, fifo_num…
1314 …receive_message -> rx_data[7] = (uint8_t)(GET_RFIFOMDATA1_DB7(CAN_RFIFOMDATA1(can_periph, fifo_num…
1319 CAN_RFIFO0(can_periph) |= CAN_RFIFO0_RFD0;
1321 CAN_RFIFO1(can_periph) |= CAN_RFIFO1_RFD1;
1335 void can_fifo_release(uint32_t can_periph, uint8_t fifo_number) argument
1338 CAN_RFIFO0(can_periph) |= CAN_RFIFO0_RFD0;
1340 CAN_RFIFO1(can_periph) |= CAN_RFIFO1_RFD1;
1357 uint8_t can_receive_message_length_get(uint32_t can_periph, uint8_t fifo_number) argument
1363 val = (uint8_t)(CAN_RFIFO0(can_periph) & CAN_RFIF_RFL_MASK);
1366 val = (uint8_t)(CAN_RFIFO1(can_periph) & CAN_RFIF_RFL_MASK);
1385 ErrStatus can_working_mode_set(uint32_t can_periph, uint8_t working_mode) argument
1393 CAN_CTL(can_periph) &= (~(uint32_t)CAN_CTL_SLPWMOD);
1395 CAN_CTL(can_periph) |= (uint8_t)CAN_CTL_IWMOD;
1397 while((CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)) && (0U != timeout)){
1400 if(CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)){
1407 CAN_CTL(can_periph) &= ~(uint32_t)(CAN_CTL_SLPWMOD | CAN_CTL_IWMOD);
1409 while((0U != (CAN_STAT(can_periph) & (CAN_STAT_IWS | CAN_STAT_SLPWS))) && (0U != timeout)){
1412 if(0U != (CAN_STAT(can_periph) & (CAN_STAT_IWS | CAN_STAT_SLPWS))){
1419 CAN_CTL(can_periph) &= (~(uint32_t)CAN_CTL_IWMOD);
1421 CAN_CTL(can_periph) |= (uint8_t)CAN_CTL_SLPWMOD;
1423 while((CAN_STAT_SLPWS != (CAN_STAT(can_periph) & CAN_STAT_SLPWS)) && (0U != timeout)){
1426 if(CAN_STAT_SLPWS != (CAN_STAT(can_periph) & CAN_STAT_SLPWS)){
1444 ErrStatus can_wakeup(uint32_t can_periph) argument
1450 CAN_CTL(can_periph) &= ~CAN_CTL_SLPWMOD;
1452 while((0U != (CAN_STAT(can_periph) & CAN_STAT_SLPWS)) && (0x00U != timeout)){
1456 if(0U != (CAN_STAT(can_periph) & CAN_STAT_SLPWS)){
1479 can_error_enum can_error_get(uint32_t can_periph) argument
1485 error = (can_error_enum)(GET_ERR_ERRN(CAN_ERR(can_periph)));
1496 uint8_t can_receive_error_number_get(uint32_t can_periph) argument
1501 val = (uint8_t)(GET_ERR_RECNT(CAN_ERR(can_periph)));
1512 uint8_t can_transmit_error_number_get(uint32_t can_periph) argument
1516 val = (uint8_t)(GET_ERR_TECNT(CAN_ERR(can_periph)));
1543 void can_interrupt_enable(uint32_t can_periph, uint32_t interrupt) argument
1545 CAN_INTEN(can_periph) |= interrupt;
1571 void can_interrupt_disable(uint32_t can_periph, uint32_t interrupt) argument
1573 CAN_INTEN(can_periph) &= ~interrupt;
1619 FlagStatus can_flag_get(uint32_t can_periph, can_flag_enum flag) argument
1622 if(RESET != (CAN_REG_VAL(can_periph, flag) & BIT(CAN_BIT_POS(flag)))){
1657 void can_flag_clear(uint32_t can_periph, can_flag_enum flag) argument
1659 CAN_REG_VAL(can_periph, flag) |= BIT(CAN_BIT_POS(flag));
1687 FlagStatus can_interrupt_flag_get(uint32_t can_periph, can_interrupt_flag_enum int_flag) argument
1694 ret1 = can_receive_message_length_get(can_periph, CAN_FIFO0);
1696 ret1 = can_receive_message_length_get(can_periph, CAN_FIFO1);
1698 ret1 = can_error_get(can_periph);
1700 ret1 = CAN_REG_VALS(can_periph, int_flag) & BIT(CAN_BIT_POS0(int_flag));
1703 ret2 = CAN_INTEN(can_periph) & BIT(CAN_BIT_POS1(int_flag));
1730 void can_interrupt_flag_clear(uint32_t can_periph, can_interrupt_flag_enum int_flag) argument
1732 CAN_REG_VALS(can_periph, int_flag) |= BIT(CAN_BIT_POS0(int_flag));