现场总线CAN实验指导_第1页
现场总线CAN实验指导_第2页
现场总线CAN实验指导_第3页
现场总线CAN实验指导_第4页
现场总线CAN实验指导_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、现场总线can实验指导刖言can(controller area network)总线诞生和发展于汽车工业口动控制,是两线制”多主对 等”总线型拓扑网络,能有效地支持较高安全等级的分布实时控制系统,是唯一有国际标准 的现场总线(field bus)o不少知名的半导体产家都住产can控制器芯片,不管是哪种产品, 都是严格遵守已经指定的can的规范和国际标准。因此 只耍掌握了一种,其余的就可以 触类旁通。sja1000是philips半导体公司推出的独立式can控制器,本实验中,就是以 sjai000分别与pc机和单片机接口纽成不同的can节点。现有的can标准协议有两个: can2.0a和can

2、2.0b。木实验中,默认采用的协议标准是can2.0b标准。当然,也可以 通过设置相应的寄存器来使sja1000按照can2.0a的方式工作。本实验装置,包括了计算机的“can实验”软件、硬件电路和智能can节点的应用 层程序三个部分。硬件电路主要是山单片机、sja1000. pca82c250、1sp电路和一些输入 输出电路构成(详见附录2)0按逻辑功能來划分,硬件电路可以分为两部分:转换器 (epp-can)和智能can节点(can节点);而计算机端的“can实验”软件,则由vb.6 编写而成,能够完成的实验内容包括初始化、数据发送与接收、对can节点的访问和对硬 件输入输出的控制等。在硬

3、件电路上包含有isp下载线(只适用于stc系列单片机,硬件 电路留有其它系列单片机的isp接口,详见附录3),方便实验者设计并下载自己的can通 信程序。由于时间和水平不足,部分实验的制作和安排有些匆忙,难免有错谋和不足,希望老师 同学们指出,并欢迎一起來讨论!请注意:1. 由于这个实验装置要求使用并口的epp模式,而一般情况下,并口是处于spp模式的。 所以在有些计算机上,使用这个实验软件之前,必须重启计算机到cmos里修改并口的工 作模式和并口的端口地址/中断号。具体做法是:重启计算机,按“del”进入cmos设置,找到并口的选项:on board parallel (不 同计算机的这个并

4、口选项的位置是不同的)。设置并口的工作模式为epp模式;设置并口端 口地址/中断号为378h/irq7;2. “can实验”这个软件的数据的主要输入输出格式为16进制(hex),在输入数据时, 请不要把进制符号输入进去。例如:要输入16进制数“78h”,正确:直接输入“78”。(不要引号,不要空格)错误:“78h”、“0x78”、“&h78” 等。3. 最好在实验开始之前,把显示器的分辨率调到1024*768或更高的分辨率。4. 在实验过程中,帮助文件可以帮你解决经常出现的问题。在附录2和附录3中,有相关 的硬件电路图和各个跳线接口的介绍,实验之前和实验过程中可以作为参考。附录4中有

5、一个完整的can通信程序,仅供参考。2007.12.15目录实验一:can控制器sja1000入门3实验二:can节点的数据发送接收6实验三:can节点的访问与控制9实验四:can总线竞争与总裁实验13实验五:设计性实验,编写can节点的简单通信程序15附录1:计算机与sja1000的接口介绍附录2:硬件电路原理图附录3:实验装置接口及跳线附录4: 一个can通信源程序实验一 can控制器sja1000入门一. 实验冃的1. 熟悉can实验硬件和软件,熟悉基木的界面操作和和关的硬件知识。2学习can控制器sja1oo0的的初始化过程,包括模式设置、滤波器设置、波特率设 置和sja1oooj2作

