一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

CAN总线和异步串行的设计注意事项

来源:analog 发布时间:2023-08-11

摘要: 本应用说明在使用异步串行和CAN时,为DS80C400和DS80C390微控制器提供系统CPU晶体选择指导。

当设计一个需要在DS80C390或DS80C400处理器上同时使用CAN总线和异步串行接口的系统时,设计人员可能会遇到选择允许在两个接口上使用标准比特率的CPU晶体的问题。CAN总线要求误差小于0.5%,而异步串行接口要求误差小于等于2.5%。常见的串行波特率晶体,如11.0592MHz, 14.7456MHz和18.432MHz,在不违反CAN总线误码准则的情况下,不允许高比特率CAN传输。为了找到两个接口的折衷方案,设计人员必须首先了解每个I/O块如何生成其位时钟。

CAN总线时序

CAN控制器的比特率由微控制器系统时钟产生,并受到板上晶体乘法器的影响(加倍和四倍确实影响CAN控制器的输入时钟)。时钟信号首先被2分,然后被波特率预分频器(BPR)分频,它决定了时间量子(t(qu))。CAN规范要求每个比特时间在8t(qu)到25t(qu)之间。时钟信号通过BPR后,再次被用户指定的除数除除,该除数由t(SEG1)和t(SEG2)加上t(SYNC_SEG)的1t(qu)组成。有关更详细的信息,请参阅高速微控制器用户指南第19节:DS80C390补充。

比特率由下式确定:




现在,我们计算重新加载和实际比特率:



所有有用频率的误差都小于0.005。


CAN比特率为1Mbps的晶体无法使用的例子:


reload = 36.864E6 / (2*1E6) = 18.432

实际比特率= 36.864E6 / (2*18) = 1024000

误差= (1024000 - 1000000)/ 1000000 = 0.024


可接受的晶体1Mbps CAN比特率的例子:


重载= 36E6 / (2*1E6) = 18

实际比特率= 36E6 / (2*18) = 1000000

错误= (1000000 - 1000000)/ 1000000 = 0.0

(t(SEG1) + t(SEG2) + t(SYNC_SEG)) = 18 / BPR

记住t(SYNC_SEG)总是1,BPR选择1会得到:

(t(SEG1) + t(SEG2)) = 17

设计人员从这个约束中选择适当的TSEG值。

异步串行使用定时器2

当定时器2处于16位自动加载模式时,计算使用定时器2的串口0的比特率。定时器2运行晶体输入,不受任何晶体倍增器设置的影响。有关更详细的信息,请参阅高速微控制器用户指南的第12节。

比特率由以下公式确定:




所有有用频率的误差都小于0.025。


115200bit /s时晶体不可用的例子:


reload = 16E6 / (32 × 115200) = 4.340

实际= 16E6 / (32 × 4) = 125000

错误= (125000 - 115200)/ 115200 = 0.0851


115200bit /s可接受的晶体示例:


reload = 18E6 / (32 × 115200) = 4.883

实际= 18E6 / (32 × 5) = 112500

错误= (112500 - 115200)/ 115200 = 0.0234

异步串行使用定时器

当定时器1处于8位自动加载模式时,计算使用定时器1的串口0和1的比特率。这个过程的一个附加功能是能够从外部晶体或系统时钟产生基于除以4或除以12的波特率。在除4模式下,输入时钟由系统时钟(f (MULT))产生,而在除12模式下,将使用外部晶体的基频(f (osc))。还可以通过设置适当的SMOD (SMOD_0或SMOD_1)位来启用串行波特率加倍器。有关更详细的信息,请参阅高速微控制器用户指南的第12节。


4分模式下定时器为1


比特率由以下公式确定:




所有有用频率的误差都小于0.025


不可用水晶的例子:


reload = 20E6 / (64 × 115200) = 2.713

实际= 20E6 / (64 × 3) = 104167

错误= (104167 - 115200)/ 115200 = 0.096


可接受晶体的例子:


reload = 22E6 / (64 × 115200) = 2.984

实际= 22E6 / (64 × 3) = 114583

错误= (114583 - 115200)/ 115200 = 0.0054


定时器1在除以12模式





所有有用频率的误差都小于0.025


115200bit /s时晶体不可用的例子:


reload = 18E6 / (192 × 115200) = 0.814

实际= 18E6 / (192 × 1) = 93750

错误= (93750 - 115200)/ 115200 = 0.186


115200bit /s可接受的晶体示例:


reload = 22E6 / (192 × 115200) = 0.995

实际= 22E6 / (192 × 1) = 114583

错误= (114583 - 115200)/ 115200 = 0.0054

115200串行和CAN总线的建议晶体值

下表列出了使用串行0和定时器2和1Mb CAN总线允许115,200bps异步串行的晶体频率。

注意:这些值假定设计者没有使用系统时钟乘法器。

水晶Can错误(%)串行错误(%)
180000000.002.34
220000000.000.54
260000000.000.76
300000000.001.73
340000000.002.48
360000000.002.34
400000000.001.36
440000000.000.54
480000000.000.16
520000000.000.76
540000000.002.34
560000000.001.27
600000000.001.73
640000000.002.12
660000000.000.54
680000000.002.48
720000000.002.34



声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: