You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
C++
48 lines
1.1 KiB
C++
#include "CAN.h"
|
|
#include <cstddef>
|
|
|
|
namespace canSpace {
|
|
|
|
void CAN::transmitMsg(Uint16 boxNumber, const MBOX& message){
|
|
Uint32 mboxControl(0);
|
|
mboxControl = 1ul << boxNumber;
|
|
|
|
volatile MBOX* p_MailBox(NULL);
|
|
p_MailBox = &(p_CanMBoxes_->MBOX0) + boxNumber;
|
|
|
|
p_MailBox->MDH.all = 0x0;
|
|
p_MailBox->MDL.all = 0x0;
|
|
|
|
p_MailBox->MSGCTRL.bit.DLC = message.MSGCTRL.bit.DLC;
|
|
p_MailBox->MDH.all = message.MDH.all;
|
|
p_MailBox->MDL.all = message.MDL.all;
|
|
|
|
CanShadow_.CANTRS.all = 0;
|
|
CanShadow_.CANTRS.all |= mboxControl; // Set TRS for mailbox under test
|
|
p_CanRegs_->CANTRS.all = CanShadow_.CANTRS.all;
|
|
|
|
do { CanShadow_.CANTA.all = p_CanRegs_->CANTA.all; }
|
|
while((CanShadow_.CANTA.all & mboxControl) == 0 );// Wait for TA1 bit to be set
|
|
|
|
CanShadow_.CANTA.all = 0;
|
|
CanShadow_.CANTA.all |= mboxControl; // Clear TA1
|
|
p_CanRegs_->CANTA.all = CanShadow_.CANTA.all;
|
|
}
|
|
|
|
void CAN::receiveMsg(Uint16 boxNumber){
|
|
Uint32 mboxControl(0);
|
|
mboxControl = 1ul << boxNumber;
|
|
|
|
volatile MBOX* p_MailBox(NULL);
|
|
p_MailBox = &(p_CanMBoxes_->MBOX0) + boxNumber;
|
|
volatile MBOX message;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
} // canSpace
|