6、方式设置等。掌握寄存器的设置打访问方法。3.理解在pelican模式下,涉及到的所有寄存器的作用和意义。二. 实验内容1 准备工作计算机上的软件是通过并口来访问sja1ooo的,并口与sja1ooo的接口在附录1中冇 介绍。止式做实验z前。应该确认一下你的实验破件是否连接止常,请按照以下要求进行确认:a. 实验装迸的硬件电路上,sja1ooo是通过并口与计算机通信,请确认实验硬件 与计算机的并口连接是否正确、各接口是否连接牢固,如呆连接头出现松动,请压紧。 插拔并口的时候请不要太用丿j。电路背面较锋利,小心被划伤。b. 在每一个实验硬件上,都包括了两个can接口。分别是:并口can装换器的 c

7、an接口和智能can节点的can接口。实验开始之前请确认这两个can接口已经 连通。如果没有连接好,请用跳线把她们连接起来,can总线的正确接法是(canh-canh, canl-canl),注意不要把 canh 和 canl 连在一起。c. 当总线上冇多于2个can节点的时候,请把82c250的终端匹配电阻并接在 canh 与 canlz间。d. 请确认电路板的电源连接正确(5v电源)。不要把电源接反了。2. 熟悉can实验软件。从“开始i所有程序”中找到“现场总线can实验”,点击并打 开,其主界面如图mo宙口视(3i can基础实脸2 can单节点实験sja1000初妲化数据发送实验节点

8、參数査询数据接收实验参数设査及査诲网络叙n工員22:50:4722:50:4822:50:4922:50:4922:50:49及件加输用3文霁使的数加及参当当 常有星口1 lpt1未知欢迎试用eg验软件图1-1 “can实验”软件的主界面主界面中,包括4个部分。分别是基础实验、节点实验、网络检测和扩展实验。 接下來,就是连接碳件设备。点击菜单“添加i添加转换器”,然后在显示出的窗口点击“添加”,即可完成这一步(如果硬件没有及时上电,请等待硬件上电)图2。图12添加转换器2. 成功添加转换器后,就可以开始做垄础实验。在主界面点击进入“sja1000初始化”。 如图3所示。图13这是我门这次实验的

9、氓验操作界面。3. 参考教材的sjaiooo相关初始化流程,在图3这个界面完成对sja1000的初始化工 作,包括对模式寄存器、滤波器、波特率控制器和输出控制寄存器等的设置。三. 实验要求1 掌握sja1000的初始化流程,并根据以下要求进行初始化:a:滤波器设bs (h)为数值符号,输入的时候不要写h。acr3=55 (h), acr2=aa (h), acr1=()1 (h), acr0=65 (h);amr3=00 (h), amr2=0f (h), amr1=ff (h), amro=ff (h)b:波特率等:btr0=31 (h), btr1 = 1c (h) -> (10kb

10、ps)c: sja100()的工作协议(方式)sjaiooo按照can2.0b协议工作(cdr);禁止clockout引脚输出。d: sjaiooo的滤波器模式为单滤波。2. 仔细观察实验过程,并记录sjaiooo在不同模式下(mode=01h,蚩h), acr3-acr0、 amr3-amr0 什么不同的地方,并分析原因。.3. 在实验报告上曲出sjaiooo的初始化流程图。实验二can节点的数据发送与接收一. 实验目的1.进一步掌握can控制器sja1000的寄存器设置2. 掌握can节点的数据发送过程,can2.0b协议下的扩展格式数据帧的发送。3. 掌握can节点的数据接收过程,can

11、2.0b协议卞的扩展格式数据帧的接收。二. 实验内容1. can节点的自发自收发送蠶通需豐菜单添加转换器(其实也是一个can节点)。添加成功麻进入数据步*h茯取当前伏恋:伏态寄存磊:|读状态| 状态未知步*2-发送级冲区地址发送缓冲区首i eltu82: o<ex)|苑观 i步*4 命令发送益严i -*1 skr cdo rr at tr厂厂厂厂厂厂厂厂步験3塔发送綾冲区数齋控制字节:包括长度.宦类型.禎格式 妬为88h)目的帧id : 4个字节.耳中低3位不可识别,建议设为0数齋内容:町以发送计字节的内容空jw认为是数18040id1 ido dan dat6 dats dat4 da

