MCP2515
MCP2515 通过 SPI 总线 与 ESPHome 通信;要使用它,您的 ESPHome 配置中必须至少有一个 SPI 总线,并且定义了 mosi_pin 和 miso_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 设备上使用的时钟晶振频率。
8MHZ、12MHZ、16MHZ或20MHZ之一。默认为8MHZ。 -
mode (可选, 枚举):操作模式。以下之一:
NORMAL:正常操作。(默认)LOOPBACK:回环模式对于测试与设备的连接非常有用。LISTENONLY:仅接收数据。
-
来自 CAN 总线 的所有其他选项。
NOTE
并非所有时钟和波特率的组合都受支持。不支持的组合不会在编译时标记。如果您怀疑这是问题所在,请检查 ESPHome 设备的日志中是否有类似 Invalid frequency/bitrate combination 的消息。
最简单的方法是使用完全组装好的板子,只需在 MISO 线上添加一个电阻。这使 MOSI、SCK 和 CS 超出规格运行,但这很少成为问题。
更复杂的选择是使用电平转换器正确转换 3.3V 和 5V 逻辑电平。