CAN bus messages only sent once after reset

Hi,

I am trying to setup the CAN part of the Daikin-Rotex project.

It does not communicate with my heatpump. When analyzing with a Digital Oscilloscope I came to realize that the ESP32-S3 only sends on the CAN Bus exactly once after startup. I am using a cheap VP230 based transceiver.

I can reproduce this behavior without the external repository with the simple esphome script below. At the time of testing there is no other controller connected to the CAN Bus.

The message is is sent once when pressing the button there is an error on the console

[W][canbus:053]: send to standard id=0x100 failed with error 2!

This can be seen on the oscilloscope. But no message will be sent after that.

Is this expected behavior when there is no ACK for a CAN Bus message?

esphome:
  name: eh32-daikin-hpsu
  friendly_name: eh32_daikin_hpsu
  
esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino


logger:
  #level: INFO
  level: DEBUG 
  
api:
  encryption:
    key: !secret api_encryption_key

ota:
  platform: esphome
  password: !secret ota_password

web_server:
  version: 3

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  min_auth_mode: WPA2
  power_save_mode: none

  ap:
    ssid: DaikinRotex Fallback Hotspot
    password: !secret ap_password

captive_portal:

time:
  - platform: homeassistant

debug:
  update_interval: 5s


  - platform: template
    name: "Send CAN 0x100 Message"
    on_press:
      - canbus.send:
          can_id: 0x100
          data: [0x13]

  - platform: template
    name: "Send CAN 0x200 Message"
    on_press:
      - canbus.send:
          can_id: 0x200
          data: [0x01, 0x02, 0x03]
          

canbus:
  - platform: esp32_can
    id: can_bus
    #can_id: 0x680
    can_id: 0x780
    tx_pin: GPIO5
    rx_pin: GPIO6
    bit_rate: 20kbps

    on_frame:
    - can_id: 0x500
      use_extended_id: false
      then:
      - lambda: |-
          std::string b(x.begin(), x.end());
          ESP_LOGD("can id 500", "%s", &b[0] );