|
Post by Carrick on Nov 3, 2016 7:22:25 GMT
Hello, everyone. I'm using a TC275 of Shield Buddy. I'm a newbie of this board, so I'm doing with following user manual. internal.hitex.co.uk/pub/hitex/ShieldBuddy/4269.GettingStarted.pdfI want to use eclipse IDE, but there are " C:\Hitex\AURduinoIDE" inseted of "C:\Hitex\ShieldBuddyIDEUser\ShieldBuddyIDE\Eclipse" on user manual. anyway, I found similar one, and built it. Unfortunately, there are no C:\Hitex\ShieldBuddyIDE\Eclipse\ShieldBuddyMulticoreUser\.ude\UDEDefEclipseWorkspace.wsx.” ..I clicked other file named AurduinoMulticoreUser_iROM.wsx, I can see this screen "License Check Summary" any help or any comment would be help for me ![]() thanks Best regards
|
|
|
Post by Carrick on Nov 3, 2016 9:35:41 GMT
I solved it.
Is there anyone who use CAN Bus Shield on TC275 ??
|
|
|
Post by mjb on Nov 7, 2016 13:08:18 GMT
Hi, We have tidied up the Eclipse IDE which should avoid the problems you have seen. Please download the updated add-in at: internal.hitex.co.uk/pub/hitex/ShieldBuddy/ShieldBuddyMulticoreIDE.zip You will also need to update the free entry toolchain as this is now at v4.6.6.0. If you do not want to update the tools, you will need to edit the platform.txt compiler path setting from: #C Compiler Settings: free tool chain installation compiler.path=C:/HighTec/toolchains/tricore/v4.6.6.0-infineon-1.1/bin/ back to: #C Compiler Settings: free tool chain installation compiler.path=C:/HighTec/toolchains/tricore/v4.6.5.0-infineon-1.1/bin/
|
|
|
Post by mjb on Nov 7, 2016 13:11:10 GMT
You can use a standard Arduino CAN shield but this uses a Microchip standalone CAN controller that interfaced via the SPI. It is better to use the TC275's own CAN modules and add CAN transceivers on a prototyping shield. We are considering making a CAN shield for the ShieldBuddy.
Here is an example sketch for using the TC275's own CAN modules:
/*** Core 0 ***/
void setup() { // put your setup code for core 0 here, to run once:
SerialASC.begin(9600);
CAN0_Init(250000); CAN1_Init(250000);
/* Parameters CAN ID, Acceptance mask, data length, 11 or 29 bit ID, Message object to use */ CAN0_TxInit(0x100, 0x7FFFFFFFUL, 8, 11, 0);
CAN1_RxInit(0x100, 0x7FFFFFFFUL, 8, 11, 1);
/* Dual Test */ CAN0_TxInit(0x101, 0x7FFFFFFFUL, 8, 11, 2); CAN1_RxInit(0x101, 0x7FFFFFFFUL, 8, 11, 3);
/* Triple Test */ CAN1_TxInit(0x102, 0x7FFFFFFFUL, 8, 11, 4); CAN0_RxInit(0x102, 0x7FFFFFFFUL, 8, 11, 5);
SerialASC.print("Multican is Initialized\n\r");
}
void loop() { // put your main code for core 0 here, to run repeatedly:
IfxMultican_Message msg1; IfxMultican_Status RxStatus;
const uint32 dataLow = 0x12340000; const uint32 dataHigh = 0x9abc0000;
uint32 errors = 0;
/* Transmit Data */ {
/* Parameters CAN ID, 32 bits low data, 32 bits high data, data length */ CAN0_SendMessage(0x100, 0x12340000, 0x9abc0000, 8); // Original //CAN1_SendMessage(0x100, 0x12340000, 0x9abc0000, 8);
/* Dual test */ CAN0_SendMessage(0x101, 0x12340000, 0x9abc0000, 8); // Original
/* Triple Test */ CAN1_SendMessage(0x102, 0x12340000, 0x9abc0000, 8); // Original }
/* Receiving Data */ { /* wait until MCAN received the frame */
/* Test 1 */ /* Parameters CAN ID, address of structure to hold returned data, data length */ RxStatus = CAN1_ReceiveMessage(0x100, &msg1, 8); // Original //RxStatus = CAN0_ReceiveMessage(0x100, &msg1, 8);
if (RxStatus != IfxMultican_Status_noError) { SerialASC.print("ERROR: single IfxMultican_Can_MsgObj_read Message returned ");SerialASC.print(RxStatus,HEX); SerialASC.print("\n\r"); }
/* check the received data */ if (msg1.data[0] != dataLow) { ++errors; }
if (msg1.data[1] != dataHigh) { ++errors; }
if (errors) { SerialASC.print("ERROR: Found (errors)");SerialASC.print(errors);SerialASC.print("\n\r"); } else { SerialASC.print("OK: single test Checks passed\n\r"); }
/* Test 2 */ RxStatus = CAN1_ReceiveMessage(0x101, &msg1, 8);
if (RxStatus != IfxMultican_Status_noError) { SerialASC.print("ERROR: dual test IfxMultican_Can_MsgObj_read Message returned ");SerialASC.print(RxStatus,HEX); SerialASC.print("\n\r"); }
/* check the received data */ if (msg1.data[0] != dataLow) { ++errors; }
if (msg1.data[1] != dataHigh) { ++errors; }
if (errors) { SerialASC.print("ERROR: Found (errors)");SerialASC.print(errors);SerialASC.print("\n\r"); } else { SerialASC.print("OK: Checks dual test passed\n\r"); }
/* Test 3 */ RxStatus = CAN0_ReceiveMessage(0x102, &msg1, 8);
if (RxStatus != IfxMultican_Status_noError) { SerialASC.print("ERROR: triple test IfxMultican_Can_MsgObj_read Message returned ");SerialASC.print(RxStatus,HEX); SerialASC.print("\n\r"); }
if (msg1.data[0] != dataLow) { ++errors; }
if (msg1.data[1] != dataHigh) { ++errors; }
if (errors) { SerialASC.print("ERROR: Found (errors)");SerialASC.print(errors);SerialASC.print("\n\r"); } else { SerialASC.print("OK: Checks triple test passed\n\r"); } }
SerialASC.print("Multican Basic data transactions are finished\n\r\n\r");
}
/*** Core 1 ***/
/* CPU1 Uninitialised Data */ StartOfUninitialised_CPU1_Variables /* Put your CPU1 fast access variables that have no initial values here e.g. uint32 CPU1_var; */ EndOfUninitialised_CPU1_Variables
/* CPU1 Initialised Data */ StartOfInitialised_CPU1_Variables /* Put your CPU1 fast access variables that have an initial value here e.g. uint32 CPU1_var_init = 1; */ EndOfInitialised_CPU1_Variables
void setup1() { // put your setup code for core 1 here, to run once:
}
void loop1() { // put your main code for core 1 here, to run repeatedly:
}
/*** Core 2 ***/
/* CPU2 Uninitialised Data */ StartOfUninitialised_CPU2_Variables /* Put your CPU2 fast access variables that have no initial values here e.g. uint32 CPU2_var; */ EndOfUninitialised_CPU2_Variables
/* CPU2 Initialised Data */ StartOfInitialised_CPU2_Variables /* Put your CPU2 fast access variables that have an initial value here e.g. uint32 CPU2_var_init = 1; */ EndOfInitialised_CPU2_Variables
void setup2() { // put your setup code for core 2 here, to run once:
}
void loop2() { // put your main code for core 2 here, to run repeatedly:
}
|
|
|
Post by mjb on Nov 7, 2016 13:14:52 GMT
|
|