首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

※学习MC9S12单片机——软件篇※ 不断更新中

[建议]

aressos 你的看法有个人獨到之處, 冇錯CAN总线是用硬件的方式实现了一些煩復软件的处理, 节省了CPU开销罢了,但實際上它也有工作是软件不能做到的,例如再同步處理 (hard re-synchronization), 总线仲裁(bus arbitration) 等.

asker_dfr 你的问题是比較花時處理, 原因是你不明白CAN是什麽,首先你要先了解CAN的格式和協議後,才能明白那些記存器的應用o

在S12DP256的記存器
x=0,1,2,3,4   
y=0,1,2,3,4,5,6,7
z=0...0xc

CANxIDARy = Acceptance Register
CANxIDMRy = Mask Register
CANxTFLG = 讀取CANtx 可用緩沖區 (3个其中一个)
CANxTBSEL = 選用CANtx 可用緩沖區
CANxBTR0= Bus Timing (RJW + CAN clock)
CANxBTR1= Bus Timing (Prog+PS1+PS2)
CANxCTL0= CAN module 控制記存器
CANxCTL1= CAN module 控制記存器
CANxTXFGz= 緩沖區


而你的code 不知道在何處抄出來o
1. Filter 的工用就不見,因為所有CANxIDMRy都是$ff.
2. CANxIDAC=0x20  // Eight 8 bit Acceptance Filters
3. Message ID
    CANxIDAR0=01;
    CANxIDAR1=00;
    CANxIDAR2=04;
    CANxIDAR3=08;

看來應是CAN2.0A吧?都應是CAN2.0A 因為Filter 都是8位.但不知道為什麽作者又把CANxIDAR2和CANxIDAR3也有data.真是莫明奇妙! 可否解答?

4. CAN receiver 中斷什麽也沒有,最少也該有中斷設置,如果沒有中斷設置,程式永遠循环在CAN中斷.

[建议]
1. 先看CAN 規格.
2. 了解後再看S12DP256規格
3. 然後才看這段程式
4. 问题可迎刃而解
[em27]
na
返回列表