AURIX™ Forum Discussions
Dear Aurix Users,
I have some questions about Pflash ECC mechanism is Aurix TC23x device.
First question is that in what situation will cause the Pflash ECC error. Dose the Pflash is effected by Electromagnetic Disturbance?
The second question is about the ECC correction mechanism
The user manual says that the ECC will be automatically evaluated when reading data.
Dose it mean ECC will be automatically evaluated when the data is read from Pflash to DMI(Data ram)?
I think the ECC may not correct the error in program flash, so there is still exist bit flip error in Pflash, but the ECC mechanism can ensure us to obtain the corrected answer when it is read from flash to RAM.
Thanks,
Show Less
HI,
Most of the times trap 4 is being generated after CAN0_IR is being read in CanInterruptTx.
The processor is TC375. Please let me know what causes this.
Show LessHi All,
I am trying to configure Differential DSADC (using two input pins, positive and negative ) on TC38A Controller using Infineon low level drivers.
Could some one help me on configuring the DSADC or give me a link for the differential DSADC driver for TC38A controller.
Thanks
Show LessI would like to use the CIF module of TC377TX, but this seems a bit difficult, is there a sample program?
Hi guys,
I'm using TC397 to control an external DAC via SPI. I don't need the MISO signal, because the DAC is not sending anything.
/* Select the port pins for communication */
const IfxQspi_SpiMaster_Pins qspi0MasterPins = {
&IfxQspi0_SCLK_P22_8_OUT, IfxPort_OutputMode_pushPull, // SCLK Pin
&IfxQspi0_MTSR_P22_10_OUT, IfxPort_OutputMode_pushPull,// MOSI Pin
NULL_PTR, IfxPort_OutputMode_none, //MISO pin not defined. Is this correct?
IfxPort_PadDriver_cmosAutomotiveSpeed3 // Pad driver mode
};
spiMasterConfig.pins = &qspi0MasterPins; // Assign the Master's port pins
Is this "NULL_PTR, IfxPort_OutputMode_none" the correct way to do this?
Thank you!
Show LessLet's be honest: The I2C Interface of the TC3xy-family is an overcomplicated mess. Most semiconductor manufacturers would implement a simple shift register and then add FIFOs, burst requests and DMA but Infineon did it the other way round and then nailed the that overcomplicated byte-, half-word- or word-aligned FIFO cludge onto something that could be mistaken for an I2C bus logic.
The manual is basically useless, excessively describes state changes, i2c assymmetric timing alignment but fails to describe the registers sufficiently, is mostly obscure, uses multiple terms for (basically) the same thing without explaining them properly (bytes, characters, packets, bursts - so what DOES an i2c interface transmit then?) but fails to explain one, ONE single simple use case such as "receive 2 bytes from an i2c slave".
The sample code Infineon publishes on GitHub is exactly that: A good example of what code should _not_ look like in the year 2021 when it claims to have been written and i'm not even sure whether it actually works out of Infineon's sample code scope.
I basically got it to work and manage to transmit a given number of bytes to an i2c slave (a real-time clock), but fail to receive a specified number of bytes. It always reads the amount of bytes that fit into the FIFO. The "BREQ" interrupt flag cannot be reset, the "RX"-interrupt flag is never set despite the fact that it is apparently receiving data from the slave and storing it into the FIFO. The hardware doesn't care what i write into the MRPS register and RPS is stuck at "8". Since my code apparently cannot synchronize to what's going on on the i2c bus, i fail to set "SETEND" at the correct occassion (and the Infineon sample code doesn't set it where the manual specifies it to be set either). I can also not debug properly because the I2C hardware refuses to be controlled and when using SPEN, it goes into "disabled" state while debugging (DISS is "set" then) rendering my debugger's interface completely useless.
I am thinking about reverting to a bit-banging driver i wrote for a C166 derivative almost 20 years ago. But before i do, please help me and explain to me:
How can i manage to receive a given number of bytes (like "1")?
What do i need to do to reset the BREQ interrupt flag?
What is MRPS actually for?
What exactly _IS_ a burst request and how do i service it in software properly?
My software is simply meant to read out time/date during initialisation, long before any sort of interrupt/DMA configuration is set up. Because it only reads a couple of bytes, the runtime is not really an issue, but i simply cannot get it to work.
Many thanks in advance for any support and many greetings,
Oliver
Show Less
I am using the TC399 evaluation board "KIT_A2G_TC399_5V_TRB".
If you verify the operation of the S/W with the Debugger and try to download it again with the Debugger, it will fail.
The RST LED on the evaluation board is lit.
Is it possible to reset the board to initial state?
Hello Community,
I've been trying for a while to do CAN communication with a cancase using Canalyzer.
I tested the loopback with an example from infineon and it works well, then i configured the tx and rx pins with this way
#define CAN01_TXD_PIN IfxCan_TXD01_P15_2_OUT
#define CAN01_RXD_PIN IfxCan_RXD01A_P15_3_IN
const IfxCan_Can_Pins can01Pins = {
.txPin = &CAN01_TXD_PIN,
.txPinMode = IfxPort_OutputMode_pushPull,
.rxPin = &CAN01_RXD_PIN,
.rxPinMode = IfxPort_InputMode_pullUp,
.padDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1
};
I only see errors: screnn attached
for information, I changed the configuration for the measurement of time quanta because it seems weird the default config:
here is my config:
.baudrate=500000,
.samplePoint = 8000,
.syncJumpWidth = 1,
.prescaler=8,
.timeSegment1 = 15,
.timeSegment2 = 4
the clock frequency of my MCMCAN cell = 80 Mhz measured in debug mode, and I have correctly configured the baudrate at 500kbits/s on the Canalyzer side could you help me please because i'm stuck on this part and i can't find any information
My first question: could you explain to me the default configuration that exists in all the examples of the MCMCAN: .baudrate=500000,
.samplePoint = 8000,
.syncJumpWidth = 3,
.prescaler=0,
.timeSegment1 = 3,
.timeSegment2 = 10
How they will generate a baudrate of 500kb/s with this configuration and also I put the project in zip if you have any ideas
thanks a lot for your help
Show LessHello,
Is it Possible to control Traction Inverter And Compressor Motor with Single Controller with ASIL D Level(Both PMSM motors)?
Share any related documents for reference.
Show Less