跳转到内容

MCP2515

MCP2515 通过 SPI 总线 与 ESPHome 通信;要使用它,您的 ESPHome 配置中必须至少有一个 SPI 总线,并且定义了 mosi_pinmiso_pin

下面的 接线选项 部分说明了如何连接您的 MCP2515。

# 示例配置
canbus:
- platform: mcp2515
cs_pin: GPIOXX
can_id: 4
bit_rate: 50kbps
on_frame:
- can_id: 500
then:
- lambda: |-
std::string b(x.begin(), x.end());
ESP_LOGD("canid 500", "%s", &b[0] );
- light.turn_off: light_1
- can_id: 501
then:
- light.turn_on:
id: light_1
brightness: !lambda "return (x.size() > 0) ? (float) x[0]/255 : 0;"

NOTE

MCP2515 只提供两个接收缓冲区,每个循环周期读取一次。 这意味着,如果一个循环周期(通常为 16ms,可能更长)内到达超过两个 CAN 帧,帧将被丢弃。

此限制使 MCP2515 不适用于中速到高速 CAN 总线,尤其是汽车应用。 尽可能使用 esp32_can 组件。

  • cs_pin (必需, 引脚模式):用于向 SPI 设备发出何时应监听 SPI 总线上数据的信号。每个 SPI 设备都有自己的 CS 线。有时也称为 SS

  • clock (可选, 枚举):MCP2515 设备上使用的时钟晶振频率。8MHZ12MHZ16MHZ20MHZ 之一。默认为 8MHZ

  • mode (可选, 枚举):操作模式。以下之一:

    • NORMAL:正常操作。(默认)
    • LOOPBACK:回环模式对于测试与设备的连接非常有用。
    • LISTENONLY:仅接收数据。
  • 来自 CAN 总线 的所有其他选项。

NOTE

并非所有时钟和波特率的组合都受支持。不支持的组合不会在编译时标记。如果您怀疑这是问题所在,请检查 ESPHome 设备的日志中是否有类似 Invalid frequency/bitrate combination 的消息。

最简单的方法是使用完全组装好的板子,只需在 MISO 线上添加一个电阻。这使 MOSI、SCK 和 CS 超出规格运行,但这很少成为问题。

更复杂的选择是使用电平转换器正确转换 3.3V 和 5V 逻辑电平。