尊敬的老师您们好!<br /> 我在学习ARM_CAN中遇到了这样一个问题!希望老师能给我一个答复!谢谢老师!<br /> 就是CAN总线的波特率的设置问题<br />CANstarter-ii的指南中的CAN常见问题解答我也看过,但还是不明白。<br />就是在实际的应用中,SAM ,TSEG2,TSEG1,SJW ,BRP等这些值的大小到底是怎么确定的,我按照书中提供的范围进行改动,运行后,就会出现报错情况。不知道这些数据到底是怎么确定下来的,如下面的这段程序,这些数据到底是怎样定下来的呢?希望老师能给我一个具体的解释!谢谢老师!<br />我的邮箱是ccy_7128@163.com<br /><br /><br />//当VPB时钟为4*11059200Hz时,常用波特率与总线时序器对照表,如果VPB时钟不等,请自己计算出总线时序器的值<br />//BPS = (SAM << 23)|(TSEG2 << 20)|(TSEG1 << 16)|(SJW << 14)| BRP<br />#define BPS_5K (1 << 23)|(1 << 20)|(6 << 16)|(0 << 14)| 879<br />#define BPS_10K (1 << 23)|(1 << 20)|(6 << 16)|(0 << 14)| 439<br />#define BPS_20K (1 << 23)|(1 << 20)|(6 << 16)|(0 << 14)| 219<br />#define BPS_40K (1 << 23)|(1 << 20)|(6 << 16)|(0 << 14)| 109<br />#define BPS_50K (1 << 23)|(1 << 20)|(6 << 16)|(0 << 14)| 87<br />#define BPS_80K (1 << 23)|(1 << 20)|(4 << 16)|(0 << 14)| 68<br />#define BPS_100K (1 << 23)|(1 << 20)|(6 << 16)|(0 << 14)| 43<br />#define BPS_125K (0 << 23)|(1 << 20)|(4 << 16)|(0 << 14)| 43<br />#define BPS_200K (0 << 23)|(1 << 20)|(6 << 16)|(0 << 14)| 21<br />#define BPS_250K (0 << 23)|(1 << 20)|(4 << 16)|(0 << 14)| 21<br />#define BPS_400K (0 << 23)|(1 << 20)|(6 << 16)|(0 << 14)| 10<br />#define BPS_500K (0 << 23)|(1 << 20)|(4 << 16)|(0 << 14)| 10<br />#define BPS_666K (0 << 23)|(1 << 20)|(2 << 16)|(0 << 14)| 10<br />#define BPS_800K (0 << 23)|(1 << 20)|(1 << 16)|(0 << 14)| 10<br />#define BPS_1000K (0 << 23)|(1 << 20)|(1 << 16)|(0 << 14)| 8 |
|