Hello,
I now make the demo code to send CAN message using S12G128.
The following action is observed;
in normal situation(non-loopback configuration),
TXE bit of corresponded Tx buffer is not set after CAN message sending
and the same message has continued to be sent.
We use one TWR-S12G128 board as a message sender, and no listener.
Does this action meet the spec of S12G128?
On the other hand, in loopback configuration, we can observe the setting of TXE bit,
so I think it may be required the listener on the demo environment.
Solved! Go to Solution.
Hi Ikki,
Please test the code I have attached. Please ignore the name of the project. I have not used loopback mode now but his setup possibility is still visible there.
If you want to see what is sent then connect probe to a TXCAN . It is CT1. (It is close to JP4, close to CAN connector or close to CAN_EN jumper)
GND connect to J8 pin 4 on the board.
You have to see traffic on the Tx pin if you use the code I attached.
BTW; if you use setup for loopback (in the function main.c) then send/received data and IDHIT can be check by means of PC (UART for 9600bps)
For CAN setup you can find (main.c):
// init_CAN(0,0xC3, 0x58, 1); // 125 kb/s, loop enabled/disabled=1/0, - LOOPBACK MODE
init_CAN(0,0xC3, 0x58, 0); // 125 kb/s, loop enabled/disabled=1/0, - NORMAL MODE
Best regards,
Ladislav
Hi Ikki,
Please test the code I have attached. Please ignore the name of the project. I have not used loopback mode now but his setup possibility is still visible there.
If you want to see what is sent then connect probe to a TXCAN . It is CT1. (It is close to JP4, close to CAN connector or close to CAN_EN jumper)
GND connect to J8 pin 4 on the board.
You have to see traffic on the Tx pin if you use the code I attached.
BTW; if you use setup for loopback (in the function main.c) then send/received data and IDHIT can be check by means of PC (UART for 9600bps)
For CAN setup you can find (main.c):
// init_CAN(0,0xC3, 0x58, 1); // 125 kb/s, loop enabled/disabled=1/0, - LOOPBACK MODE
init_CAN(0,0xC3, 0x58, 0); // 125 kb/s, loop enabled/disabled=1/0, - NORMAL MODE
Best regards,
Ladislav
Hi lama-san,
Thank you for the test code!
I tried to test with this code, but
the code execution has been stuck on can.c line 96 in NORMAL MODE
while(!(can->TFLG & (0x01<<tbuf_n_empty_flag))) // find empty transmit buffer from 3 buffers
,while it is not stuck in LOOPBACK MODE.
And when it has been stuck on line 96, TXE[2:0] bits are all cleared
and it means the TX buffers are not empty.
This action is similar to the action of my original test code.
After all, are CAN packets receiving required to set TXE[2:0] bits?
Best Regards,
Ikki
I can solve this question.
The cause is no dominant driving from the receiver for ACK in CAN packet.
When I prepare the receiver with proper terminal resister on CAN bus, my test code is running.
Ikki