diff --git a/f1/can/include/can.h b/f1/can/include/can.h index 3c1d1f589e3b588c609559a9fc3a1f385c2fc1a9..49587e1cf3237e7dbba8b72a7af01c4c149a025d 100644 --- a/f1/can/include/can.h +++ b/f1/can/include/can.h @@ -90,7 +90,7 @@ void can_config(TComm *comm_dev,CAN_InitTypeDef *conf); void can_set_priorities(TComm *comm_dev,TCAN_IRQ_Priorities *priorities); void can_set_bitrate(TComm *comm_dev,CAN_SPEED bitrate); void can_set_filter(TComm *comm_dev,CAN_FilterConfTypeDef *filter); -void can_set_can_id(TComm *comm_dev,unsigned char id); +void can_set_can_id(TComm *comm_dev,unsigned int id); /* IRQ functions */ unsigned char can_send_irq(unsigned char first_byte); unsigned char can_enable_tx_irq(void); diff --git a/f1/can/src/can.c b/f1/can/src/can.c index bc95bcb1affd6685e2bfdcc5212e49d8da8a549e..a8de97afe8bfb87fe9a19f6549e765a0f5f684fe 100644 --- a/f1/can/src/can.c +++ b/f1/can/src/can.c @@ -126,8 +126,6 @@ void can_init(TComm *comm_dev,CAN_InitTypeDef *conf,TCAN_IRQ_Priorities *priorit CANHandle.pTxMsg->RTR = CAN_RTR_DATA; CANHandle.pTxMsg->IDE = CAN_ID_STD; - //HAL_CAN_Receive_IT(&CANHandle,CAN_FIFO0); - } void can_config(TComm *comm_dev,CAN_InitTypeDef *conf) @@ -216,10 +214,9 @@ void can_set_bitrate(TComm *comm_dev,CAN_SPEED bitrate) void can_set_filter(TComm *comm_dev,CAN_FilterConfTypeDef *filter) { HAL_CAN_ConfigFilter(&CANHandle, filter); - //HAL_CAN_Receive_IT(&CANHandle,CAN_FIFO0); } -void can_set_can_id(TComm *comm_dev,unsigned char id) +void can_set_can_id(TComm *comm_dev,unsigned int id) { CANHandle.pTxMsg->StdId = id; } @@ -238,16 +235,11 @@ void HAL_CAN_ErrorCallback(CAN_HandleTypeDef* CANHandle) void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef* CANHandle) { - // HAL_CAN_StateTypeDef status = HAL_CAN_GetState(CANHandle); - // while(HAL_CAN_STATE_READY != status) - // { - // status = HAL_CAN_GetState(CANHandle); - // } - if (can_send_lenght != 0) { if (can_send_lenght > 8) { + CANHandle->pTxMsg->DLC = 8; for (uint8_t i=0;i<8;i++) { CANHandle->pTxMsg->Data[i] = can_send_data[i+(8*can_send_iterations)]; @@ -258,6 +250,7 @@ void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef* CANHandle) } else { + CANHandle->pTxMsg->DLC = can_send_lenght; for (uint8_t i=0;i<can_send_lenght;i++) { CANHandle->pTxMsg->Data[i] = can_send_data[i+(8*can_send_iterations)]; @@ -388,35 +381,6 @@ unsigned char can_cancel_receive_irq(void) /* DMA functions */ unsigned char can_send_dma(unsigned char *data,unsigned short int length) { - // if (length <= 8) - // { - // CANHandle.pTxMsg->DLC = length; - // for (uint8_t i=0;i<length;i++) - // { - // CANHandle.pTxMsg->Data[i] = data[i]; - // } - // HAL_CAN_Transmit_IT(&CANHandle); - // } - // else - // { - // unsigned char iterations = 0x00; - // while (length > 0) - // { - // if(length > 8) - // CANHandle.pTxMsg->DLC = 8; - // else - // CANHandle.pTxMsg->DLC = length; - // for (uint8_t i=0;i<CANHandle.pTxMsg->DLC;i++) - // { - // CANHandle.pTxMsg->Data[i] = data[i+iterations]; - // } - // HAL_CAN_Transmit_IT(&CANHandle); - // HAL_Delay(5); - // iterations = iterations + 8; - // length = length - CANHandle.pTxMsg->DLC; - // } - // } - if(length > 8){ CANHandle.pTxMsg->DLC = 8; for (uint8_t i=0;i<length;i++) @@ -464,6 +428,8 @@ unsigned char can_cancel_receive_dma(void) can_dma_phase_data=0x00; can_dma_phase_length=0; can_dma_phase_write_ptr=0; + //can_missing_bytes_length=0; + //can_missing_bytes_write_ptr=0; return 0x00; }