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