lpc2000系列单片机CAN总线的应用中需要注意的几个问题 1、发送相关问题
a)模式用必须用SRR b)发送时必须只用一个缓冲区
2、波特率相关问题
a) CAN规范中一个bit分四段Sync_Seg,Prop_Seg,Phase_Seg1,Phase_Seg2 b) Sync_Seg固定为1 c) LPC2000中的TSEG1= Prop_Seg+ Phase_Seg1 ,TSEG2= Phase_Seg2 d) SJW应该等于Phase_Seg1但不能超过4 e) Fvpb就是pclk f) Prop_Seg主要给传输延迟补偿,应尽可能长 g) Phase_Seg1和Phase_Seg2要么相等,要么Phase_Seg1+1=Phase_Seg2 h) Phase_Seg2也应该考虑长一点,至少要保证cpu能在这段时间里处理完要处理的工作。 i) 如果想要获得较高的波特率,pclk要足够高,倘若用pclk 11059200则波特率大概不会超过60kbps,所以要想获得较高的波特率必须倍频。 j) 波特率高时sam=0,波特率低时sam=1 k) tja1050有波特率下限,最好工作在60k以上,15~60k也是可以工作的但有可能出错。tja1040的下限是40k。该下限由 Transmit Data (TXD) dominant time-out function 和 can规范本身决定。
相关资料: 1.lpc2119 官方网页 http://www.nxp.com/pip/LPC2119FBD64.html 2.A detailed description about setting the correct CAN bit timing is given in a paper by Florian Hartwich and Armin Bassemir by Robert Bosch: The Configuration of the CAN Bit Timing 3、lpc2119勘误手册http://www.nxp.com/acrobat/erratasheets/2119.pdf 4、官方can驱动例程,其中有关于波特率计算的文档http://www.nxp.com/files/products/standard/microcontrollers/utilities/LPC2000_CAN_Driver_Demo.zip
稍后发一个波特率计算工具。 |