12、t3 dat2 dat1 datofe fe fe fe fe fe fe fi tl fe tl tl tl空則款认为:ooh塔缓冲区dnitr)滴除总钱伏态:发送完成状态:未知接收缓冲器状态:未知雄完成状态:未知磁伏亦:未知摄收缓沖甜状态:未知自按收的数据,当前位置:主界面一can自收发图21 “发送数据”操作界面按照上血提示的步骤,并参考教材的相关流程,一步一步地进行实验。2. 通过主界面进入can数据接收界而。can数据接收实验的流程与发送流程有所不同, 请仔细观察你每一步的操作结果,并记录下来。图22。步骤1 一枝取当前状态状态寄存器(sr)总线状态:未知发送完成状态:未知错误状态:

13、未知接收缓冲器状态:未知发送状态:未知数据溢岀状态:未知接收状态:未知接收缓冲器状态:未知步骤2接收缓冲区地址if® l 匀预备步骤:发送一次数据自接收方式生成一接收数据,作为后续步骤的比较对象con id3 id2 id1 ido di d2 d3 d4 d5 d6 d7 d8发送i步骤3接收数据地址名称fecohfeid3feid2feidlfeidofedlfed2fed3fed4fed5fed6fed7fed8内容1re51读取读取读职读取读取读取读取读取读取读取读取读取读取步骤4 一释放接收缓冲区宓存器i写命令|当前位置:主界面-yan按收数帀图22 “接收数据”操作界面3

14、. 实验屮可能要用到的相关寄存器值及意义:0.模式寄存器(mode)mode=oxou 0x09、0x0d: sja1000已经进入了复位模式,这个时候不能进行数据 接收发送。mode=ox()8. 0x0c: sja1000工作在正常模式下,允许数据的收发。1. 命令寄存器(cmr).命令寄存器的各种值的意义:cmr=0x01:普通方式发送一个数据cmr=0x02:紧急发送当前数据,如果前依次的发送没冇完成,撤消前一次发送.cmr=0x04:释放数据接收缓冲接收区cmr=()x()8:清除数据溢出cmr=0x10:以自接收方式发送数据2. 状态奇存器(sr).状态寄存器反映的是sja1000

15、的当前活动状态.读取这个的值可以知道当前的sja1000是否允许接收和发送数据.状态寄存器共冇8位,每一位都表示不同的状态.sr.7:总线状态.sr.7=1:总线关闭,sja1000不参与总线活动,有可能是总线错误引发的.sr.7=0:总线正常sr.6:错课状态.sr.6=1:出现错误,至少一个错谋计数器达到或超过报警限额(0x60).sr.6=0:正常sr.5:发送状态.sr.5=i:sja1000正在发送报文.sr.5=():空闲sr.4:接收状态.sr.4=l:sja1000正在接收报文.sr.4=0:空闲sr.3:发送完成状态.sr.3=1:完成,最后一次已经发送成功sr.3=0:先前

16、请求的发送还没冇完成sr.2泼送缓冲区状态.sr.2=1:释放,可以想发送缓冲区写报文.sr.2=():锁定,不能访问发送缓冲区sr.1:数据溢岀状态.sr.1 = 1:溢出,报文丢火sr.l=0:正常sr.0 :接收缓冲器状态.sr.()=1:存在有效报文.sr.cm):没有报文三. 实验要求1. 要求掌握can的数据发送接收过程,了解状态寄存器在数据帧传送过程中的作川。2. 要求掌握can2.0b协议卜can数据帧的纽成格式,认识can的1d号(acr3, acr2, acr1, acr0)与数据帧id号的关系,认识在操作模式下,sja1000的发送缓冲 区的首地址、内容及意义。3. 在实

17、验报告上,分別画出数据发送和数据接收流程图。实验三can节点的访问与控制一. 实验目的1. 进一步掌握can2.0b的数据帧格式,理解由id号(acr3-acr0)与接收屏蔽寄存 器(amr3-amr0)组成的验收滤波器的作用。2理解can数据帧的标识符与目的can节点滤波器的匹配关系。二. 实验内容1. “节点参数查询”:查看在一个运行正常情况fcan节点的寄存器内容。请看图31。图3-1读取can节点的部分寄存器2“.外设控制实验”:在can节点运行正常的情况下,通过上位机与can节点上单片 机约定的格式,访问can节点的各种外部输入输出设备。体验在can网络条件下,对硬 件设备的可靠及便

