stm32: can: Add support for getting the message timestamp.
Provide an optional parameter to receive the timestamp in
This commit is contained in:
parent
fac1013ccb
commit
98ff5c23aa
@ -670,7 +670,7 @@ int can_transmit(uint32_t canport, uint32_t id, bool ext, bool rtr,
|
|||||||
uint8_t length, uint8_t *data);
|
uint8_t length, uint8_t *data);
|
||||||
void can_receive(uint32_t canport, uint8_t fifo, bool release, uint32_t *id,
|
void can_receive(uint32_t canport, uint8_t fifo, bool release, uint32_t *id,
|
||||||
bool *ext, bool *rtr, uint32_t *fmi, uint8_t *length,
|
bool *ext, bool *rtr, uint32_t *fmi, uint8_t *length,
|
||||||
uint8_t *data);
|
uint8_t *data, uint16_t *timestamp);
|
||||||
|
|
||||||
void can_fifo_release(uint32_t canport, uint8_t fifo);
|
void can_fifo_release(uint32_t canport, uint8_t fifo);
|
||||||
bool can_available_mailbox(uint32_t canport);
|
bool can_available_mailbox(uint32_t canport);
|
||||||
|
@ -469,10 +469,12 @@ void can_fifo_release(uint32_t canport, uint8_t fifo)
|
|||||||
@param[out] fmi Unsigned int32 pointer. ID of the matched filter.
|
@param[out] fmi Unsigned int32 pointer. ID of the matched filter.
|
||||||
@param[out] length Unsigned int8 pointer. Length of message payload.
|
@param[out] length Unsigned int8 pointer. Length of message payload.
|
||||||
@param[out] data Unsigned int8[]. Message payload data.
|
@param[out] data Unsigned int8[]. Message payload data.
|
||||||
|
@param[out] timestamp. Pointer to store the message timestamp.
|
||||||
|
Only valid on time triggered CAN. Use NULL to ignore.
|
||||||
*/
|
*/
|
||||||
void can_receive(uint32_t canport, uint8_t fifo, bool release, uint32_t *id,
|
void can_receive(uint32_t canport, uint8_t fifo, bool release, uint32_t *id,
|
||||||
bool *ext, bool *rtr, uint32_t *fmi, uint8_t *length,
|
bool *ext, bool *rtr, uint32_t *fmi, uint8_t *length,
|
||||||
uint8_t *data)
|
uint8_t *data, uint16_t *timestamp)
|
||||||
{
|
{
|
||||||
uint32_t fifo_id = 0;
|
uint32_t fifo_id = 0;
|
||||||
union {
|
union {
|
||||||
@ -513,6 +515,11 @@ void can_receive(uint32_t canport, uint8_t fifo, bool release, uint32_t *id,
|
|||||||
* memory to the fast internal RAM
|
* memory to the fast internal RAM
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (timestamp) {
|
||||||
|
*timestamp = (CAN_RDTxR(canport, fifo_id) &
|
||||||
|
CAN_RDTxR_TIME_MASK) >> CAN_RDTxR_TIME_SHIFT;
|
||||||
|
}
|
||||||
|
|
||||||
rdlxr.data32 = CAN_RDLxR(canport, fifo_id);
|
rdlxr.data32 = CAN_RDLxR(canport, fifo_id);
|
||||||
rdhxr.data32 = CAN_RDHxR(canport, fifo_id);
|
rdhxr.data32 = CAN_RDHxR(canport, fifo_id);
|
||||||
/* */
|
/* */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user