这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
icore3l_arm_47 [2020/12/03 16:31] zgf |
icore3l_arm_47 [2020/12/05 08:46] zgf 移除 |
||
---|---|---|---|
行 95: | 行 95: | ||
{{ :icore3l:icore3l_arm_hal_47_3.png?direct |}} | {{ :icore3l:icore3l_arm_hal_47_3.png?direct |}} | ||
=== 2.协议层 === | === 2.协议层 === | ||
- | CAN的位时序以及同步: | + | * **CAN的位时序以及同步:** |
* 由于CAN属于异步通讯,没有时钟信号线,那么节点间就需要约定好波特率进行通讯。同时,为实现正确的总线电平采样,确保通讯正常,由此引出“位时序”的概念。 | * 由于CAN属于异步通讯,没有时钟信号线,那么节点间就需要约定好波特率进行通讯。同时,为实现正确的总线电平采样,确保通讯正常,由此引出“位时序”的概念。 | ||
* **位时序的组成:** | * **位时序的组成:** | ||
* CAN协议将每一个数据位的时序分解成4段,即:SS段、PTS段、PBS1段、PBS2段,这4段加起来就是一个CAN数据位的长度。而分解后的最小时间单位是Tq,一个完整的位由8~25个Tq组成。如下图是总线电平下每个位分解。 | * CAN协议将每一个数据位的时序分解成4段,即:SS段、PTS段、PBS1段、PBS2段,这4段加起来就是一个CAN数据位的长度。而分解后的最小时间单位是Tq,一个完整的位由8~25个Tq组成。如下图是总线电平下每个位分解。 | ||
{{ :icore3l:icore3l_arm_hal_47_4.png?direct |}} | {{ :icore3l:icore3l_arm_hal_47_4.png?direct |}} | ||
- | * SS段:称为同步段,用于使总线上的各个节点同步,要求有一个跳变沿位于此段内,该段的长度为1Tq; | + | * **SS段:**称为同步段,用于使总线上的各个节点同步,要求有一个跳变沿位于此段内,该段的长度为1Tq; |
- | * PTS段,称为传播时间段,用于补偿网络内的物理延时,它是信号在总线上传播时间,输入比较器延时和输出驱动器延时之和的两倍,该段长可以为1~8Tq; | + | * **PTS段:**称为传播时间段,用于补偿网络内的物理延时,它是信号在总线上传播时间,输入比较器延时和输出驱动器延时之和的两倍,该段长可以为1~8Tq; |
- | * PBS1段,称为相位缓冲段,主要用来补偿变压阶段的误差,它的实际长度在重新同步的时候可以加长,该段大小可以为1~8Tq; | + | * **PBS1段:**称为相位缓冲段,主要用来补偿变压阶段的误差,它的实际长度在重新同步的时候可以加长,该段大小可以为1~8Tq; |
- | * PBS2段,称为另一个相位缓冲段,也是用来补偿边沿阶段的误差,它的时间长度在重新同步的时候可以加长,该段大小可以为2~8Tq。 | + | * **PBS2段:**称为另一个相位缓冲段,也是用来补偿边沿阶段的误差,它的时间长度在重新同步的时候可以加长,该段大小可以为2~8Tq。 |
* **通讯的波特率:** | * **通讯的波特率:** | ||
* 总线上的各个通讯节点只要约好1个Tq的时间长度以及每一个数据位占据多少个Tq,就可以确定CAN通讯的波特率。 | * 总线上的各个通讯节点只要约好1个Tq的时间长度以及每一个数据位占据多少个Tq,就可以确定CAN通讯的波特率。 |