|
@@ -40,6 +40,9 @@ void can_rx_poll(void){
|
|
|
|
|
|
|
|
void can_tx_poll(void){
|
|
void can_tx_poll(void){
|
|
|
can_trasnmit_message_struct can_tr_m;
|
|
can_trasnmit_message_struct can_tr_m;
|
|
|
|
|
+ if (CAN_ERR(CAN0) & CAN_ERR_BOERR){
|
|
|
|
|
+ shark_can0_reset();
|
|
|
|
|
+ }
|
|
|
while (can_get_mailbox(CAN0) != CAN_NOMAILBOX) {
|
|
while (can_get_mailbox(CAN0) != CAN_NOMAILBOX) {
|
|
|
if (circle_get_data(&g_tx_circle, (uint8_t * )&can_tr_m, sizeof(can_tr_m)) != sizeof(can_tr_m)) {
|
|
if (circle_get_data(&g_tx_circle, (uint8_t * )&can_tr_m, sizeof(can_tr_m)) != sizeof(can_tr_m)) {
|
|
|
break;
|
|
break;
|
|
@@ -126,18 +129,11 @@ static void shark_can0_config(void)
|
|
|
nvic_irq_enable(USBD_LP_CAN0_RX0_IRQn,CAN_IRQ_PRIORITY,0);
|
|
nvic_irq_enable(USBD_LP_CAN0_RX0_IRQn,CAN_IRQ_PRIORITY,0);
|
|
|
/* enable can receive FIFO0 not empty interrupt */
|
|
/* enable can receive FIFO0 not empty interrupt */
|
|
|
can_interrupt_enable(CAN0, CAN_INTEN_RFNEIE0);
|
|
can_interrupt_enable(CAN0, CAN_INTEN_RFNEIE0);
|
|
|
- /* recv broadcast, fifo1 */
|
|
|
|
|
- can_filter_mask_mode_init(CAN_NODE_ADDR_FF, CAN_FILTER_DEST_MASK, CAN_EXTENDED_FIFO1, 1);
|
|
|
|
|
- /* recv ccu aux fifo2*/
|
|
|
|
|
- can_filter_mask_mode_init(CAN_NODE_ADDR_CCU_AUX, CAN_FILTER_DEST_MASK, CAN_EXTENDED_FIFO1, 2);
|
|
|
|
|
- /* recv ble fifo3*/
|
|
|
|
|
- can_filter_mask_mode_init(CAN_NODE_ADDR_BLE, CAN_FILTER_DEST_MASK, CAN_EXTENDED_FIFO1, 3);
|
|
|
|
|
-
|
|
|
|
|
- can_filter_mask_mode_init(CAN_NODE_ADDR_ACU, CAN_FILTER_DEST_MASK, CAN_EXTENDED_FIFO1, 4);
|
|
|
|
|
-
|
|
|
|
|
- nvic_irq_enable(CAN0_RX1_IRQn,CAN_IRQ_PRIORITY,0);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ //can_filter_mask_mode_init(0x1A0, CAN_FILTER_DEST_MASK, CAN_EXTENDED_FIFO1, 1);
|
|
|
|
|
+ //nvic_irq_enable(CAN0_RX1_IRQn,CAN_IRQ_PRIORITY,0);
|
|
|
/* enable can receive FIFO1 not empty interrupt */
|
|
/* enable can receive FIFO1 not empty interrupt */
|
|
|
- can_interrupt_enable(CAN0, CAN_INTEN_RFNEIE1);
|
|
|
|
|
|
|
+ //can_interrupt_enable(CAN0, CAN_INTEN_RFNEIE1);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -200,6 +196,22 @@ int shark_can0_send_message(uint32_t can_id, const void*buff, int len){
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+int shark_can0_send_ext_message(uint32_t can_id, const void*buff, int len){
|
|
|
|
|
+ can_trasnmit_message_struct trasnmit_msg;
|
|
|
|
|
+
|
|
|
|
|
+ trasnmit_msg.tx_sfid = 0;
|
|
|
|
|
+ trasnmit_msg.tx_efid = can_id;
|
|
|
|
|
+ trasnmit_msg.tx_ft = CAN_FT_DATA;
|
|
|
|
|
+ trasnmit_msg.tx_ff = CAN_FF_EXTENDED;
|
|
|
|
|
+ trasnmit_msg.tx_dlen = min(CAN_DLC_LENGTH,len);
|
|
|
|
|
+ memcpy((char *)trasnmit_msg.tx_data, (char *)buff, trasnmit_msg.tx_dlen);
|
|
|
|
|
+
|
|
|
|
|
+ if (shark_send_can0_data(&trasnmit_msg) != CAN_SEND_OK){
|
|
|
|
|
+ return CAN_SEND_ERROR;
|
|
|
|
|
+ }
|
|
|
|
|
+ return CAN_SEND_OK;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
|
|
|
void shark_can0_reset(void){
|
|
void shark_can0_reset(void){
|
|
|
shark_can0_txrx_pin_config();
|
|
shark_can0_txrx_pin_config();
|