这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 上一修订版 两侧同时换到之后的修订记录 | ||
icore4t_57 [2020/03/28 14:27] zgf [三、 实验原理] |
icore4t_57 [2020/07/29 17:27] fmj |
||
---|---|---|---|
行 19: | 行 19: | ||
{{ :icore4t:icore4t_cube_57_3.png?direct |}} | {{ :icore4t:icore4t_cube_57_3.png?direct |}} | ||
4.时基源选择SysTick | 4.时基源选择SysTick | ||
- | {{ :icore4t:icore4t_cube_57_4png?direct |}} | + | {{ :icore4t:icore4t_cube_57_4.png?direct |}} |
5.将PA10,PB7,PB8设置为GPIO_Output | 5.将PA10,PB7,PB8设置为GPIO_Output | ||
{{ :icore4t:icore4t_cube_57_5.png?direct |}} | {{ :icore4t:icore4t_cube_57_5.png?direct |}} | ||
行 101: | 行 101: | ||
* **闭环总线网络:** | * **闭环总线网络:** | ||
* CAN物理层的形式主要有两种,如下图是其中的一种“闭环网络”,它允许总线最大长度为40m,最高速度为1Mbps,可以看到总线的两端各有一个120欧的电阻,这是规定。节点就是不同的设备,连接到一个闭环总线上面。 | * CAN物理层的形式主要有两种,如下图是其中的一种“闭环网络”,它允许总线最大长度为40m,最高速度为1Mbps,可以看到总线的两端各有一个120欧的电阻,这是规定。节点就是不同的设备,连接到一个闭环总线上面。 | ||
- | {{ :icore4t:icore4t_arm_hal_57_1.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_57_1.png?direct&600 |}} |
* **开环总线网络:** | * **开环总线网络:** | ||
- | {{ :icore4t:icore4t_arm_hal_57_2.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_57_2.png?direct&600 |}} |
* **通讯节点:** | * **通讯节点:** | ||
* CAN节点是指能够挂接在CAN总线上的单元,并能通过CAN总线实现各个节点间的通信,以实现复杂的控制过程。理论上CAN总线连接的节点可达110个,但实际上收到总线上的时间延迟及电气负载的限制。当连接多节点时,降低通信速率,可连接的节点增加;提高通信速率,则可连接的节点数减少。 | * CAN节点是指能够挂接在CAN总线上的单元,并能通过CAN总线实现各个节点间的通信,以实现复杂的控制过程。理论上CAN总线连接的节点可达110个,但实际上收到总线上的时间延迟及电气负载的限制。当连接多节点时,降低通信速率,可连接的节点增加;提高通信速率,则可连接的节点数减少。 | ||
行 112: | 行 112: | ||
* **CAN协议中的差分信号:** | * **CAN协议中的差分信号:** | ||
* 差分信号又称为差模信号,具体的含义这里不多介绍了。CAN协议中对它使用的CAN_High以及CAN_Low表示的差分信号做了规定,如下图,可以看到,显性电平对应逻辑“0”,隐性电平对应逻辑“1”。当表示为隐性电平(逻辑“1”)时,CAN_High和CAN_Low的电压均为2.5V,此时它们的电压差为0V;当表示显性电平(逻辑“0”)时,CAN_High的电压为3.5V,CAN_Low的电压为1.5V,它们的电压差为2V。举个例子:当CAN收发器从CAN_Tx线接收到来自CAN控制器的低电平信号(逻辑“0”)时,它会使CAN_High输出3.5V,同时CAN_Low输出1.5V。在总线上显性电平具有优先权,只要有一个单元(也就是节点)输出显性电平,总线上即为显性电平。而隐性电平则具有包容的含义,只有所有的单元都输出隐性电平,总线上才为隐性电平。那么可以知道,CAN通讯是半双工的,收发数据需要分开来进行,由于是公用总线,在整个网络中,同一时刻只能由一个通讯节点发送信号,其余的节点在该时刻只能接收。 | * 差分信号又称为差模信号,具体的含义这里不多介绍了。CAN协议中对它使用的CAN_High以及CAN_Low表示的差分信号做了规定,如下图,可以看到,显性电平对应逻辑“0”,隐性电平对应逻辑“1”。当表示为隐性电平(逻辑“1”)时,CAN_High和CAN_Low的电压均为2.5V,此时它们的电压差为0V;当表示显性电平(逻辑“0”)时,CAN_High的电压为3.5V,CAN_Low的电压为1.5V,它们的电压差为2V。举个例子:当CAN收发器从CAN_Tx线接收到来自CAN控制器的低电平信号(逻辑“0”)时,它会使CAN_High输出3.5V,同时CAN_Low输出1.5V。在总线上显性电平具有优先权,只要有一个单元(也就是节点)输出显性电平,总线上即为显性电平。而隐性电平则具有包容的含义,只有所有的单元都输出隐性电平,总线上才为隐性电平。那么可以知道,CAN通讯是半双工的,收发数据需要分开来进行,由于是公用总线,在整个网络中,同一时刻只能由一个通讯节点发送信号,其余的节点在该时刻只能接收。 | ||
- | {{ :icore4t:icore4t_arm_hal_57_3.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_57_3.png?direct&400 |}} |
=== 2.协议层: === | === 2.协议层: === | ||
行 195: | 行 195: | ||
* CAN过滤器的寄存器有多个,可以自己看手册进行相应的配置,这里就不多讲解了。过滤的方法有两种模式分别是ID列表模式和掩码模式。 | * CAN过滤器的寄存器有多个,可以自己看手册进行相应的配置,这里就不多讲解了。过滤的方法有两种模式分别是ID列表模式和掩码模式。 | ||
* 在本实验中,iCore4T使用SN65HVD230作为CAN驱动,通过CAN助手发送数据并能接收数据。 | * 在本实验中,iCore4T使用SN65HVD230作为CAN驱动,通过CAN助手发送数据并能接收数据。 | ||
- | 原理图: | + | * 原理图: |
- | {{ :icore4t:icore4t_arm_hal_57_1.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_57_9.png?direct&700 |}} |
==== 四、 实验程序 ==== | ==== 四、 实验程序 ==== | ||
=== 1.主函数 === | === 1.主函数 === | ||
行 324: | 行 324: | ||
==== 六、 实验现象 ==== | ==== 六、 实验现象 ==== | ||
* 通过CAN助手,点击发送能够接收到数据说明测试通过。 | * 通过CAN助手,点击发送能够接收到数据说明测试通过。 | ||
- | + | {{ :icore4t:icore4t_arm_hal_57_10.png?direct&700 |}} | |
- | + | {{ :icore4t:icore4t_arm_hal_57_11.png?direct&700 |}} | |
+ | {{ :icore4t:icore4t_arm_hal_57_12.png?direct&700 |}} |