18、捷的控制方式。请看图3-2。cam对8位led的绘制led旻示jl2心|it型电机揑制步:枝取当it状裔状态奇存器:ifeiit101112131415161718191a名称conid3id2id1idodid2d3d4d5d6内容88id3id2id1ido057fdat对蜂呜器的访问帧格式:作用访问can点(id3. id2. id1.ido)±的蜂鸣器.选择蜂鸣器.并让它呜叫,8840 223310057fff0选择蜂鸣器,并停止鸣叫,8840 223310057fff0总线伏态: 林发送芫成状态:橹误伏态: 林接收缓冲聽状态:未知发送畑:未知数据溢岀状态:未知接收状态: 林

19、接收缓冲器状亦:步奖2:向发送拔冲区写入数据览址10111213141516171819!a ib 1c名渝c0hid3 id2 id1 id0di d2d3 md5 d6 d7d8内容【r t "r *r1 1 1 1 1 1 1塔入数捋:渎状态;状态未知金令奇存«1:关闭r伶止图32对can节点外设的访问与控制3. “网络检测工具”:用于査看can总线的活动情况,查看并分析can数据帧的内容 及格式等。请看图3-3ocah分析工具4. “can网络控制”:简单化的外设控制实验,允许对3个以上的can节点进行访间 与控制。请看图3-4。这里实际是一个智能can节点接受pc

20、命令而控制3个外设? ?图3-4简易外设控制在每一个操作界面,都有以上实验内容的详细操作过程和帮助文件,请仔细参考这些文 件,并认真观察你的操作结果。三。实验要求1. 了解如何通过can总线來访问和控制硕件设备,认识单片机与输入输出设备的硕件接2. 理解can节点的id号(acr3-acr0)与其优先级的关系。实验四can总线竞争与仲裁实验一. 实验冃的进一步理解can总线的非破坏性仲裁机制的原理,了解can报文的id号与具优先级 的关系。二. 实验内容木次实验的主要内容是使两个can节点连续发送can报文,通过观察计算机接收到 的can报文数目來认识can的非破坏性总裁机制,认识报文的1d号

21、与一其优先级的关系。这一次的实验,主要是使用实验装置上的硬件和软件來制造总线冲突,然后在“can 实验“软件的界面上来观察总线冲突的结果。根据can的非破坏性仲裁原理:谁的报文优 先级高,那么他发送的报文越快;两个节点同时发送的时候,优先级高的报文可以不受破坏 地发送,优先级低的就只能退出发送,并等待总线空闲;多个节点同吋发送,最高优先级的 报文最先获得总线。根据这个原理,我们可以通过计算机接收到的数据报文数量來认识和理 解can总线的竞争与仲裁机制,既优先级越高的报文,其数量越多。在实验装置的最下端,位于两个晶振之间的“into “是总线冲突开关。如果把它拨到 左边,就可以连续的发送can报

22、文(id3=8位拨动开关的状态),如果拨到右边,就退出连 续发送状态。本次实验就是耍使用这个按钮。1.首先点击“can实验”软件,打开到“网络检测工具”,如图41所示。实验界面上 有一个“总线竞争”按钮。a 4-i实验界面2. 总线冲突需要两个节点同时发送才会出现。我们应该把两个实验板的can总线连接 起來,让这两个can节点竞争使用总线。(注意can总线的两根线的接法,不要接错了)3. 找到总线冲突开关“into”,位于实验板最下端,在两个晶振z间。先把它都拨到右 边,即“不发送can报文”。每个实验板的这个总线冲突开关都必须拨到右边。4点击实验界面上的“总线冲突”按钮,然后同时把两个板子上

