这个示例向您展示了如何使用CAN FD通道来发送和接收CAN FD消息。它使用在环回配置中连接的MathWorks虚拟CAN FD通道。
用canfdchannellist.
查看所有支持CAN FD的可用设备通道。金宝app
canfdchannellist.
ans =.2×6表供应商设备通道DeviceModel ProtocolMode SerialNumber ___________ ___________ _______ ___________ _____________ ____________ " MathWorks”“虚拟1“1“虚拟”“可以,可以FD”“0”“MathWorks”“虚拟1“2“虚拟”“可以,可以FD”“0”
用canfdchannel.
使用指定的设备详细信息以创建CAN FD通道以传输和接收消息。
TXCH = CANFDCHANNEL(“MathWorks”,“虚拟1”, 1)
DeviceVendor txCh =通道属性:设备信息:“MathWorks”设备:“虚拟1”DeviceChannelIndex: 1 DeviceSerialNumber: 0 ProtocolMode:跑步可以FD的状态信息:0 MessagesAvailable: 0 MessagesReceived: 0 MessagesTransmitted: 0 InitializationAccess: 1 InitialTimestamp: [0 x0 datetime] FilterHistory:'Standard ID Filter: Allow All | Extended ID Filter: Allow All' Bit Timing Information BusStatus: 'N/A' SilentMode: 0 TransceiverName: 'N/A' TransceiverState: 'N/A' ReceiveErrorCount: 0 TransmitErrorCount: 0 ArbitrationBusSpeed: [] DataBusSpeed: [] Other Information Database: [] UserData: []
rxch = canfdchannel(“MathWorks”,“虚拟1”2);
FD频道可以在网上进行之前设置总线速度。使用仲裁和数据相速度进行配置configbusspeed
.
configBusSpeed (txCh, 500000, 1000000);configBusSpeed (rxCh, 500000, 1000000);
用烛台
打开包含CAN FD消息和信号定义的数据库文件。
db = canDatabase (“canfdexample.dbc”)
DB =具有属性的数据库:名称:'canfdexample'路径:'/tmp/bdoc21b_1757077_201157/tpc1faaaadf/vnt-ex36915890/canfdexample.dbc'节点:{nodeinfo:[0x0 struct]消息:{'canfdmessage'} messageInfo:[1x1struct]属性:{2x1 cell}属性:[2x1 struct] userdata:[]
将数据库直接连接到接收通道。从DBC-Files的定义自动应用以解码传入的消息和信号。
rxch.database = db;
使用开始
命令,使通道在线。
开始(TXCH);开始(RXCH);
使用CAN FD邮件使用canfdmessage.
函数。
msg1 = canfdmessage(500,false,12)
msg1 =消息与属性:信息识别ProtocolMode:可以FD的ID: 500扩展:0的名字:“时间戳数据细节:0数据:[0 0 0 0 0 0 0 0 0 0 0 0]的信号:[]长度:12 DLC: 9协议旗帜br: 0 ESI: 0错误:0其他信息数据库:[]用户数据:[]
msg2 = canfdmessage(1000,false,24);msg3 = canfdmessage(1500,false,64);
要启用CAN FD的比特率切换能力,请设置BRS
消息的属性。
msg1。BRS= true; msg2.BRS = true; msg3.BRS = true;
CAN FD消息也可以使用数据库创建。数据库定义消息是CAN还是CAN FD以及BRS状态。
msg4 = canfdmessage(db,“CANFDMessage”)
msg4 =消息与属性:信息识别ProtocolMode:可以FD的ID: 1扩展:0的名字:“CANFDMessage”数据细节时间戳:0数据:[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0…[] Length: 48 DLC: 14 Protocol Flags BRS: 1 ESI: 0 Error: 0 Other Information Database: [1x1 can.]数据库用户数据:[]
用传输
从发送通道发送创建的消息。
发送(txCh, [msg1 msg2 msg3 msg4])
使用“接收信道”接收消息收到
函数。CAN FD通道的默认返回类型是包含特定于所接收的CAN FD消息的信息的时间表。
RXMSG =接收(RXCH,INF)
rxmsg =.4×12时间表时间ID扩展名ProtocolMode数据远程BRS ESI DLC信号长度错误 ___________ ____ ________ ________________ ____________ __________________________________________________________________________ ______ ___ ____________ _____ ______ _____ _____ 0.10717秒500假{0 x0 char}{'可以FD} {[0 0 0 0 0 0 0 0 0 0 0 0]} {0 x0 12 9struct}假假真假0.10718秒1000假{0 x0 char}{'可以FD} {[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]} 24 12 {0 x0 struct}假假真假0.10718秒1500假{0 x0 char}{'可以FD '}{[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0…]} 64 15 {0 x0 struct}假假真假0.10718秒1假{‘CANFDMessage}{'可以FD '}{[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0…} 48 14 {1x1 struct}假的假的真的假的
使用停止
命令将频道脱机设置。
停止(TXCH);停止(RXCH);
通过从工作空间中清除它的变量来关闭对dbc文件的访问。
清除db