I am trying to use the CAN bus on the S32K1SIC. I have been working with the LibUAVCAN demo and a FlexCAN demo (and other bits of sample code), but I have not been able to ever transmit or receive any data. Today I found that that pins 10 and 11 of PORTE control the STB_N pin on the TJA1463s (the transceivers). That allows me to put the transceivers into standby mode, but they have to be in normal mode to transfer data. To do that I have to also control the EN pin (enable). I don't know what pins correspond to those on the S32K146 processor on the S32K1SIC board.
已解决! 转到解答。
Hi KelvinSmith,
Do you test the libuavcanV1_demo? That example seems that for UCANS32K146(not for UCANS32K1SIC). That example clear CAN0_STB(PTE11) and CAN1_STB(PTE10) in canfd.cpp. You may need to set CAN0_STB(PTE11) and CAN1_STB(PTE10) and CAN0_EN(PTA10) to high voltage:
PORTA->PCR[10] |= PORT_PCR_MUX(1); /* MUX to GPIO */
PTA->PDDR |= 1 << 10; /* Set direction as output */
PTA->PSOR |= 1 << 10; /* Set the pin HIGH */
PORTE->PCR[11] |= PORT_PCR_MUX(1); /* MUX to GPIO */
PTE->PDDR |= 1 << 11; /* Set direction as output */
PTE->PSOR |= 1 << 11; /* Set the pin HIGH */
PORTE->PCR[10] |= PORT_PCR_MUX(1); /* Same as above */
PTE->PDDR |= 1 << 10;
PTE->PSOR |= 1 << 10;
Please make sure the voltage are high for those pins.
Best Regards,
Robin
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
I have been able to resolve this issue for can bus 1, but not canbus 0. The solution was to get both the enable and standby pins set high to the transceiver. For some reason I have not managed this for canbus 0 yet, but we are getting by on bus 1.
I am marking this as resolved, because I have verified according to the pins that the transceivers are in normal mode, and I have the documentation on them that I was looking for. Unfortunately I still cannot send or receive data, but that is really a separate issue.
I located the schematic for the S32K1SIC board and found that the CAN0 enable pin is 10 on PORTA and the CAN1 enable pin is 2 on PORTE. Unfortunately setting these pins did not solve my problem with receiving CAN data.
Hi KelvinSmith,
Do you test the libuavcanV1_demo? That example seems that for UCANS32K146(not for UCANS32K1SIC). That example clear CAN0_STB(PTE11) and CAN1_STB(PTE10) in canfd.cpp. You may need to set CAN0_STB(PTE11) and CAN1_STB(PTE10) and CAN0_EN(PTA10) to high voltage:
PORTA->PCR[10] |= PORT_PCR_MUX(1); /* MUX to GPIO */
PTA->PDDR |= 1 << 10; /* Set direction as output */
PTA->PSOR |= 1 << 10; /* Set the pin HIGH */
PORTE->PCR[11] |= PORT_PCR_MUX(1); /* MUX to GPIO */
PTE->PDDR |= 1 << 11; /* Set direction as output */
PTE->PSOR |= 1 << 11; /* Set the pin HIGH */
PORTE->PCR[10] |= PORT_PCR_MUX(1); /* Same as above */
PTE->PDDR |= 1 << 10;
PTE->PSOR |= 1 << 10;
Please make sure the voltage are high for those pins.
Best Regards,
Robin
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
Thanks, I did find that information and had tried it. Unfortunately this, nor anything else, has solved this issue. We continue to be unable to receive or transmit data over the CAN bus on the S32K1SIC board. Right now we're putting it on the back burner.