AURIX™ Forum Discussions
Hi,
What is the ripple voltage threshold at the core supply for the Aurix uC TC387
Thanks
HI,expert:
In the chip motor controller based on TC334, I want to achieve PWM on and off, how should I write the function to achieve this function? When the shutdown fault occurs, I turn off the PWM to achieve protection, and then turn on the PWM again after the fault recovery, so I need to be familiar with the PWM on and off function function, I hope experts can guide you, thank you!
Show LessHi team,
We need few safety document and pin FMEA also with FIT values for the below component
SAK-TC377TP-96F300S AA |
TLF35584QKVS1 |
BTS70081EPZXUMA1 |
BTS3011TEATMA1 |
So requesting for the NDA
Regards
Shrinitha
Hi all,
I have a question regarding ADC, we need to measure multiple ADC channels at the same time as much as possible, but we only have limited ADC kernels, would it be possible for one ADC kernel to sample for all channels first and then convert result at a later time all together ?
Thanks
Show LessHi,
I want to receive data to MCU using can0 node0 on TC39X which filters a range of message ids and on fifo0. Here is my code below. Can you tell where I am going wrong and how to read the FIFO data? I don't see neither interrupt not polling function reading can messages.
(I am using KIT_A2G_TC397_5V_TFT)
#include "MCMCAN.h"
#define TX_PIN IfxCan_TXD00_P20_8_OUT
#define RX_PIN IfxCan_RXD00B_P20_7_IN
#define CAN_STB 1
#define NODE0_RAM_OFFSET 0x0
/*********************************************************************************************************************/
/*-------------------------------------------------Global variables--------------------------------------------------*/
/*********************************************************************************************************************/
McmcanType g_mcmcan; /* Global MCMCAN configuration and control structure */
/*********************************************************************************************************************/
/*---------------------------------------------Function Implementations----------------------------------------------*/
/*********************************************************************************************************************/
IFX_INTERRUPT(canIsrRxHandler, 0, ISR_PRIORITY_CAN_RX);
void canIsrRxHandler(void)
{
printf("reached step1\n");
IfxCan_Node_clearInterruptFlag(g_mcmcan.canDstNode.node, IfxCan_Interrupt_rxFifo0NewMessage);
g_mcmcan.rxMsg.readFromRxFifo0 = TRUE;
IfxCan_Can_readMessage(&g_mcmcan.canDstNode, &g_mcmcan.rxMsg, &g_mcmcan.rxData[0]);
printf("rxMsg.msgid:\n",g_mcmcan.rxMsg.messageId);
printf("rxMsg.data:\n",g_mcmcan.rxData[0]);
}
/* Function to initialize MCMCAN module and nodes related for this application use case */
void initMcmcan(void)
{
/* ==========================================================================================
* CAN module configuration and initialization:
* ==========================================================================================
* - load default CAN module configuration into configuration structure
* - initialize CAN module with the default configuration
* ==========================================================================================
*/
boolean iState = IfxCpu_disableInterrupts();
IfxCan_Can_initModuleConfig(&g_mcmcan.canConfig, &MODULE_CAN0);
IfxCan_Can_initModule(&g_mcmcan.canModule, &g_mcmcan.canConfig);
IfxCan_Can_initNodeConfig(&g_mcmcan.canNodeConfig, &g_mcmcan.canModule);
g_mcmcan.canNodeConfig.nodeId = IfxCan_NodeId_0;
g_mcmcan.canNodeConfig.frame.type = IfxCan_FrameType_receive;
g_mcmcan.canNodeConfig.messageRAM.standardFilterListStartAddress = 0x100 + NODE0_RAM_OFFSET;
//g_mcmcan.canNodeConfig.messageRAM.rxBuffersStartAddress = 0x200 + NODE0_RAM_OFFSET;
g_mcmcan.canNodeConfig.messageRAM.rxFifo0StartAddress = 0x200 + NODE0_RAM_OFFSET;
g_mcmcan.canNodeConfig.messageRAM.baseAddress = (uint32)&MODULE_CAN0;
//g_mcmcan.canNodeConfig.interruptConfig.messageStoredToDedicatedRxBufferEnabled = TRUE;
g_mcmcan.canNodeConfig.interruptConfig.rxFifo0NewMessageEnabled = TRUE;
g_mcmcan.canNodeConfig.interruptConfig.traco.priority = ISR_PRIORITY_CAN_RX;
g_mcmcan.canNodeConfig.interruptConfig.traco.interruptLine = IfxCan_InterruptLine_1;
g_mcmcan.canNodeConfig.interruptConfig.traco.typeOfService = IfxSrc_Tos_cpu0;
g_mcmcan.canNodeConfig.rxConfig.rxFifo0Size=60;
g_mcmcan.canNodeConfig.rxConfig.rxFifo0OperatingMode=IfxCan_RxFifoMode_overwrite ;
g_mcmcan.canNodeConfig.rxConfig.rxMode=IfxCan_RxMode_fifo0;
IfxCan_Can_Pins pins;
pins.rxPin = &RX_PIN;
pins.rxPinMode = IfxPort_InputMode_pullUp;
pins.txPin = &TX_PIN;
pins.txPinMode = IfxPort_OutputMode_pushPull;
pins.padDriver = IfxPort_PadDriver_cmosAutomotiveSpeed2;
g_mcmcan.canNodeConfig.pins = &pins;
IfxCan_Can_initNode(&g_mcmcan.canDstNode, &g_mcmcan.canNodeConfig);
g_mcmcan.canFilter.number = 0;
//g_mcmcan.canFilter.elementConfiguration = IfxCan_FilterElementConfiguration_storeInRxBuffer;
g_mcmcan.canFilter.elementConfiguration = IfxCan_FilterElementConfiguration_storeInRxFifo0;
g_mcmcan.canFilter.type=IfxCan_FilterType_range;
g_mcmcan.canFilter.id1 = 0x100;
g_mcmcan.canFilter.id2 = 0x116;
//g_mcmcan.canFilter.rxBufferOffset = IfxCan_RxBufferId_0;
IfxCan_Can_setStandardFilter(&g_mcmcan.canDstNode, &g_mcmcan.canFilter);
IfxCpu_restoreInterrupts(iState);
}
//polling method
void readCanMessage(void)
{
g_mcmcan.rxMsg.readFromRxFifo0 = TRUE;
IfxCan_Can_readMessage(&g_mcmcan.canDstNode, &g_mcmcan.rxMsg, &g_mcmcan.rxData[0]);
printf("rxMsg.msgid:\n",g_mcmcan.rxMsg.messageId);
printf("rxMsg.data:\n",g_mcmcan.rxData[0]);
}
Thank you,
Show LessHi all,
I'm handling CAN error frame irqs to give information about problems on the bus. It mainly means to handle PSR.LEC values and some other flags/error counter.
Everything works as expected. My customer asked me to add as many information possible when an error occurs.
As an example he shared me what a vector (I know that aurix is not a bus analyzer) gives or the kind of errors have been standardized in socketcan linux implementation.
ErrorFrame Flags = 0xfffe CodeExt = 0x31db Code = 0xc7 ID = 0x98ff2100 DLC = 8 Position = 119 Length = 133015 Data = 0xe0 0x13 0xff 0x30 0x3 0 0 0xc3
Basically along with the error the analyzer is able to give total/partial information of the message it has read (or was trying to send) from the bus.
I couldn't find a way to obtain this information from Aurix registers, but it indeed "know" that data. In simple case (such as node in listen only, noone gives ack, or crc error) "somewhere" in Aurix there is the complete message but it seems to be discarded in case of error (as expected).
Is there a way to "get" current message tx/rx even if it is not ok?
Thank you
Fabrizio
I would like to apply for download access to AURIX Development Studio (ADS) Limited for evaluation and study for non-commercial purposes. What should I do?
Show LessHi all,
I have some questions regarding the ADC trigger.
I know we can use the same gtm-adc-trigger to trigger multiple ADC group conversion from a single atom timer.
and I wonder if the following configuration makes sense.
1, one atom timer on two separate trigger for two ADC groups.
2, two atom timer on the same trigger for two ADC groups.
Thanks
Show LessI have a substrate for automotive parts, control chip with SAK-TC333LP-32F200F AA, manual DEBUG with NETIMPRESS avant, now ready for mass production, there is no suitable burner recommended, can write C# program control, can quickly burn a large number of chips.
smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/AURIX-Family-TC33xLP%E7%83%A7%E5%BD%95%E5%99%A8%E6%8E%A8%E8%8D%90/td-p/713596
Show Less