DZ60A CAN: Memory Map for Rx & Tx Buffers?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

DZ60A CAN: Memory Map for Rx & Tx Buffers?

跳至解决方案
1,079 次查看
belskyc
Contributor III

Hello,

 

I'm beginning work with the new S08DZ60A and utilizing the CAN.  I have a previous application written for the older HC08AZ60A that I'd like to port over to the new DZ60A.  The data sheet for the AZ60A (data sheet rev 6) shows clearly on page 281 the memory map for the MSCAN08 showing the address locations for the Rx & Tx buffers (also highlights this memory map on page 36).  However, nowhere in the DZ60A data sheet (data sheet rev 4) can I find the memory map for the MSCAN Rx & Tx Buffers.  Does anyone know where I can find this information? 

 

Thanks much,

~belskyc

标签 (1)
0 项奖励
回复
1 解答
369 次查看
belskyc
Contributor III

Well, looks like I'm replying to my own post.  For those of you (if any) who are interested in using the CAN on the S08DZ60A, there are some differences when compared to the older HC08AZ60A concerning memory mapping with the Rx and Tx buffers.  In the older AZ60A, there are three Tx buffers that are all in the foreground (addressable directly by the CPU - addresses 0x0550, 0x0560 and 0x0570); however, the DZ60A uses a paging system where there's only one Tx buffer in the foreground located at address 0x18B0 and the register CANTBSEL (address 0x188A) selects which Tx buffer (0-2) to move to the foreground at 0x18B0.  Thus, if you're porting code from the old AZ60A to the new DZ60A pay attention to this difference. 

 

There is some sample code using the CAN on the S08DZ60A located at:


http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=S08D&fpsp=1&tab=Design_Tools_Tab

 

Also, I discovered that use of assignment operators (such as |= or &=) on any of the CAN registers cause nondeterministic behavior.  I'm using CodeWarrior 6.1 and their standard C-compiler. 

 

~belskyc

在原帖中查看解决方案

0 项奖励
回复
1 回复
370 次查看
belskyc
Contributor III

Well, looks like I'm replying to my own post.  For those of you (if any) who are interested in using the CAN on the S08DZ60A, there are some differences when compared to the older HC08AZ60A concerning memory mapping with the Rx and Tx buffers.  In the older AZ60A, there are three Tx buffers that are all in the foreground (addressable directly by the CPU - addresses 0x0550, 0x0560 and 0x0570); however, the DZ60A uses a paging system where there's only one Tx buffer in the foreground located at address 0x18B0 and the register CANTBSEL (address 0x188A) selects which Tx buffer (0-2) to move to the foreground at 0x18B0.  Thus, if you're porting code from the old AZ60A to the new DZ60A pay attention to this difference. 

 

There is some sample code using the CAN on the S08DZ60A located at:


http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=S08D&fpsp=1&tab=Design_Tools_Tab

 

Also, I discovered that use of assignment operators (such as |= or &=) on any of the CAN registers cause nondeterministic behavior.  I'm using CodeWarrior 6.1 and their standard C-compiler. 

 

~belskyc

0 项奖励
回复