23、的冲突开关拨到左边(记 住,是同吋)。在5-10秒种后,把开关拨回到左边,即退出发送。这个吋候,可以观察到, 实验界面上显示接收到儿十到儿百个can报文,你可以根据这些报文的数量來分析can 总线的仲裁过程和仲裁结果。注意:在步骤4屮,总线冲突的时间不要太长,否则容易使计算机软件的缓冲区溢岀。冲突 时间一般控制在5-7秒z间为好。三. 实验要求重复进行23次冲突实验,并按id号统计接收到的数据报文数量,根据报文数量的对 比來分析其优先级的关系。实验五can通信程序的设计设计要求:1. 能够正确地将sja1000初始化。初始化设置为:can总线波特率为10kbps;滤波 器模式为:单滤波;禁止c

24、lkout输出;sja1000工作在pclican模式(29bit)。2. 能够发送数据。正确地把数据发给上位机,与上位机(计算机)进行通讯。3. 能够接收到数据。山上位机提供一种或多种硬件设备的访问渠道。(定义控制信息, 数据帧格式,并解释数据帧的内容,根据相应的数据内容来控制相关的硕件,如蜂鸣器等)调试的并通过isp下载到单片机。使用stc类型单片机的isp下载软件,把你所写好 的目标程序写进stc单片机中,并调试该程序。(提示:可以参考附录中的源程序)1sp简介:isp (在系统编程)是烧写单片机的一种简便、经济的方法;只需要添加极少的硬件, 完成单片机的烧写功能;可以把你的目标程序(*

25、。hex)通过isp硬件下载到单片机屮。stc89系列单片机的isp接口是串口(03.0、p3.1)。在实验装査上的左上角就是stc 单片机的isp接口,使用的吋候需要用跳线连接起来(jp13-jp5)。附录i计算机与sjaiooo的接口木实验装置是通过并口来连接计算机和实验板上的sja1ooo的。计算机的并口标准是 25针,而在本实验装置中,实际连接到唤件电路板的只冇20针。并口的每个引脚的定义请 参考相关资料,这里就介绍了。计算机sjaiooo的接口如下。附录2电路原理图emdp“电帳ginmmz:二一一 rw=亠一一le_a_、/、歹j至一弐_=_二三三三三三三_ifkdw*皿2昨旺hk

26、hiaj ajiw mil«二-sirj幷瞬o附录3实验装置接口及跳线可调电压拟畳输入通道终端匹配电阻stc单片机is段田 lmax232 c林花a;州串口isp电源 74ls04 |> 7jj00 > 74ls04 |2oh并行接口sja1000gilog爺rinnrioriririnri rionririrn ! 11 i ljljljljljljljlj uljulj uljgnd电源.vcc 接口vcc由咼nc电师' gnd 炭口czje=2 s=)74ls164stc89c52>74ls24400 0 q 打 00d_ <3t电源开关|夏位电

27、源指示灯口口口口口a心 ) 4)厶 14、疋 1i鳩窗窗镐nnanabpdsja1000-、i 1宜流电机驱动接口at89s单片机isp扶口步逬电机驱动接口znazo szo0074ls273"tf * 4麗电源输岀 gnd vcccanhcanl宜流电机驱动接口继电器轅口直流电机直流电机电源 涉进电机菽口 ,步逬电机驱动裁口 涉进电机电源canh canl附录4 一个简单的can通信程序iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiih1 丄 丄丄 丄el*丄 2 丄

28、丄上 卜a采用 stc89c51+sja1000+pca82c250sja1oo0外部品体为16m扩展帧格式当 sja1ooo 正常工作时:reg_mode = 0x08上上 上上 卜 上上 上 卜丄 上 ttwvtw#包括xbyte函数等的声明 包括_nop_()函数等的声明#inckidc<rcg52.h> 单片机的寄存器说明文件#include<absacc.h>/» 明文件,#includevintins.h> 声明文件,/74ls273的选通地址,iii 74ls273来驱动8位发管二极管#include<stdio.h>#defi

