# CAN

Source: [https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html](https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html)

控制器局域网 (CAN) 是一种基于消息的串行协议。术语 CAN 和 CAN 总线在相同的上下文中使用。CAN 的优点如下：

- 使用 CSMA/CD 方法和按位争用在位级感知总线并传输消息。
- 每条消息都分配有一个优先级。具有最高优先级的消息始终控制总线仲裁。由于仲裁基于位，因此存在显性和隐性位级别。
- 任何节点均可以随时传输，没有主从节点。
- 所有数据均通过两条（差分对）线传输：CAN\_H 和 CAN\_L 线。
- CAN 节点使用位同步进行同步，其中每个位时间分为四个时间量子段。
- 通过基于消息的协议促进多个节点之间的通信，无需大量接线。
- 通过错误管理（包括检测、发信号和纠正）确保数据安全。

注释：
- QCS6490 和 QCS5430 中默认启用 CAN。
- QCS9075 和 QCS8275 不支持 CAN。

## CAN 功能

Source: [https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html](https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html)

CAN 协议支持以下功能。

- 基于多主优先级的总线访问
- 基于无损内容的仲裁
- 通过全帧传输进行广播
- 通过接受过滤进行多播帧传输
- 远程数据请求
- 配置灵活性
- 全网数据一致性
- 错误检测和错误信号发送
- 自动重传丢失仲裁、缺少确认或在传输过程中遇到错误的帧
- 识别临时节点错误和永久节点故障之间的差异，并自动停用故障节点

## CAN 架构

Source: [https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html](https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html)

MCP2517 是一个外部可配置的 CAN 控制器，其可通过 SPI 线进行访问。SPI 接口支持最高 20 MHz 的频率，并支持模式 0、1。控制器通过 4 引脚 SPI 操作连接到带有 SE3 的 QUP 模块。SPI 控制器连接到收发器 (MCP2561xxx)，该收发器连接到 CAN 总线。SPI 控制器和 CAN 收发器的电源输入是通过 SoC 进行的。

Figure : CAN 架构
            
            <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- 由 Microsoft Visio, SVG Export 生成 can-architecture.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="12.0093in" height="4.43403in" viewbox="0 0 864.67 319.25" xml:space="preserve" color-interpolation-filters="sRGB" class="st20"><v:documentproperties v:langid="2052">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749997 }
