匿名
未登录
登录
丢石头百科
搜索
查看“2-CH CAN FD HAT”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
2-CH CAN FD HAT
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
<div class="tabber"> {{外围模块|colorscheme=blue |name = 2-CH CAN FD HAT |img=[[File:2-CH-CAN-FD-HAT-1.jpg|360px |alt=Sense HAT (B)|link=http://{{SERVERNAME}}/shop/2-CH-CAN-FD-HAT.htm | 2-CH CAN FD HAT]] |category1=模块 |category2=树莓派 |category3=树莓派扩展板 |brand=Waveshare |feature = 树莓派传感器扩展 | interface2 =CAN | interface1 = RPi }} <div class="tabbertab" title="说明"> ==产品概述== 2-CH CAN FD HAT 是微雪电子为树莓派开发的一款隔离式的双通道CAN 通信功能的扩展板,支持CAN FD。最高传输速率可高达8Mbps,具备有多重保护。<br /> ==特点== *基于树莓派设计,适用于Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+/4B。 *支持8~24V的外部宽电压同时给树莓派和2-CH CAN FD HAT进行供电或者由树莓派直接给2-CH CAN FD HAT进行供电。 *支持CAN FD,最高传输速率可高达8Mbps。 *预留控制接口,方便其他逻辑电压为3.3V/5V的控制器控制。 *CAN总线采用电气隔离,隔离电压可达5 kV。 *板载多个保护器件,具有短路保护,静电保护,有效抑制闪电和ESD,每通道均提供500W的雷击浪涌保护。 *接口带有120Ω终端电阻,可通过跳帽进行切换。 *可配置双通道CAN的工作方式,分别是双通道公用一组SPI或两通道分别使用两组独立的SPI。 *提供完善的配套资料手册及例程。 ==产品参数== *输入电压: 8~26V *逻辑电压: 3.3V/5V *CAN控制芯片: MCP2517FD *CAN收发器: MCP2562FD *产品尺寸: 65.0x56.5mm *固定孔通经: 3.0mm ==接口说明== ===CAN接口总线=== {|border=1; style="width:900px;" |-style="background:#00ff00; color:gary;" align="center" |'''功能引脚'''||'''树莓派接口'''<br />(BCM)||'''树莓派接口'''<br />(WPI)||'''描述''' |-rowspan=2 align="center" |5V|| 5V|| 5V|| 5V电源正 |-align="center" |GND||GND||GND||电源地 |-align="center" |MISO_0 ||9(MISO) ||13(MISO)||SPI_0时钟输入 |-align="center" |MOSI_0||10(MOSI)||12(MOSI) ||SPI_0数据输入 |-align="center" |SCK_0||11(SCLK)||14(SCLK)||SPI_0数据输出 |-align="center" |CS_0||8(CE0)||10(CE0)||CAN_0片选 |-align="center" |INT_0||25||6||CAN_0中断输出 |-align="center" |MISO_1|| 9/19(MISO)|| 13/24(MISO)|| SPI_1数据输出 |-align="center" |MOSI_1|| 10/20(MOSI)|| 12/28(MOSI)|| SPI_1数据输入 |-align="center" |SCK_1||11/21(SCLK)||14/29(SCLK)||SPI_1时钟输入 |-align="center" |CS_1||7(CE1)/26||11(CE1)/25||CAN_1片选 |-align="center" |INT_1||16||27||CAN_1中断输出 |} ===硬件说明=== ====CAN总线=== CAN 模块的功能是处理所有 CAN 总线上的报文接收和发送。报文发送时,首先将报文装载到正确的报文缓冲器和控制寄存器中。通过 SPI 接口设置控制寄存器中的相应位或使用发送使能引脚均可启动发送操作。通过读取相应的寄存器可以检查通讯状态和错误。 会对在 CAN总线上检测到的任何报文进行错误检查,然后与用户定义的滤波器进行匹配,以确定是否将报文移到两个接收缓冲器中的一个。<br /> 由于树莓派本身并不支持CAN总线,因此使用SPI接口的CAN控制器,搭配一个收发器完成CAN功能。<br /> MCP2517FD是Microchip公司生产的一款CAN FD(灵活数据速率)控制器,完全支持经典格式(CAN2.0)和CAN灵活数据速率(CAN FD)格式的CAN成帧。仲裁比特率高达1Mbps,数据比特率高达8Mbps,SPI时钟速度高达20MHz符合ISO11898-1:2015标准。该器件能发送和接收标准和扩展数据帧以及远程帧。 MCP2517FD 自带的32个灵活的滤波器和屏蔽对象可以过滤掉不想要的报文,因此减少了主单片机(MCU)的开销。MCU通过SPI接口与该器件连接,即树莓派通过SPI接口连接芯片,对于树莓派使用该芯片,可以通过已编写好的设备树文件来驱动该器件,更多详细请参考数据手册。<br /> [[File:hardware station.png|800px]]<br /> MCP2562FD是Microchip公司生产的第二代高速CAN收发器,它用于 CAN协议控制器与物理CAN总线之间的接口,支持CAN FD所需的更高数据速率,改善了最大传播延迟以支持更长的总线长度。MCP2562FD符合甚至超过汽车对CAN FD传输速率(5 Mbps)的要求、低静态电流、电磁兼容性(EMC)及静电放电(ESD)的要求,符合ISO-11898-5 物理标准及AEC-Q100 0级的测试标准,最多可连接最多可连接112个节点,更多详细请参考数据手册。<br /> [[File:hardware station-2.png|800px]]<br /> <br /> ==树莓派使用== 在使用树莓派演示该例程时,需注意的是由于树莓派属于3.3V逻辑系统,需改变将2-CH CAN FD HAT的逻辑电压引脚跳帽到3.3V,如下图所示。<br /> [[file:use.png|900px]]<br /> ==安装必要的函数库== *安装BCM2835, 打开树莓派终端,并运行一下指令 <pre> wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz tar zxvf bcm2835-1.60.tar.gz cd bcm2835-1.60/ sudo ./configure sudo make sudo make check sudo make install # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/ </pre> *安装wiringPi <pre> sudo apt-get install wiringpi #对于树莓派4B可能需要进行升级: cd bcm2835-1.60/ wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错 </pre> *安装Python函数库 <pre> #python2 sudo apt-get update sudo apt-get install python-pip sudo apt-get install python-pil sudo apt-get install python-numpy sudo pip install RPi.GPIO sudo pip install spidev sudo pip2 install python-can #python3 sudo apt-get update sudo apt-get install python3-pip sudo apt-get install python3-pil sudo apt-get install python3-numpy sudo pip3 install RPi.GPIO sudo pip3 install spidev sudo pip3 install python-can </pre> *在官网上找到对应产品,在产品资料打开下载路径,在wiki中下载示例程序:<br /> *得到解压包,解压并将程序复制到树莓派中。 ==前置工作== *安装例程依赖的Linux 内核驱动 *浏览目录: <pre> ls </pre> [[File:pre-work1.png|800px]]<br /> *运行安装程序 <pre> sudo ./install.sh </pre> *等待安装完成则会显示: [[File:pre-work2.png|800px]]<br /> *重启树莓派以应用所有设置: <pre> sudo reboot </pre> *待树莓派重启后,查看SPI信息:<br /> <pre> dmesg | grep spi </pre> A工作方式: <br /> [[File:pre-work3.png|800px]]<br /> B工作方式:<br /> [[File:pre-work4.png|800px]]<br /> '''注:B工作模式可能会提示CAN重命名提示,不影响使用,可忽视。<br />''' ==配置CAN,设置波特率,工作模式,是否开启FD及配置传输缓冲区大小:== *波特率设置: <pre> sudo ip link set can0 up type can bitrate 1000000 dbitrate 8000000 restart-ms 1000 berr-reporting on fd on sudo ip link set can1 up type can bitrate 1000000 dbitrate 8000000 restart-ms 1000 berr-reporting on fd on sudo ifconfig can0 txqueuelen 65536 sudo ifconfig can1 txqueuelen 65536 </pre> '''bitrate xxxxxx (bps) dbitrate xxxxxx (bps)<br />''' *可配置成以下模式: [ loopback { on | off } ]<br /> [ listen-only { on | off } ]<br /> [ triple-sampling { on | off } ]<br /> [ one-shot { on | off } ]<br /> [ berr-reporting { on | off } ]<br /> FD是开启指令:<br /> [ fd { on | off } ]<br /> [ fd-non-iso { on | off } ]<br /> '''更多相关CAN内核指令可以查看:<br /> https://www.kernel.org/doc/Documentation/networking/can.txt'''<br /> *查看ifconfig: <pre> ifconfig </pre> [[File:pre-work5.png|800px]]<br /> *开始测试: 若手上只有一个2-CH CAN FD HAT,可以将可通过将模块的CAN0_H与CAN1_H,CAN0_L与CAN1_L相连,如下图所示:<br /> [[File:test-1.png|800px]]<br /> *打开两个终端窗口: 其中一个终端输入接收CAN0数据指令: <pre> candump can0 </pre> 另外一个终端输入发送CAN1数据指令: <pre> cansend can1 000##11.22.33.44 </pre> *演示效果如下:(左边为接收,右边为发送) [[File:test-2.png|800px]] 若手上有两个2-CH CAN FD HAT,可以直接将CAN_H,CAN_L两两相连。效果跟上述一样,需注意匹配好通信速率,识别ID,输出接口序号。<br /> ==Python例程== *浏览目录: *接收端运行receive.py: <pre> sudo python reveive.py </pre> *发送端运行send.py: <pre> sudo python send.py </pre> '''需注意的是这里的发送端是使用CAN1发送,接收端则是CAN0,具体修改可以参照下面的代码分析。''' ===代码分析=== 本例程是基于python平台,确保以及安装了python-can库在发送之前要先创建一个can设备,因为前面只是启用MCP2517FD内核:<br /> <span style="background:#00ffcc;">os.system('sudo ip link set can0 up type can bitrate 1000000 dbitrate 8000000 restart-ms 1000 berr-reporting on fd on')</span> 上面这条则是通过对CAN0的配置初始化并启用,且指定CAN0作为发送/接收接口。如需改成CAN1,则代码如下:<br /> <span style="background:#00ffcc;">os.system('sudo ip link set can1 up type can bitrate 1000000 dbitrate 8000000 restart-ms 1000 berr-reporting on fd on')</span> *第一步:连接到CAN总线 <span style="background:#00ffcc;"> can0 = can.interface.Bus(channel = 'can0', bustype = 'socketcan_ctypes')# socketcan_native<br /> </span> *需改成CAN1,则代码如下:<br /> <span style="background:#00ffcc;"> can1 = can.interface.Bus(channel = 'can1', bustype = 'socketcan_ctypes')# socketcan_native<br /> </span> *第二步:创建信息<br /> <span style="background:#00ffcc;"> msg = can.Message(arbitration_id=0x123, data=[0, 1, 2, 3, 4, 5, 6, 7], extended_id=False)<br /> </span> *第三步:发送信息 <span style="background:#00ffcc;"> can0.send(msg)<br /> </span> *需改成CAN1,则代码如下:<br /> <span style="background:#00ffcc;"> can1.send(msg) </span> *最后同样要关闭can设备 <span style="background:#00ffcc;"> os.system('sudo ifconfig can0 down') </span> *需改成CAN1,则代码如下: <span style="background:#00ffcc;"> os.system('sudo ifconfig can1 down') </span> *接收数据: <span style="background:#00ffcc;"> msg = can0.recv(10.0) </span> recv()中定义超时接收时间。<br /> '''更多请参考:https://python-can.readthedocs.io/en/stable/interfaces/socketcan.html<br />''' <br /> ==Arduino例程== 本例程是基于Pierre Molinaro的MCP2517FD的例程进行改写,以适应2-CH CAN FD HAT,在此对Pierre Molinaro的付出表示感谢。在该例程中需要两个Arduino板子及两个2-CH CAN FD HAT,需注意的是Arduino属于5V逻辑系统,需改变将2-CH CAN FD HAT的逻辑电压引脚跳帽到5V,如下图所示:<br /> [[File:Arduino-1.png|800px]] *将2-CH CAN FD HAT与Arduino相连接,具体接线如下表所示:<br /> {|border=1; style="width:800px;" |-style="background:#0000ff; color:white;" align="center" |功能引脚||开发板 |-align="center" |5V||5V |-align="center" |GND||GND |-align="center" |MISO_0|| D12 (MISO) |-align="center" |MOSI_0|| D11 (MOSI) |-align="center" |SCK_0||D13 (SCK) |-align="center" |CS_0||D10 |-align="center" |INT_0||D2 |} *将两个2-CH CAN FD HAT 的CAN_0的H、L两两相连,设置波特率为115200,打开两个串口监视器,可看到以下结果(左边为发送次数,右边为接收的数据): [[File:2-CH-Can-hat-ardiuno-2.png|800px]]<br /> </div> <div class="tabbertab" title="资料"> ==文档== *[http://{{SERVERNAME}}/w/upload/e/e2/2-CH-CAN-FD-HAT-Schematic.pdf 原理图] ==程序== *[http://{{SERVERNAME}}/w/upload/4/46/2-CH-CAN-FD-HAT-Demo.7z 示例程序] ==相关资料== *[http://{{SERVERNAME}}/w/upload/b/b3/MCP2517FD-External-CAN-FD-Controller-with-SPI-Interface-20005688B.pdf MCP2517FD数据手册] *[http://{{SERVERNAME}}/w/upload/1/1b/MCP2562FD.pdf MCP2562FD数据手册] <!--{{Join_us}}--> </div> <div class="tabbertab" title="FAQ"><br />{{Sense-HAT-B-FAQ}} {{FAQ| CAN初始化失败??| 如果出现初始化失败,可以重启树莓派或者其他主控平台开发板,确保连线是否正确,及逻辑电压跳帽引脚是否选择正确。|||}} {{FAQ|CAN接口的G引脚是否连接?| G为信号地,也称隔离地。在工业环境当中,CAN受周围环境多变,为确保稳定性,两通信模块的G需要相连接。|||}} {{FAQ|CAN通信速度达不到最高值8Mbps?| 微芯官方标称MCP2517FD理论上最高通信速度可达8Mbps,但受周围所测环境、通信距离、线材、软件等多因素的影响。在高速通信时,可能达不到所所标称的8Mbps,用户需根据实际测量,确保稳定,选择适合的通信速度。|||}} {{FAQ|CAN不能正常通信?| 若初始化成功,且速度设置合适后,仍不可以正常通信。请检查下两块2-CH CAN FD HAT 的CAN_H是否与另外一块CAN_H相连,CAN_L是否与另外一块CAN_L相连,需注意的是这两条线不能接反,H对应H,L对应L。若没问题,请检查程序配置的CAN口是否正确,比如需要用到CAN0,程序代码却配置CAN1。同时也需要检查硬件是否连接正确且CAN接口存不存在短路问题,如下图所示,CAN接口与树莓派的HDMI接口误触引起短路,使得CAN不能正常通信,这时需要使用购买2-CH CAN FD HAT时配送的配件2×20PIN长排座进行增高处理。[[File:2-CH CAN FD HAT-15.png|800px]]|||}} </div> <div class="tabbertab" title="售后"><br />{{Eng24}}</div>
该页面使用的模板:
模板:Eng24
(
查看源代码
)
模板:FAQ
(
查看源代码
)
模板:Sense-HAT-B-FAQ
(
查看源代码
)
模板:Service00
(
查看源代码
)
模板:Tipbox
(
查看源代码
)
模板:外围模块
(
查看源代码
)
返回至
2-CH CAN FD HAT
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志