Jag har tidigare lyckats kommunicera med motorn via MPC2515 + TJA1050 utan problem. Här användes ett 120 Ohms motstånd som termineringsmotstånd
MPC2515 och TJA1050 transmitter drevs med 5.0V. Nu använder jag TCAN334 och den drivs med 3.3V. Med detta elschema ovan så kan jag läsa CAN-bus signaler. Inga problem. Men jag kan inte skriva CAN-bus signaler. Jag har korrekt baudrate på 250 kB/s. Då är min fråga:
Hur vanligt är det att man kan läsa CAN-bus meddelanden, men inte skriva så att andra ECU:er förstår?
För att skriva ett meddelande så använder jag denna kod
Kod: Markera allt
/* Skapa ID och DATA */
uint8_t TxData[8];
uint32_t ID = .....
/* Skriv meddelande */
CAN_TxHeaderTypeDef TxHeader;
TxHeader.DLC = 8; /* Here we are only sending 8 bytes */
TxHeader.RTR = CAN_RTR_DATA; /* Data frame */
TxHeader.IDE = CAN_ID_EXT; /* We want to send an extended ID */
TxHeader.TransmitGlobalTime = DISABLE;
TxHeader.ExtId = ID;
TxHeader.StdId = 0x00; /* Not used */
uint32_t TxMailbox;
HAL_CAN_AddTxMessage(can_handler, TxHeader, TxData, &TxMailbox);
Så vad tror ni det kan vara?
Jag kan ju förstås skicka CAN-bus meddelanden. Det är bara att andra enheten inte uppfattar meddelanden.
Tror ni det kan vara för låg spänning?
Så jag tog och mätte upp CAN+ and CAN- hos ECU:n
CAN+ CAN-
Och jag mätte upp CAN+ och CAN- hos min TCAN334:
CAN+ CAN-