.svg-1 .st2 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749997 }
.svg-1 .st3 { fill: #000000; font-family: Arial; font-size: 0.666664em }
.svg-1 .st4 { font-family: 黑体; font-size: 1em }
.svg-1 .st5 { fill: none; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999996 }
.svg-1 .st6 { fill: #000000; font-family: 黑体; font-size: 0.833336em }
.svg-1 .st7 { font-family: Arial; font-size: 1em }
.svg-1 .st8 { font-size: 1em }
.svg-1 .st9 { fill: none }
.svg-1 .st10 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999996 }
.svg-1 .st11 { fill: #000000; font-family: Arial; font-size: 0.833336em }
.svg-1 .st12 { fill: none; stroke: #3253dc; stroke-dasharray: 2.99999, 2.99999; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999996 }
.svg-1 .st13 { fill: none; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999996 }
.svg-1 .st14 { fill: #000000; font-family: Calibri; font-size: 0.833336em }
.svg-1 .st15 { marker-end: url("#mrkr5-68"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999996 }
.svg-1 .st16 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.28409010936214 }
.svg-1 .st17 { marker-start: url("#mrkr5-74"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999996 }
.svg-1 .st18 { fill: #000000; font-family: Arial; font-size: 1.00001em; font-weight: bold }
.svg-1 .st19 { fill: #000000; font-family: 黑体; font-size: 0.666664em }
.svg-1 .st20 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-68" class="st16" v:arrowtype="5" v:arrowsize="2" v:setback="0" refx="-0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-3.5200099089872,-3.5200099089872) "></use>	</marker>	<marker id="mrkr5-74" class="st16" v:arrowtype="5" v:arrowsize="2" v:setback="0" refx="0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(3.5200099089872) "></use>	</marker></defs><g v:mid="1" v:index="1" v:groupcontext="backgroundPage">	<v:userdefs>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="12.0093" height="4.43403" v:drawingscale="0.0393701" v:pagescale="0.0393701" v:drawingunits="24" v:shadowoffsetx="8.99996" v:shadowoffsety="-8.99996"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(0,-0.000707665)">		<title>Solid</title>		<v:userdefs>			<v:ud v:nameu="Background" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="msvShapeCategories" v:prompt="" v:val="VT4(DoNotContain)"></v:ud>			<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<rect x="0" y="0.00141533" width="864.67" height="319.249" class="st1"></rect>	</g></g><g v:mid="0" v:index="2" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0393701" v:pagescale="0.0393701" v:drawingunits="24" v:shadowoffsetx="8.99996" v:shadowoffsety="-8.99996"></v:pageproperties>	<v:layer v:name="Flowchart" v:index="0"></v:layer>	<g id="shape1-3" v:mid="1" v:groupcontext="shape" transform="translate(271.096,-43.0202)">		<title>工作表.1</title>		<desc>GPIO_55 interrupt line</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="45.8177" cy="314.749" width="91.64" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="91.6353" height="8.99996" class="st2"></rect>		<text x="16.03" y="317.35" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPIO_55 <tspan class="st4">中断线</tspan></text>		</g>	<g id="shape2-7" v:mid="2" v:groupcontext="shape" transform="translate(266.471,-283.965)">		<title>工作表.2</title>		<desc>VREG_L14B_3P2</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="37.1249" cy="314.749" width="74.25" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="74.2497" height="8.99996" class="st2"></rect>		<text x="4.88" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>VREG_L14B_3P2</text>		</g>	<g id="shape3-10" v:mid="3" v:groupcontext="shape" v:layermember="0" transform="translate(-157.972,218.828) rotate(-90)">		<title>Custom 2</title>		<v:custprops>			<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>			<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>			<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>		</v:custprops>		<v:userdefs>			<v:ud v:nameu="AntiScale" v:val="VT0(1):26"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>			<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>			<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>		</v:userdefs>		<path d="M18 319.25 L102.8 319.25 L120.8 299 L0 299 L18 319.25 Z" class="st5"></path>	</g>	<g id="shape4-12" v:mid="4" v:groupcontext="shape" transform="translate(38.4968,-124.82)">		<title>工作表.4</title>		<desc>QUP 11 configured for four-pin SPI operation</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="35.9999" cy="283.25" width="72" height="71.9997"></v:textrect>		<rect x="0" y="247.25" width="71.9997" height="71.9997" class="st5"></rect>		<text x="6.55" y="274" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>为四引脚<tspan class="st7"> </tspan><tspan class="st7">SPI </tspan><tspan x="11" dy="1.3em" class="st8">操作配置的</tspan><tspan class="st7"> </tspan><tspan x="18.21" dy="1.225em" class="st7">QUP </tspan><tspan class="st7">11</tspan></text>		</g>	<g id="shape5-21" v:mid="5" v:groupcontext="shape" transform="translate(110.654,-192.25)">		<title>工作表.5</title>		<path d="M0 319.25 L30.38 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L30.38 319.25" class="st10"></path>	</g>	<g id="shape6-24" v:mid="6" v:groupcontext="shape" transform="translate(110.654,-171.315)">		<title>工作表.6</title>		<path d="M0 319.25 L30.23 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L30.23 319.25" class="st10"></path>	</g>	<g id="shape7-27" v:mid="7" v:groupcontext="shape" transform="translate(110.091,-151.75)">		<title>工作表.7</title>		<path d="M0 319.25 L30.69 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L30.69 319.25" class="st10"></path>	</g>	<g id="shape8-30" v:mid="8" v:groupcontext="shape" transform="translate(110.091,-130.375)">		<title>工作表.8</title>		<path d="M0 319.25 L30.84 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L30.84 319.25" class="st10"></path>	</g>	<g id="shape9-33" v:mid="9" v:groupcontext="shape" transform="translate(307.017,-108.422)">		<title>工作表.9</title>		<desc>SPI to CAN controller (MCP2517FDT)</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="51.4489" cy="267.801" width="102.9" height="102.898"></v:textrect>		<rect x="0" y="216.353" width="102.898" height="102.898" class="st5"></rect>		<text x="8.67" y="259.05" class="st11" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SPI <tspan class="st4">转</tspan> CAN <tspan class="st4">控制器<v:newlinechar></v:newlinechar><v:newlinechar></v:newlinechar></tspan><tspan x="16.17" dy="2.425em" class="st8">(</tspan>MCP2517FDT)</text>		</g>	<g id="shape10-39" v:mid="10" v:groupcontext="shape" transform="translate(489.059,-108.422)">		<title>工作表.10</title>		<desc>CAN transceiver (MCP2561FDT)</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="51.4489" cy="267.801" width="102.9" height="102.898"></v:textrect>		<rect x="0" y="216.353" width="102.898" height="102.898" class="st5"></rect>		<text x="40.89" y="252.3" class="st11" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CAN <v:newlinechar></v:newlinechar><tspan x="36.45" dy="1.275em" class="st4">收发器<v:newlinechar></v:newlinechar><v:newlinechar></v:newlinechar></tspan><tspan x="16.17" dy="2.425em" class="st8">(</tspan>MCP2561FDT)</text>		</g>	<g id="shape11-44" v:mid="11" v:groupcontext="shape" transform="translate(29.3827,-91.0003)">		<title>工作表.11</title>		<path d="M0 319.25 L223.93 319.25 L223.93 157.75 L0 157.75 L0 319.25 Z" class="st12"></path>	</g>	<g id="shape12-46" v:mid="12" v:groupcontext="shape" transform="translate(18.9999,-19.0005)">		<title>工作表.12</title>		<rect x="0" y="38.0013" width="243.137" height="281.249" class="st13"></rect>	</g>	<g id="shape13-48" v:mid="13" v:groupcontext="shape" transform="translate(291.866,-79.7504)">		<title>工作表.13</title>		<path d="M0 319.25 L340.16 319.25 L340.16 146 L0 146 L0 319.25 Z" class="st12"></path>	</g>	<g id="shape14-50" v:mid="14" v:groupcontext="shape" transform="translate(650.025,-78.1166)">		<title>工作表.14</title>		<path d="M0 319.25 L194.59 319.25 L194.59 146 L0 146 L0 319.25 Z" class="st12"></path>	</g>	<g id="shape15-52" v:mid="15" v:groupcontext="shape" transform="translate(341.134,-271)">		<title>工作表.15</title>		<desc>TPS54628DDAR</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="35.9999" cy="307.999" width="72" height="22.4999"></v:textrect>		<rect x="0" y="296.75" width="71.9997" height="22.4999" class="st5"></rect>		<text x="5.76" y="310.4" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TPS54628DDAR</text>		</g>	<g id="shape16-55" v:mid="16" v:groupcontext="shape" transform="translate(650.519,-32.5006)">		<title>工作表.16</title>		<desc>CAN devices</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="47.2498" cy="307.999" width="94.51" height="22.4999"></v:textrect>		<rect x="0" y="296.75" width="94.4996" height="22.4999" class="st5"></rect>		<text x="27.33" y="311.33" class="st14" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CAN <tspan class="st4">设备</tspan></text>		</g>	<g id="shape17-59" v:mid="17" v:groupcontext="shape" transform="translate(751.17,-32.5006)">		<title>工作表.17</title>		<desc>CAN devices</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="47.2498" cy="307.999" width="94.51" height="22.4999"></v:textrect>		<rect x="0" y="296.75" width="94.4996" height="22.4999" class="st5"></rect>		<text x="27.33" y="311.33" class="st14" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CAN <tspan class="st4">设备</tspan></text>		</g>	<g id="shape18-63" v:mid="18" v:groupcontext="shape" transform="translate(307.017,446.25) rotate(180)">		<title>工作表.18</title>		<path d="M0 319.25 L139.58 319.25 L145.74 319.25" class="st15"></path>	</g>	<g id="shape19-69" v:mid="19" v:groupcontext="shape" transform="translate(307.017,467.921) rotate(180)">		<title>工作表.19</title>		<path d="M0 319.25 L5.8 319.25 L6.16 319.25 L145.74 319.25" class="st17"></path>	</g>	<g id="shape20-75" v:mid="20" v:groupcontext="shape" transform="translate(307.017,486.75) rotate(180)">		<title>工作表.20</title>		<path d="M0 319.25 L5.8 319.25 L6.16 319.25 L145.74 319.25" class="st17"></path>	</g>	<g id="shape21-80" v:mid="21" v:groupcontext="shape" transform="translate(307.017,507.563) rotate(180)">		<title>工作表.21</title>		<path d="M0 319.25 L5.8 319.25 L6.16 319.25 L145.74 319.25" class="st17"></path>	</g>	<g id="shape22-85" v:mid="22" v:groupcontext="shape" transform="translate(263.984,-36.7147)">		<title>工作表.22</title>		<path d="M102.9 247.25 L102.9 319.25 L6.16 319.25 L0 319.25" class="st15"></path>	</g>	<g id="shape23-90" v:mid="23" v:groupcontext="shape" transform="translate(263.465,-280)">		<title>工作表.23</title>		<path d="M0 319.25 L71.72 319.25 L77.88 319.25" class="st15"></path>	</g>	<g id="shape24-95" v:mid="24" v:groupcontext="shape" transform="translate(409.914,-191.594)">		<title>工作表.24</title>		<path d="M0 319.25 L72.99 319.25 L79.15 319.25" class="st15"></path>	</g>	<g id="shape25-100" v:mid="25" v:groupcontext="shape" transform="translate(409.914,-159.827)">		<title>工作表.25</title>		<path d="M0 319.25 L5.8 319.25 L6.16 319.25 L79.15 319.25" class="st17"></path>	</g>	<g id="shape26-105" v:mid="26" v:groupcontext="shape" transform="translate(591.957,-184.752)">		<title>工作表.26</title>		<path d="M0 319.25 L194.84 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L194.84 319.25" class="st10"></path>	</g>	<g id="shape27-108" v:mid="27" v:groupcontext="shape" transform="translate(591.957,-140.5)">		<title>工作表.27</title>		<path d="M0 319.25 L239.84 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L239.84 319.25" class="st10"></path>	</g>	<g id="shape28-111" v:mid="28" v:groupcontext="shape" transform="translate(998.043,133.75) rotate(90)">		<title>工作表.28</title>		<path d="M0 319.25 L130.5 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L130.5 319.25" class="st10"></path>	</g>	<g id="shape29-114" v:mid="29" v:groupcontext="shape" transform="translate(1043.05,178.75) rotate(90)">		<title>工作表.29</title>		<path d="M0 319.25 L85.5 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L85.5 319.25" class="st10"></path>	</g>	<g id="shape30-117" v:mid="30" v:groupcontext="shape" transform="translate(1106.05,133.75) rotate(90)">		<title>工作表.30</title>		<path d="M0 319.25 L130.5 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L130.5 319.25" class="st10"></path>	</g>	<g id="shape31-120" v:mid="31" v:groupcontext="shape" transform="translate(1151.05,178.75) rotate(90)">		<title>工作表.31</title>		<path d="M0 319.25 L85.5 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L85.5 319.25" class="st10"></path>	</g>	<g id="shape32-123" v:mid="32" v:groupcontext="shape" transform="translate(412.904,-280)">		<title>工作表.32</title>		<path d="M0 319.25 L134.08 319.25 L0 319.25 Z" class="st9"></path>		<path d="M0 319.25 L134.08 319.25" class="st10"></path>	</g>	<g id="shape33-126" v:mid="33" v:groupcontext="shape" transform="translate(696.155,48.2505) rotate(90)">		<title>工作表.33</title>		<path d="M0 319.25 L54.52 319.25 L60.68 319.25" class="st15"></path>	</g>	<g id="shape34-131" v:mid="34" v:groupcontext="shape" transform="translate(866.233,39.2506) rotate(90)">		<title>工作表.34</title>		<path d="M0 319.25 L62.52 319.25 L68.68 319.25" class="st15"></path>	</g>	<g id="shape35-136" v:mid="35" v:groupcontext="shape" transform="translate(33.3827,-270.5)">		<title>工作表.35</title>		<desc>SOC</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="17.9999" cy="311.329" width="36.01" height="15.8399"></v:textrect>		<rect x="0" y="303.41" width="35.9999" height="15.8399" class="st2"></rect>		<text x="5" y="314.93" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SOC</text>		</g>	<g id="shape36-139" v:mid="36" v:groupcontext="shape" transform="translate(118.67,-231.097)">		<title>工作表.36</title>		<desc>QUP</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="17.9999" cy="311.329" width="36.01" height="15.8399"></v:textrect>		<rect x="0" y="303.41" width="35.9999" height="15.8399" class="st2"></rect>		<text x="5" y="314.93" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QUP</text>		</g>	<g id="shape37-142" v:mid="37" v:groupcontext="shape" transform="translate(168.257,-194)">		<title>工作表.37</title>		<desc>GPIO_68_SPI_MISO</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="41.906" cy="314.749" width="83.82" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="83.8122" height="8.99996" class="st2"></rect>		<text x="4.11" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPIO_68_SPI_MISO</text>		</g>	<g id="shape38-145" v:mid="38" v:groupcontext="shape" transform="translate(168.257,-174.875)">		<title>工作表.38</title>		<desc>GPIO_69_SPI_MOSI</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="41.906" cy="314.749" width="83.82" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="83.8122" height="8.99996" class="st2"></rect>		<text x="4.11" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPIO_69_SPI_MOSI</text>		</g>	<g id="shape39-148" v:mid="39" v:groupcontext="shape" transform="translate(166.851,-155.371)">		<title>工作表.39</title>		<desc>GPIO_70_SPI_CLK</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="41.906" cy="314.749" width="83.82" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="83.8122" height="8.99996" class="st2"></rect>		<text x="6.55" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPIO_70_SPI_CLK</text>		</g>	<g id="shape40-151" v:mid="40" v:groupcontext="shape" transform="translate(168.257,-133.25)">		<title>工作表.40</title>		<desc>GPIO_71_SPI_CS</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="41.906" cy="314.749" width="83.82" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="83.8122" height="8.99996" class="st2"></rect>		<text x="8.78" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPIO_71_SPI_CS</text>		</g>	<g id="shape41-154" v:mid="41" v:groupcontext="shape" transform="translate(434.211,-282.875)">		<title>工作表.41</title>		<desc>Power: DCDC 5 V</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="41.906" cy="314.749" width="83.82" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="83.8122" height="8.99996" class="st2"></rect>		<text x="11.24" y="317.35" class="st19" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>电源：<tspan class="st7">DCDC </tspan><tspan class="st7">5 </tspan><tspan class="st7">V</tspan></text>		</g>	<g id="shape42-160" v:mid="42" v:groupcontext="shape" transform="translate(411.771,-233.525)">		<title>工作表.42</title>		<desc>SPI to CAN</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="37.8938" cy="311.329" width="75.79" height="15.8399"></v:textrect>		<rect x="0" y="303.41" width="75.7877" height="15.8399" class="st2"></rect>		<text x="5.87" y="315.23" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SPI <tspan class="st4">转</tspan> CAN</text>		</g>	<g id="shape43-164" v:mid="43" v:groupcontext="shape" transform="translate(427.83,-194.443)">		<title>工作表.43</title>		<desc>TX_CAN</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="21.6561" cy="314.749" width="43.32" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="43.3123" height="8.99996" class="st2"></rect>		<text x="5.87" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TX_CAN</text>		</g>	<g id="shape44-167" v:mid="44" v:groupcontext="shape" transform="translate(427.83,-163.737)">		<title>工作表.44</title>		<desc>RX_CAN</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="21.6561" cy="314.749" width="43.32" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="43.3123" height="8.99996" class="st2"></rect>		<text x="5.43" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>RX_CAN</text>		</g>	<g id="shape45-170" v:mid="45" v:groupcontext="shape" transform="translate(594.998,-187.25)">		<title>工作表.45</title>		<desc>CAN_H</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="18.2641" cy="314.749" width="36.53" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="36.5282" height="8.99996" class="st2"></rect>		<text x="4.71" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CAN_H</text>		</g>	<g id="shape46-173" v:mid="46" v:groupcontext="shape" transform="translate(596.651,-143.375)">		<title>工作表.46</title>		<desc>CAN_L</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="18.2641" cy="314.749" width="36.53" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="36.5282" height="8.99996" class="st2"></rect>		<text x="5.37" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CAN_L</text>		</g>	<g id="shape47-176" v:mid="47" v:groupcontext="shape" transform="translate(709.004,-233.525)">		<title>工作表.47</title>		<desc>CAN bus</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="32.3749" cy="311.329" width="64.76" height="15.8399"></v:textrect>		<rect x="0" y="303.41" width="64.7497" height="15.8399" class="st2"></rect>		<text x="5.66" y="315.23" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CAN <tspan class="st4">总线</tspan></text>		</g>	<g id="shape48-180" v:mid="48" v:groupcontext="shape" transform="translate(409.914,-128.059)">		<title>工作表.48</title>		<path d="M0 319.25 L72.99 319.25 L79.15 319.25" class="st15"></path>	</g>	<g id="shape49-185" v:mid="49" v:groupcontext="shape" transform="translate(414.104,-130.503)">		<title>工作表.49</title>		<desc>GPIO_0/XSTBY</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99998,3.99998,3.99998,3.99998)" v:tabspace="42.5195"></v:textblock>		<v:textrect cx="35.9999" cy="314.749" width="72" height="8.99996"></v:textrect>		<rect x="0" y="310.25" width="71.9997" height="8.99996" class="st2"></rect>		<text x="7.32" y="317.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPIO_0/XSTBY</text>		</g></g>
</svg>

用户应用程序与 SocketCAN 提供的网络接口进行通信。软件驱动程序是 Linux 中 SPI 核心模块的客户端，QUP\_SPI 驱动程序注册到该客户端。实际硬件通过 SPI 引脚连接。 
Figure : CAN 软件栈
                
                <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- 由 Microsoft Visio, SVG Export 生成 can-sw-stack.svg can-sw-stack -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="5.24524in" height="5.54746in" viewbox="0 0 377.657 399.417" xml:space="preserve" color-interpolation-filters="sRGB" class="st9"><v:documentproperties v:langid="2052">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-2 .st1 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749999 }
.svg-2 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999998 }
.svg-2 .st3 { fill: #000000; font-family: 黑体; font-size: 0.916672em }
.svg-2 .st4 { fill: #000000; font-family: Arial; font-size: 0.916672em }
.svg-2 .st5 { font-family: 黑体; font-size: 1em }
.svg-2 .st6 { fill: none }
.svg-2 .st7 { stroke: #000000; stroke-dasharray: 5.24999, 3.74999; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749999 }
.svg-2 .st8 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.749999 }
.svg-2 .st9 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<g v:mid="1" v:index="1" v:groupcontext="backgroundPage">	<v:userdefs>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="5.24524" height="5.54746" v:drawingscale="0.0393701" v:pagescale="0.0393701" v:drawingunits="24" v:shadowoffsetx="8.50392" v:shadowoffsety="-8.50392"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(0,-0.000440742)">		<title>Solid</title>		<v:userdefs>			<v:ud v:nameu="Background" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="msvShapeCategories" v:prompt="" v:val="VT4(DoNotContain)"></v:ud>			<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<rect x="0" y="0.000881483" width="377.657" height="399.416" class="st1"></rect>	</g></g><g v:mid="0" v:index="2" v:groupcontext="foregroundPage">	<title>can-sw-stack</title>	<v:pageproperties v:drawingscale="0.0393701" v:pagescale="0.0393701" v:drawingunits="24" v:shadowoffsetx="8.50392" v:shadowoffsety="-8.50392"></v:pageproperties>	<g id="shape1-3" v:mid="1" v:groupcontext="shape" transform="translate(161.95,-352.07)">		<title>Rectangle</title>		<desc>Application</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="90.6834" cy="385.243" width="181.37" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="181.367" height="28.3464" class="st2"></rect>		<text x="68.68" y="388.82" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>应用程序</text>		</g>	<g id="shape2-6" v:mid="2" v:groupcontext="shape" transform="translate(161.95,-309.55)">		<title>Rectangle.2</title>		<desc>CAN dev</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="90.6834" cy="385.243" width="181.37" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="181.367" height="28.3464" class="st2"></rect>		<text x="66.54" y="388.82" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CAN <tspan class="st5">设备</tspan></text>		</g>	<g id="shape3-10" v:mid="3" v:groupcontext="shape" transform="translate(161.95,-241.52)">		<title>Rectangle.3</title>		<desc>Socket CAN</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196" v:verticalalign="0"></v:textblock>		<v:textrect cx="90.6834" cy="368.945" width="181.37" height="60.9448"></v:textrect>		<rect x="0" y="338.472" width="181.367" height="60.9448" class="st2"></rect>		<text x="61.04" y="353.2" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CAN <tspan class="st5">套接字</tspan></text>		</g>	<g id="shape4-14" v:mid="4" v:groupcontext="shape" transform="translate(173.925,-250.833)">		<title>Rectangle.4</title>		<desc>CAN_net driver</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="79.3615" cy="385.243" width="158.73" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="158.723" height="28.3464" class="st2"></rect>		<text x="33.52" y="388.82" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CAN_net <tspan class="st5">驱动程序</tspan></text>		</g>	<g id="shape5-18" v:mid="5" v:groupcontext="shape" transform="translate(161.95,-206.087)">		<title>Rectangle.5</title>		<desc>MCP251XFD driver</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="90.6834" cy="385.243" width="181.37" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="181.367" height="28.3464" class="st2"></rect>		<text x="34.76" y="388.82" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>MCP251XFD <tspan class="st5">驱动程序</tspan></text>		</g>	<g id="shape6-22" v:mid="6" v:groupcontext="shape" transform="translate(161.95,-170.653)">		<title>Rectangle.6</title>		<desc>SPI device driver</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="49.5329" cy="385.243" width="99.07" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="99.0659" height="28.3464" class="st2"></rect>		<text x="6.14" y="388.82" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SPI <tspan class="st5">设备驱动程序</tspan></text>		</g>	<g id="shape7-26" v:mid="7" v:groupcontext="shape" transform="translate(268.635,-170.653)">		<title>Rectangle.7</title>		<desc>SPI dev</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="37.3402" cy="385.243" width="74.69" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="74.6805" height="28.3464" class="st2"></rect>		<text x="15.95" y="388.82" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SPI <tspan class="st5">设备</tspan></text>		</g>	<g id="shape8-30" v:mid="8" v:groupcontext="shape" transform="translate(161.95,-134.411)">		<title>Rectangle.8</title>		<desc>SPI_core</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="90.6834" cy="385.243" width="181.37" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="181.367" height="28.3464" class="st2"></rect>		<text x="68.06" y="388.54" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SPI_core</text>		</g>	<g id="shape9-33" v:mid="9" v:groupcontext="shape" transform="translate(161.95,-98.1675)">		<title>Rectangle.9</title>		<desc>SPI_core</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="90.6834" cy="385.243" width="181.37" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="181.367" height="28.3464" class="st2"></rect>		<text x="68.06" y="388.54" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SPI_core</text>		</g>	<g id="shape10-36" v:mid="10" v:groupcontext="shape" transform="translate(161.95,-61.9246)">		<title>Rectangle.10</title>		<desc>SPI_master driver</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="90.6834" cy="385.243" width="181.37" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="181.367" height="28.3464" class="st2"></rect>		<text x="4" y="388.82" class="st4" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>SPI_master <tspan class="st5">驱动程序</tspan></text>		</g>	<g id="shape11-40" v:mid="11" v:groupcontext="shape" transform="translate(279.358,-61.9246)">		<title>Rectangle.11</title>		<desc>QUP_SPI</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="31.9789" cy="385.243" width="63.96" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="63.9579" height="28.3464" class="st2"></rect>		<text x="8.14" y="388.54" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QUP_SPI</text>		</g>	<g id="shape12-43" v:mid="12" v:groupcontext="shape" transform="translate(161.95,-18.9999)">		<title>Rectangle.13</title>		<desc>Hardware</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="90.6834" cy="385.243" width="181.37" height="28.3464"></v:textrect>		<rect x="0" y="371.071" width="181.367" height="28.3464" class="st2"></rect>		<text x="79.68" y="388.82" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>硬件</text>		</g>	<g id="shape13-46" v:mid="13" v:groupcontext="shape" transform="translate(18.75,-54.4304)">		<title>工作表.13</title>		<path d="M0 399.42 L340.16 399.42 L0 399.42 Z" class="st6"></path>		<path d="M0 399.42 L340.16 399.42" class="st7"></path>	</g>	<g id="shape14-49" v:mid="14" v:groupcontext="shape" transform="translate(18.75,-344.981)">		<title>工作表.14</title>		<path d="M0 399.42 L340.16 399.42 L0 399.42 Z" class="st6"></path>		<path d="M0 399.42 L340.16 399.42" class="st7"></path>	</g>	<g id="shape15-52" v:mid="15" v:groupcontext="shape" transform="translate(27.6356,-353.487)">		<title>工作表.15</title>		<desc>User space</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="41.5275" cy="389.495" width="83.06" height="19.8425"></v:textrect>		<rect x="0" y="379.575" width="83.0549" height="19.8425" class="st8"></rect>		<text x="4" y="393.07" class="st3" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>用户空间</text>		</g>	<g id="shape16-55" v:mid="16" v:groupcontext="shape" transform="translate(26.6714,-199)">		<title>工作表.16</title>		<desc>Kernel space</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="41.5275" cy="389.495" width="83.06" height="19.8425"></v:textrect>		<rect x="0" y="379.575" width="83.0549" height="19.8425" class="st8"></rect>		<text x="4" y="393.07" class="st3" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>内核空间</text>		</g>	<g id="shape17-58" v:mid="17" v:groupcontext="shape" transform="translate(27.3146,-27.5038)">		<title>工作表.17</title>		<desc>Hardware</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:tabspace="42.5196"></v:textblock>		<v:textrect cx="41.5275" cy="389.495" width="83.06" height="19.8425"></v:textrect>		<rect x="0" y="379.575" width="83.0549" height="19.8425" class="st8"></rect>		<text x="4" y="393.07" class="st3" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>硬件</text>		</g></g>
</svg>

## CAN API

Source: [https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html](https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html)

关于 CAN 公共 API，请参阅 [https://www.kernel.org/doc/Documentation/networking/can.txt](https://www.kernel.org/doc/Documentation/networking/can.txt)。

## CAN 示例和工具

Source: [https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html](https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html)

下表列出了用于显示、记录、生成和重放 CAN 流量的 SocketCAN 用户空间实用工具和工具。 

Table : SocketCAN 实用工具

| 实用工具 | 说明 |
| --- | --- |
| `candump` | 显示、过滤 CAN 数据并将其记录到文件中。 |
| `canplayer` | 重放 CAN 日志文件。 |
| `cansend` | 发送单个帧。 |
| `cangen` | 生成（随机）CAN 流量。 |
| `cansniffer` | 显示 CAN 数据内容差异（仅 11 位 CAN ID）。 |

要下载 CAN 实用工具，请参阅 [https://github.com/linux-can/can-utils](https://github.com/linux-can/can-utils)。

### CAN 分析仪 - PCAN-USB FD

PCAN-USB FD 是一款多功能 CAN 数据包/消息嗅探器，可以作为任何 CAN 总线上的节点运行，以支持灵活的数据速率。它可用于通过 USB 在主机上嗅探和发送 CAN 数据包。主要特点如下：

- PCAN-View GUI 工具
    - 提供根据用户需求嗅探和发送 CAN 数据包的简单方法。
    - 在开发和测试期间监控和调试 CAN 数据包。
- PCAN-USB FD 接口
    - 实现与 CAN FD 和 CAN 网络的简单连接。
    - 紧凑的塑料外壳适合移动应用。
    - 约 500 V 的电流隔离可将 PC 与 CAN 总线解耦。
- CAN FD 标准
    - 特点是数据传输带宽更高。
    - 允许每个 CAN FD 帧传输最多 64 个数据字节（而非 8 个）。
    - 支持高达 12 Mbit/s 比特率的数据处理速度。
    - 向下兼容 CAN 2.0 标准。
    - CAN FD 节点可以插入现有 CAN 网络，无需 CAN FD 扩展。

**硬件安装**
1. 连接至 DB9 连接器。
    - PCAN 有一个 DB9 连接器，可以插入任何标准 DB9 连接器。
2. 连接至 Qualcomm RB3 Gen 2 平台。
    - 拉出 CAN\_H、CAN\_L 和 GND 线。
    - 将这些线连接到两个 120 Ω 的终端电阻。
3. 连接 CAN\_H、CAN\_L 和大地。
    ![](data:image/png;base64,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)
4. 连接外部终端电阻。
注释： 该设备没有 120 Ω 的内部终端电阻。这一点至关重要，因为某些工具提供了对终端电阻的内置支持。

![](data:image/png;base64,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)

下图显示了连接的硬件。
Figure : CAN USB FD、外部电阻和设备连接

![](data:image/png;base64,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)

## CAN 调通

Source: [https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html](https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html)

CAN 驱动程序构建并加载到内核后，以下命令序列会发送数据来识别 CAN 节点是否已启动。可以使用下表中列出的命令启动或停止 CAN 节点。 
注释： 所有网络设备均使用 `ifconfig -a`。

Table : CAN 命令

| 说明 | 命令 |
| --- | --- |
| 检查 CAN 节点号 | ifconfig -aCopy to clipboard |
| 将比特率设置为 125 kbps | ip link set can0 up type can bitrate 125000Copy to clipboard |
| 启动 CAN | ip link set can0 upCopy to clipboard |
| 停止 CAN | ip link set can0 downCopy to clipboard |
| 检查 CAN 配置 | ip -details link show can0Copy to clipboard |
| CAN 内部环回 | ip link set can0 up type can bitrate 500000 loopback onCopy to clipboard |
| CAN FD 内部环回 | ip link set can0 up type can bitrate 1000000 dbitrate 5000000 fd on loopback onCopy to clipboard |
| 发送 CAN FD 帧 | cansend can0 213##311223344Copy to clipboard |

要启动任何 CAN 节点，必须定义总线的比特率，如果总线速率已经可用，则必须配置总线的比特率。此配置可确保 CAN 节点启动并处于活动状态。关于 CAN 实用工具的更多详细信息，请参阅 [https://manpages.debian.org/testing/can-utils/index.html](https://manpages.debian.org/testing/can-utils/index.html)。

### 发送和接收数据

`CAN-Utils`文件中提供了一些实用工具。SocketCAN 使 CAN 节点能够发送和接收数据。SocketCAN API 也用于自定义应用程序。
- 发送带有 11 位 ID 的数据

        cansend can0 7AF#11.22.33.44.55.66.aa.ffCopy to clipboard
- 发送带有 29 位 ID 的数据

        cansend can0 111FFFFF#aa.00.cc.aa.33.61.aa.abCopy to clipboard
- 查看 can0 节点当前传入的数据

        candump can0Copy to clipboard

## CAN 配置

Source: [https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html](https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html)

SocketCAN 是 Linux上 CAN 协议的实现。SocketCAN 使用 Berkeley 套接字接口、Linux 网络堆栈并将 CAN 设备驱动程序实现为网络接口。CAN 套接字接口的设计尽可能类似于 TCP/IP 协议，以便熟悉网络编程的用户能够轻松学习如何使用 CAN 套接字。

### 硬件初始化

驱动程序初始化并配置底层硬件块。初始化发生在调用 `driver's _probe()` 函数之后。

    static struct spi_driver mcp251xfd_driver = {
        .driver = {
            .name = DEVICE_NAME,
            .pm = &mcp251xfd_pm_ops,
            .of_match_table = mcp251xfd_of_match,
        },
        .probe = mcp251xfd_probe,
        .remove = mcp251xfd_remove,
        .id_table = mcp251xfd_id_table,
    };
     
    static int mcp251xfd_probe(struct spi_device *spi)
    {
        struct net_device *ndev;
        struct mcp251xfd_priv *priv;
    [..]
    ndev = alloc_candev(sizeof(struct mcp251xfd_priv),
                    MCP251XFD_TX_OBJ_NUM_MAX);
        if (!ndev)
            return -ENOMEM;
     
        SET_NETDEV_DEV(ndev, &spi->dev); // The SPI node is set as the parent node to the network device. 
     
        ndev->netdev_ops = &mcp251xfd_netdev_ops;
    [..]
        err = mcp251xfd_register(priv);
    };Copy to clipboard

## CAN 调试

Source: [https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html](https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html)

可以使用 `ftrace` 工具调试 CAN 问题。MCP2517 驱动程序支持 `dev_coredump()` API。

## CAN 示例

Source: [https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html](https://docs.qualcomm.com/doc/80-70017-8SC/topic/can.html)

关于 CAN 示例，请参阅[https://github.com/linux-can/can-utils/blob/master/README.md](https://github.com/linux-can/can-utils/blob/master/README.md)。

Last Published: Jan 22, 2025

[Previous Topic
USB](https://docs.qualcomm.com/bundle/publicresource/80-70017-8SC/topics/usb.md) [Next Topic
参考资料](https://docs.qualcomm.com/bundle/publicresource/80-70017-8SC/topics/references.md)