在线时间5 小时
UID3338598
注册时间2017-8-30
NXP金币0
TA的每日心情 | 慵懒 2021-7-1 11:38 |
---|
签到天数: 2 天 [LV.1]初来乍到
注册会员
- 积分
- 51
- 最后登录
- 2021-9-6
|
請問一下,S12 CAN 接收資料有沒有辦法跳過 FIFO 傳輸的方式,直接透過 register 讀取出接收資料, S12ZVC 有五個 FIFO以下是 NXP CAN example ,我透過中斷接收資料,但是外部的 CAN 只丟一次訊號,我該如何即時的透過讀取
CAN0RXDSR0 讀取到接收到的資料
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//assigns a function to be called when a message is received
void CAN_set_rx_callback(void (*ptr)(unsigned long, unsigned char[8], unsigned char)){
rx_callback = ptr;
}
#pragma CODE_SEG NON_BANKED
//CAN message reception interrupt
void interrupt VectorNumber_Vcan0rx CAN_ISR() {
//extract CAN frame information
unsigned long idr;
unsigned char data[8];
unsigned char length, i;
//copy ID and DLC
idr = (CAN0RXIDR0<<21)|((CAN0RXIDR1&0xe0)<<13)|((CAN0RXIDR1&0x7)<<13)|(CAN0RXIDR2<<7)|(CAN0RXIDR3>>1);
length = CAN0RXDLR_DLC;
//copy DATA
for(i=0; i<length; i++){
data[i] = CAN0RXDSR_ARR[i];
}
//execute callback
if(rx_callback!=NULL){
rx_callback(idr, data, length);
}
CAN0RFLG_RXF = 1; //clear interrupt flag
}
#pragma CODE_SEG DEFAULT
|
|