arduino-CAN
arduino-CAN copied to clipboard
SN65HVD230DR ESP32 not communicating
I have two of these boards: https://nl.aliexpress.com/item/1005002844175352.html
they communicate together like normal, using this code:
// Copyright (c) Sandeep Mistry. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
#include <CAN.h>
void setup() {
pinMode(23, OUTPUT);
digitalWrite(23, LOW);
Serial.begin(115200);
while (!Serial);
Serial.println("CAN Sender");
// start the CAN bus at 500 kbps
if (!CAN.begin(500E3)) {
Serial.println("Starting CAN failed!");
while (1);
}
}
void loop() {
// send packet: id is 11 bits, packet can contain up to 8 bytes of data
Serial.print("Sending packet ... ");
CAN.beginPacket(0x12);
CAN.write('h');
CAN.write('e');
CAN.write('l');
CAN.write('l');
CAN.write('o');
Serial.print(CAN.endPacket());
Serial.println("done");
delay(1000);
// send extended packet: id is 29 bits, packet can contain up to 8 bytes of data
Serial.print("Sending extended packet ... ");
CAN.beginExtendedPacket(0xabcdef);
CAN.write('w');
CAN.write('o');
CAN.write('r');
CAN.write('l');
CAN.write('d');
int ERROR_CODE = CAN.endPacket(); // must be a int
Serial.print(ERROR_CODE); Serial.print('\t');
switch (ERROR_CODE) {
case 1: Serial.print("Buf sent!\r\n");
break;
case -1: Serial.print("Get tx buff time out!\r\n");
break;
case -2: Serial.print("Send msg timeout!\r\n");
break;
default: Serial.print("Buf send failed!\r\n");
}
Serial.println("done");
delay(1000);
}
I designed a light controller PCB, and I have 2 of these as well, they communicate without issue. here's the repository: https://oshwlab.com/pol.peerboom/patrol-lcu
Now whenever I try to make them communicate together it doesnt work. I tried desoldering the resistor on the RS pin, and soldered it to pin 23 on the development board ESP32, so when I pull it low in code, it should put them in the same mode. Any ideas? does it matter that they're slightly different models?
thanks!
I don't know if it is still a current question, bud I also had some problems with counterfeit SN65HVD230DR transceivers. Another problem I encountered was different bus frequency. Please check using of oscilloscope desired freq.