CAN Bus Frame reception?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

CAN Bus Frame reception?

2,070件の閲覧回数
johnwhitmore
Contributor III

[ LPC1788 uC developing with MCUXpresso and Segger J-Link ]

I'm working on the CAN Bus of the LPC1788 and it's not playing nice in terms of reception of Frames. I did a quick self test mode transmission test and that was fine so then I connected the two LPC1788 CAN Bus channels together. So both channels are on the same bus. So now I transmit a single standard frame on Channel 1, for reception on Channel 2.

The first problem is that the frame is NOT ack'd by Channel 2 of the 1788 so Channel 1 re-transmits the frame a second time. On the second transmission Channel 2 now acknowledges the frame.

The Second, and more worrying, problem is that Channel 2 never receives any frame. I'm turning on an LED when Channel 2 is receiving a frame so I can see a visual indication that Channel 2 was receiving a frame. So you'd immediately jump to the conclusion that I've not set up the suitable Acceptance Filters, for reception of the frame, but I'm in BYPASS mode so ALL frames should be received from the Bus?

I'm obviously missing something in the User Manual but my understanding is that there is only one Acceptance filter engine which is shared by the two channels. And setting it into bypass mode should be good for both channels, the code is a single line:

    Chip_CAN_SetAFMode(LPC_CANAF, CAN_AF_BYBASS_MODE);  // Bypass acceptance filters, accept all Frames

So why is no interrupt being raised for a received frame? I am getting an interrupt for the successful transmission from Channel 1, which I clear, but no interrupt is raised for any received frame. Like I say you jump to Acceptance Filters but they are bypassed.

Anybody got any ideas I'd be very grateful

ラベル(2)
タグ(2)
2 返答(返信)

1,865件の閲覧回数
Carlos_Mendoza
NXP Employee
NXP Employee

Hi John,

I would recommend you to take a look to the CAN_Bypass demo in the attached library for more details on how to configure the bypass mode.


Hope it helps!

Best Regards,
Carlos Mendoza
Technical Support Engineer

0 件の賞賛
返信

1,865件の閲覧回数
johnwhitmore
Contributor III

Hi Carlos, I actually eventually got bypass mode working. A bit of fiddling

with code and I got that sorted.

The one problem which remains, and is the more serious issue, is that

frames are not acknowledged on initial transmission and have to be

retransmitted. That means that if another node on the bus acknowledges a

frame it won't be retransmitted and the LPC will never receive that frame!

Only one of the channels is doing that but as it stands it is not a usable

CAN Bus channel.