Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
6 years, 7 months ago.
Big problem with Can Analyzer Microchip and Ublox-C027
Hi! I'm trying in these days to test the can bus of my board, Ublox C027 with lisa u200, using the Microchip Apgdt002 Can Bus Analyzer. The problem is that, using the preconstruncted functions in the mbed library, they don't see each other. The code i used is the following: /media/uploads/Axel9888/main.cpp
Therefore, when i transmit with the Can Analyzer, i have errors and the board doesn't red the massages. The cables for Can_H and Can_L are connected correctly.
1 Answer
6 years, 7 months ago.
Hello Alessio,
Since the used code lacks any endless while loop in the main()
function, after printing a "main()" message to the serial port and attaching the send
function to the ticker it is terminated. To keep it running and show info about the received CAN messages try to modify it as follows:
#include "mbed.h" Ticker ticker; CAN can1(P0_4, P0_5, 250000); char counter = 0; void send() { printf("send()\r\n"); if(can1.write(CANMessage(5, &counter, 1))) { printf("wloop()\r\n"); counter++; printf("Message sent: %d\r\n", counter); } } int main() { printf("main()\r\n"); ticker.attach(&send, 1); CANMessage msg; while(1) { if(can1.read(msg)) { printf("Message received:\r\n"); printf(" ID = 0x%.3x\r\n", msg.id); printf(" Type = %d\r\n", msg.type); printf(" Format = %d\r\n", msg.format); printf(" Length = %d\r\n", msg.len); printf(" Data ="); for(int i = 0; i < msg.len; i++) printf(" 0x%.2X", msg.data[i]); printf("\r\n"); printf("-------------------------------------\r\n"); } } }
Also make sure that the CAN Analyzer is set to the same CAN bus speed as your CAN node above (250000Hz).