With my target board, and the DSP56F803 Evaluation board, I am experiencing problems with the MSCAN module when sending 7 and 8 byte frames. The problem I have is when I send 7 byte frames, often I do not get an ACK sequence from other connected devices, and when I send an 8 byte frame, I never get an ACK sequence. This causes the MSCAN module to resend the frame forever. Running at 6 byte frames down to zero byte frames does not seem to show this problem. I am running the CAN at a scope verified rate of 125kbps. I was running the MSCAN clock off the IPBUS (40 mhz) but after reading that the PLL might have too much clock jitter, I have reverted to the 8MHZ on board crystal oscilator. Both clock sources acted the same. The details for the sampling are: TSEG1 = 13 TSEG2 = 2 1 Sample CAN BAUD Divider = 4 I would appreciate any help with this problem. Roger |
|
Problem with sending 7 and 8 Byte Frame in CAN
Started by ●September 4, 2002
Reply by ●September 4, 20022002-09-04
--- In motoroladsp@y..., "rogergill_99" <rogergill_99@y...>
wrote: > With my target board, and the DSP56F803 Evaluation board, I am > experiencing problems with the MSCAN module when sending 7 and 8 byte > frames. > > The problem I have is when I send 7 byte frames, often I do not get > an ACK sequence from other connected devices, and when I send an 8 > byte frame, I never get an ACK sequence. This causes the MSCAN > module to resend the frame forever. > > Running at 6 byte frames down to zero byte frames does not seem to > show this problem. We will look into this. Please stand by. The only other problems known to exist with MSCAN on the 56800 family of DSPs is: When extended frames are transmitted over the can bus, 4 least significant bits of the frame ID are visible in bits 4-7 of the Data Length Register. These bits in the DLR should always read as 0s according to the manual. Example: When frame with ID of E8DF03FC and length of 01 is received by the MSCAN module, the DLR register contains value of 0x00C1 instead of 0x0001. The workaround is simple (AND DLR with 0x000f whenever reading it). SDK can drivers already implement this. > I am running the CAN at a scope verified rate of 125kbps. I was > running the MSCAN clock off the IPBUS (40 mhz) but after reading that > the PLL might have too much clock jitter, I have reverted to the 8MHZ > on board crystal oscilator. Both clock sources acted the same. We recommend that you use the IPBus clock. It has less jitter because it is driven off of the PLL. For more details see the 56800 FAQs at http://e-www.motorola.com/cgi-bin/faq.cgi, searching on the keyword "MSCAN". > The details for the sampling are: > TSEG1 = 13 > TSEG2 = 2 > 1 Sample > CAN BAUD Divider = 4 > > I would appreciate any help with this problem. > > Roger |
Reply by ●September 4, 20022002-09-04
FYI:
I am using the 56F807 chip, without the type of
problem you observe. I am running at 1Mbps off of the internal
clock.
It sounds as though you have a bit rate problem,
since more bytes in the block will cause any clock skew to be more
noticable.
Since the Ack is at the end of the message, It may not be timed
properly in the presence of severly mismatched clocks.
Is the Synchronization Jump Width set to Maximum???
Are you sure the internal clock is set to 40Mhz? The SDK seems to
default it to 36Mhz???
For an internal clock of 40Mhz and bit rate of 1Mbps I am
using:
// for SJW = 3 (skip=4) and quanta size of 1/20 microSec (prescaler =
2)
#define CANBTR0_VALUE 0xc1 // for 1 sample and tseg1 = 12 and tseg2 = 7 (there is one additional
quanta required for the Sync_Seg).
#define CANBTR1_VALUE 0x6B Hope this
helps!
Jerry.
-----Original Message----- From: rogergill_99 [mailto:r...@yahoo.com] Sent: Wednesday, September 04, 2002 11:16 AM To: m...@yahoogroups.com Subject: [motoroladsp] Problem with sending 7 and 8 Byte Frame in CAN With my target board, and the DSP56F803 Evaluation board, I am |
|
Reply by ●September 4, 20022002-09-04
--- In motoroladsp@y..., "Johnson, Jerry" <jljohnson@g...>
wrote: > FYI: > I am using the 56F807 chip, without the type of problem you observe. I am > running at 1Mbps off of the internal clock. > > It sounds as though you have a bit rate problem, since more bytes in the > block will cause any clock skew to be more noticable. > > Since the Ack is at the end of the message, It may not be timed properly in > the presence of severly mismatched clocks. > > Is the Synchronization Jump Width set to Maximum??? > > Are you sure the internal clock is set to 40Mhz? The SDK seems to default > it to 36Mhz??? The External RAM target in SDK stationery has a default PLL multiplier of 18, producing a clock of 72 MHz and 36 MIPs performance. The FLASH target in SDK stationery has a default PLL multiplier of 20, producing 80 MHz and 40 MIPs. > For an internal clock of 40Mhz and bit rate of 1Mbps I am using: > > // for SJW = 3 (skip=4) and quanta size of 1/20 microSec (prescaler = 2) > #define CANBTR0_VALUE 0xc1 > // for 1 sample and tseg1 = 12 and tseg2 = 7 (there is one additional quanta > required for the Sync_Seg). > #define CANBTR1_VALUE 0x6B > > Hope this helps! > > Jerry. > > -----Original Message----- > From: rogergill_99 [mailto:rogergill_99@y...] > Sent: Wednesday, September 04, 2002 11:16 AM > To: motoroladsp@y... > Subject: [motoroladsp] Problem with sending 7 and 8 Byte Frame in CAN > With my target board, and the DSP56F803 Evaluation board, I am > experiencing problems with the MSCAN module when sending 7 and 8 byte > frames. > > The problem I have is when I send 7 byte frames, often I do not get > an ACK sequence from other connected devices, and when I send an 8 > byte frame, I never get an ACK sequence. This causes the MSCAN > module to resend the frame forever. > > Running at 6 byte frames down to zero byte frames does not seem to > show this problem. > > I am running the CAN at a scope verified rate of 125kbps. I was > running the MSCAN clock off the IPBUS (40 mhz) but after reading that > the PLL might have too much clock jitter, I have reverted to the 8MHZ > on board crystal oscilator. Both clock sources acted the same. > > The details for the sampling are: > TSEG1 = 13 > TSEG2 = 2 > 1 Sample > CAN BAUD Divider = 4 > > I would appreciate any help with this problem. > > Roger > <http://rd.yahoo.com/M"8862.2128520.3581629.2225242/D=egroupweb/S 057718 > 55:HM/A82709/R=0/*http://adfarm.mediaplex.com/ad/ck/990-1736- 1039-334> > > > _____________________________________ > Note: If you do a simple "reply" with your email client, only the author of > this message will receive your answer. You need to do a "reply all" if you > want your answer to be distributed to the entire group. > > _____________________________________ > About this discussion group: > > To Join: motoroladsp-subscribe@y... > > To Post: motoroladsp@y... > > To Leave: motoroladsp-unsubscribe@y... > > Archives: http://www.yahoogroups.com/group/motoroladsp > <http://www.yahoogroups.com/group/motoroladsp> > > More Groups: http://www.dsprelated.com/groups.php3 > <http://www.dsprelated.com/groups.php3 > ">http://docs.yahoo.com/info/terms/> . |