29、ne led xbyte0xbf001led-*定义 sja1o00 各个寄存器fl勺t也址#define sja_reg_baseadd oxfeoo#define reg_mode xbytesja_reg_baseadd + 0x00#define reg_cmd xbytesja_reg_baseadd + 0x01#dcfinc reg_sr xbytesja_reg_bascadd + 0x02#define reg_ir xbytesja_reg_baseadd + 0x03#define regr_able xbyteisja_reg_baseadd + 0x041#defin

30、e reg_btr() xbytesja_reg_baseadd + 0x061 / #dcfinc reg_btr1 xbytesja_reg_bascadd + 0x07 #define reg_ocr xbytesja_reg_baseadd + 0x08 #define reg.test xbytesja_reg_baseadd + 0x09j #define reg.alc xbytesja_reg_baseadd + oxobj / #define reg_ecc xbytesja_reg_baseadd + 0x0c #dcfinc reg.emlr xbytesja_reg_b

31、ascadd + oxod #define reg_rxerr xbytesja_reg_baseadd + oxoe #define reg.txerr xbytesja_reg_baseadd + oxofj #define reg_acr0 xbytesja_reg_baseadd + 0x10 #define reg_acr1 xb ytesja_reg_baseadd + 0x11 #dcfinc reg_acr2 xbytesja_reg_bascadd + 0x12 #define reg_acr3 xbytesja_reg_baseadd + 0x13 #define reg.

32、amr0 xbytesja_reg_baseadd + 0xl4j #define reg.amr1 xbytesja_reg_baseadd + 0x15 #define reg_amr2 xbytesja_reg_baseadd + 0x16 #dcfinc reg_amr3 xbytesja_reg_bascadd + 0x17 #define reg_rbsa xbytesja_reg_baseadd + oxle #define reg.cdr xbytesja_reg_baseadd + oxlfj/ i丄丄丄丄丄卜丄丄丄丄匕卜a f/*全局寄存器及变最声明区*/unsigned

33、char s_data13;unsigned char r_data13;unsigned char ij,k;unsigned char can_rec_flag;/can 数据接收标志位函数声明区*/void delay(unsigned char x); void receive();/void mcunit(void);void sjanit(void);void send();以下为主程序avl>1# vl>/rj* <7* rp *7 rj% rp rj%rjw rj%<7* rp rj% rprjw rj% rj% ry* rprprp rj%rj% ry

34、* rp rp rp rp rp fmain()sp=0x60;mcunit(); sjajnitq;while(l)receive();if(can_rec_flag= 1)can_rec_flag=(); switch(r_data5) case 0x06:/can查询方式进行数据接收判断是否接收成功led=r_data7;s_data0=0x8 8;/cons_datal=0x33;/id3s_data2=0x22;/id2s_data =0x11;/id1s_data4=0xl 8;/idos_data5=0x06;scnd();/ledbreak;/switch/if /whilc

35、/main void mcunit(void)tcon=oxo; 外部屮断0,低电平出发方式ex()=1;ea = 0;允许外部屮断()关闭中断/* sja1000初始化*/*入口:无*/*出口:无*/*功能:初始化,单滤波,扩展帧格式。*/*参数:id3 id2 1d1 id0amr3 amr2 amr 1 amro转换器ii id:01、 22、33、40amr:ff、ff、ff、ffvoid sja_init(void)unsigned char i;for(i = 0;i < 125;i+);for(i = 0;i < 125;i+);for(i = 0;i < 12

36、5;i+);while(reg_mode& 0x01)!= 0x01) reg_mode=oxo 1;/在复位模式屮reg_ir_able = 0x00;/interrupt disablereg_btr0 = 0x45;reg.btr 1 =0x2b;/40k at i6mreg_ocr = 0xla; /normal mode,推挽输出reg.cdr = 0xc8; /pciican,旁路缓冲器,clock off,f/2reg.rbsa = 0x00; /接收缓存起始地址reg_acr0 = led; /0x40; /id3reg.acr 1 = 0xa8; /1d2reg_acr2 = oxa & id1reg.acr3 = 0xa8; /idoreg_amr0 = 0x00;reg_amr1 = oxff;reg.amr2 = oxff;reg_amr3 = o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论