- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CAN波特率计算
例:CAN控制器的晶振f can_clk=10MHZ,节点间最长的距离为40m,tq不分频,直接采用控制器的时钟,总线输出延迟为50ns,接收延迟为30ns,波特率为1Mbps.tq=1/f can_clk=1/10 MHZ=100ns总线的最大传输延迟=总线的最长距离/光电速度=40/3*108≈133nsProp_Seg=2*(总线输入延迟+总线输出延迟+总线最大传输延迟) =2*(30ns+50ns+133ns)=426 ns考虑冗余预留,则Prop_Seg=600 ns=6 tq; Sync_Seg=1 tq;Phase_Seg1=1 tq;Phase_Seg2=2tq(因为采样是在Phase_Seg1和Phase_Seg2之间,所以在Phase_Seg2中应包含至少1 tq处理时间)真实SJW=min(Phase_Seg1,Phase_Seg2)=1tqBit_time=Sync_Seg+Prop_Seg+Phase_Seg1+Phase_Seg2=10 tq=1 Mbps晶振漂移容许=min(Phase_Seg1,Phase_Seg2)/ 2*(13*Bit_time-Phase_Seg2) =1 tq / 2*(13*10 tq-2 tq) =0.39%寄存器配置:[0]1 [TSeg2]3 [TSeg1]4 [SJW]2 [BRP]6 = [0]1[Phase_Seg2-1]3 [Prop_Seg+Phase_Seg1-1]4[真实SJW-1]2[分频数-1]6=[0]1[2-1]3 [1+6-1]4 [1-1]2[1-1]6=[0]1 [1]3 [6]4 [0]2 [0]6=0x1600下面是从Cygnal网站论坛上看到的:#define BTR(tseg1, tseg2, sjw, brp)(((tseg2 - 1)12)|((tseg1 -1)8)|((sjw-1)6)|(brp-1))#define kBTR_1MbpsBTR(2,8,1,2)// 1 Mbps#define kBTR_500kbpsBTR(2,8,1,4)// 500 kbpsvoid set_bitrate( unsigned int btr ){unsigned char SFR_SAVE_PAGE;SFR_SAVE_PAGE=SFRPAGE;SFRPAGE = CAN0_PAGE;CAN0CN |= 0x41;CAN0ADR = BITREG;CAN0DAT = btr;CAN0CN = 0xbe;SFRPAGE=SFR_SAVE_PAGE;}set_bitrate( kBTR_1Mbps );//1 Mbpsset_bitrate( kBTR_500kbps );//500 kbpsTProp_seg = 2 x (transceiver loop delay(150nsec) + bus line delay(5nsec/m))// condition from the CAN parameter definition1 = BRP = 32Tq = BRP / FsysTSync_Seg = TqTq = TProp_Seg = 8*TqTq = TPhase_Seg1 = 8*TqTq = TPhase_Seg2 = 8*TqTq = TSJW = 4*TqTbit = TSync_Seg + TProp_Seg + TPhase_Seg1 + TPhase_Seg2Tbit = 1 / baud (nearly equal)// condition from F040 exampleTPhase_Seg1 == TPhase_Seg2TSJW = min( TPhase_Seg1, 4*Tq )// quantamizetseg1 = (TProp_Seg + TPhase_Seg1) / Tqtseg2 = TPhase_Seg2 / Tqsjw = TSJW / TqBTR = (((tseg2 - 1)12)|((tseg1 - 1)8)|((sjw-1)6)|(BRP - 1))//// procedure// 1) calculate BRP: select BRP as the smallest integer within these range, a)b)c)// a) BRP range 1(1 + 1 + 1 + 1) * Tq = Tbit = (1 + 8 + 8 + 8) * Tq(Fsys/baud) / 25 = BRP = (Fsys/baud) / 4// b) BRP range 2Tq = TProp_Seg = 8 * Tq(F
原创力文档


文档评论(0)