问题标签 [can-bus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2351 浏览

embedded - LPC 1768 CAN 总线关闭错误

我正在使用 NXP 的LPC1768 ARM Cortex M3 微控制器(数据表用户手册)。我想在用户手册“16.5.8 CAN 控制器自测”部分中描述的自测模式下测试 CAN 总线外围设备,但它不起作用。

我尝试了 NXP 知识库中描述的这些 NXP 示例,并使用了 NXP 示例代码(can_self_test 代码)。所有引脚配置运行正常,所有 CAN 总线配置和 CAN 总线消息帧也运行正常(一一控制)。但是在这一步之后的 CAN1_Send 函数内部:

错误标志被设置。尽管如此,CAN1_Send 返回 SUCCESS。

事实上,这个错误状态意味着“总线关闭错误”。“总线关闭错误”表示存在帧错误和 CAN 控制器错误。我测试数据帧和 CAN 控制器。有用。

我使用 RS-232 电缆连接 CAN1 和 CAN2。对于自测,我使用 CAN1。

0 投票
0 回答
933 浏览

c++ - 使用 CAN 适配器接收消息

我正在为 Visual C++ Express 使用 CAN 适配器 API。您可以在他们的网站上找到有关 API 的更多信息。单击 USB-CANmodul2 硬件手册以获取我正在使用的正确 PDF 文件。这对于使用 CAN 且需要良好 API 的任何程序都很有用。

我的代码

附上一些图片来帮助描述我在做什么。我在一个编译器上运行 CAN 引导加载程序,我的解析程序在 Visual Express 上。解析程序应该从文本文件中读取并将解析的信息发送到 CAN 引导加载程序,以便它可以将其编程到其内存中。我可以很好地发送消息。问题是,当 CAN 引导加载程序收到消息时,它应该回复其他程序发送的所有内容都是正确的,但我无法弄清楚如何使用 API 在解析程序中接收消息。我基本上已经完成了他们的 PDF 文件告诉我的所有事情。

我究竟做错了什么?

调试模式下的程序图片:解析程序发送的信息,引导加载程序将其放入缓冲区。引导加载程序即将调用函数以发回一条消息说没有错误。解析程序永远不会通过轮询循环,因此它永远不会收到消息。我知道引导加载程序发送功能有效,因为我已经使用 API 进来的相同 CAN 程序对它们进行了测试。希望这些信息足以让你们了解我在做什么。

这些是我遇到问题的行:

0 投票
1 回答
961 浏览

c# - 从线程填充 DataGridView

我正在 Microsoft Visual C# 2010 Express 中为 USB2-F-7x02 CANBus 适配器编写代码,该适配器 通过 USB 从 TEKTRONIX 020-2924-XX DPO DEMO 2 板传输消息。

下面名为 CANSnifferForm.cs 的代码使用与 CANBus API 交互的 GUI。Run_Click 将在用户单击“运行”后打开适配器(canplus_open),然后适配器开始侦听(canplus_Listen)。回调线程 (setReceiveCallBackThread) 然后运行调用调用回调的 setReceiveCallBack。msg 对象包含消息。然后我的问题在于从消息中获取此信息并将其添加到 DataGridView (dataGridView1)。

我考虑了很多可能性。

最明显的是通过编写“this.dataGridView1.Rows.Add(msg.id, msg.len, msg.timestamp);”向 dataGridView 添加行。在回调中。但是,回调实际上是静态的,但 dataGridView1 不是。不幸的是,我不能删除 static 关键字,因为它会导致调用函数出现语法错误。此外,我不能将 dataGridView1 声明为静态,因为这会导致设计表单文件中的初始化出现语法错误。

第二种选择是打开一个文件并写入它。但是,当我声明并使用 StreamWriter 对象时,会导致与静态声明回调有关的错误。因此,我决定输出到控制台并使用跟踪将其重定向到文件(因为 Console.WriteLine 不是静态的)。我在这里找到了关于跟踪的讨论:

追踪

但是,程序必须在线程启动后立即解析该文件并将其输出到 dataGridView。这意味着当线程写入文件时,StreamReader 对象将同时读取文件,这可能导致数据复杂化。这导致程序在我运行它时没有响应。

所以后来我终于考虑声明一个静态数组并在回调中填充它。初始化数组时出现问题。但是,为了使用循环解析它并将其放入 dataGridView,我必须知道数组的大小。当我使用循环解析它时,大小会发生变化。

我开始对此失去耐心。所以我提出我的问题是堆栈溢出。

以下三段代码应包含分析问题所需的所有内容。EASYSYNC.msg 在 EASYSYNC.cs 中声明。我正在做的主要编码是在 CANSnifferForm.cs 中。

0 投票
1 回答
13918 浏览

c - STM32F4Discovery:CAN过滤器配置

我正在使用STM32F4Discovery套件构建一个简单的CAN接口。我设法对其进行了配置,以便可以传输 CAN 消息,但是,我一直无法接收它们。据我所知,要接收 CAN 消息,它必须通过接受过滤器。我想将过滤器设置为接受从 ID 0x700 到 0x7FF 的所有(标准,2.0A)消息。我该怎么做呢?

我已阅读参考手册,但我不知道如何实际配置过滤。

0 投票
3 回答
12940 浏览

arm - STM32F4Discovery:接收 CAN 报文

我不知道如何在STM32F4Discovery上接收 CAN 消息。我在 Silent_Loopback 模式下使用它,这意味着所有发送的消息都应该到达 CAN 控制器本身。发送消息时,我得到 Transmit_OK 状态,但是 FIFO 邮箱中没有任何内容。我跳过了 CAN 过滤器配置,以便接收所有消息而不是过滤掉任何消息。我究竟做错了什么?

0 投票
1 回答
1543 浏览

discovery - STM32F4如何从Can1获取第一条消息并将其发送到Can2,Can1和Can2具有不同的速度

我有一个开发套件 STM32f4 发现套件,它有双 Canbus 接口模块。如何从 Can1 获取第一条消息并将其发送到 Can2 , Can1 和 Can2 具有不同的速度

0 投票
1 回答
940 浏览

protocols - CAN 通讯问题

我开始走这条路,因为我正在审查 uCLinux 中的CAN驱动程序。总的来说,我是 CAN 新手,所以我对此进行了一些研究,但偶然发现了一个我还没有找到答案的问题。

如果 CAN 是串行接口,而CANopen没有“总线主控器”,那么 CAN 协议如何处理总线上不可避免的数据冲突?如果没有人控制您何时可以发送,那么只要有足够的设备和时间,就必须发送碰撞。

这是一个非常基本的问题,所以我可能找到了答案,只是不明白......如果有人能提供一个很好的答案/例子。

0 投票
2 回答
1722 浏览

c - 避免在 ansi C 中损坏 SD 卡

我目前正在开发用于数据记录的嵌入式 Linux 设备。Linux 设备插入 CANbus 并将流量写入 SD 卡。

SD卡有时会损坏并以只读方式安装。需要避免这种行为。

文件系统为 FAT(SD 卡应保持可被 Windows 系统读取)。

嵌入式设备随时可能断电,因此我需要一种安全的方式从我的 C 程序写入 SD 卡。

因为我不是很喜欢 C,所以我依赖一个名为“candump”的程序,它基本上以这种格式将 canmessages 打印到标准输出:

我的 C 程序基本上打开 candump 程序,从标准输出读取,添加时间戳并删除不必要的字符:

上面的代码片段工作正常,只是我得到了 SD 卡损坏。

解决方案

我最终使用 ext3 作为具有标准挂载选项的文件系统。没有问题了

0 投票
2 回答
691 浏览

android - 在 ICS 的 CAN 接口中设置比特率时出错

我正在尝试在 android 的 i.Mx6 处理器中设置比特率。我正在使用 iproute2 实用程序为 CAN 控制器设置比特率。用于设置比特率的命令如下:

当我尝试使用以下命令在 android 中设置比特率时,我收到错误消息。

错误信息如下:

垃圾而不是参数“比特率......”。" "试试\"ip链接帮助\""

我对这个实用程序的源代码进行了分析和调试,并与Linux实用程序源进行了比较。发现错误发生在系统调用dlsym()中。

这个函数假设返回一些有效的地址。但就我而言,它返回NULL。

0 投票
1 回答
1375 浏览

java - Searching a CAN-Bus Framework for Android or Java

I'm searching for an CAN-Bus Framework that can generarte me the complete frame format, by giving it my data. I need this for an android app. The connection to the CAN-Bus and the entire collision detection and so on is already established.

BR