Quantcast
Channel: Infineon Forums
Viewing all 9892 articles
Browse latest View live

TLE7242 messaging and current repeatablity

$
0
0
We're using the TLE7242 to drive a solenoid load as part of our test system. We're sending a ramp signal: 0 to 1000 to 0 milliAmps with 50 milliAmps steps and each step timed for 100 milliSecond.

We have a current sense circuit inline with the solenoid for realtime readings. However, we're getting a variation in the sensed current readings when we repeatedly apply our ramp signal.

Is there a specific order in which messages have to be sent to the chip to get it to drive the load? Is steady-state mode (feedback) automatically on?

Thank you for your help,
Ron

EBU Interface in XMC4800 microcontroller

$
0
0
Hello.. I am using EBU unit in XMC4800. I want to interface it to a external FRAM. I want to use the configuration as 16 bit multiplexed asynchronous access. I am getting all the control signals correctly. But the problem is, in AD[15 : 0] multiplexed bus am getting only data when RD_WR/ is low. But when ADV/ is low I am getting invalid address. I have configured BUSRCONx.PORTW as 01B and BUSCONx.AGEN as 0. Is there any additional register configuration to configure it as multiplexed bus? And one more thing is I have not connected any external memory to microcontroller. I am checking this with the help of XMC4800 Relax Kit. They have provided pin headers so that it can be connected to CRO.

Motor Control with EVAL-M1-1302 and EVAL-M1-5F804

$
0
0
Hello everybody,

I bought the boards EVAL-M1-1302 and EVAL-M1-05F804 and I have to run a 12 volt brushless motor. My goal is to build multicopter.

Unfortunately, I find no suitable documentation, as I can run the motor with my boards. I only find documentation or projects for DAVE, for the boards EVAL-M1-1302_05-65D,
EVAL-M1-1302_05-84D, EVAL-M1-1302_36-45A and EVAL-M1-1302_36-84A.

Can anyone give me a hint where to find a project for DAVE or other documentation to run a brushless motor with my boards?

Thank you.

TomSpeed

Avatars

$
0
0
You can only add the provided avatars in your profile as a picture and not any custom avatar. I tried to put an image i have for my make my assignment account(which is an official account) but the pixel size never matches the required one so i have to use be mention avatar.

XMC4500 and MCP23017 or ADS7828

$
0
0
Hello,

I want to expand the xmc4500 pins using Mcp23017 and have more ADC using the ADS7828, but when I try to send commands I can not communicate with the xmc via i2c. Do you have any suggestions? I used the guide provided by Infineon.

Thanks

Partial Networking CAN transceiver

$
0
0
According to AH1309_v1_1_Application_Hints_TJA1145 page 71.
You can see information that is about TJA1145/FD Transceiver example code.
In my case, I also use same system as you (AURIX TC212 and TJA1145).
I used to be hard because of setting register up for implementing some feature .
Ever since i found precise example specified in application note, I've figured out solution through making the most of it.
So I recommend that you try to get example code and information related to what you want.

NewLib Change Standart to Nano possible in existing Project?

$
0
0
Hi Haydar,

you may try by opening the "Active Project properties"..right click on the active project and then "Properties". Then check the figure below and try changing the setting as noted in the figure.

Attachment 3610

Best regards,
Deni
?????

PWM duty cycle and frequency measurement using TIM PWM measurement mode. TricoreTC277

$
0
0
Hi Aparajith,

Did you accomplish this? Because I'm trying the same, but I couldn't find any example on this topic.

Best.

XMC-for-Arduino

Driving IGBT with unipolar gate voltage

$
0
0
Hello everyone. I am developing a 3kw solar inverter circuit. I just want to know if I can drive a single IGBT using unipolar supply (say just +15V). Current flowing through my circuit is between 15-17A and operating frequency is 20 kHz.
It's a general practice to add a negative supply(-5V to -8V) to facilitate speedy IGBT turn-off. I want to know whether it would be safe to skip this additional voltage requirement and replace it by passive methods like additional resistor(small value) arrangement for IGBT turnoff.
If there's any other method for safe igbt turnoff without involving additional voltage supply please let me know.

Best regards and thanks in advance.

TLE9844-2QX: falling edge keeps erroneously being reported on MON5

$
0
0
I'm developing an application for a TLE9844-2QX microcontroller and I'm having an issue where triggering an edge on certain MONs (1, 2, 3) also causes a falling edge on MON5, which is used to trigger the deletion of data stored in EEPROM.

I've configured my high-voltage monitor inputs like this:

Attachment 3613

I've confirmed using an oscilloscope that no edge occurs on MON5 when I trigger MON1/2/3, and yet the interrupt for it triggers:

Attachment 3614

Has anyone encountered similar strange behaviour with the MON inputs for this board or a related one?

TC224 resets every 5 seconds

$
0
0
Hello,

Based on the AP32260 and the workaround from the UDE that contained all the "SET .. ..." commands I have adapted the following code and it works. Now the board with the TC224 microcontroller is working without being reset every 5 seconds.
I added the code from the attachment in the main function of CPU0 just before the Cpu and Safety watchdog are disabled.

Quote:

/*
* !!WATCHDOG0 AND SAFETY WATCHDOG ARE DISABLED HERE!!
* Enable the watchdog in the demo if it is required and also service the watchdog periodically
* */
IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatch dogPassword());
IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafet yWatchdogPassword());
?????

Sdcc 3.8.0 rc1

$
0
0
Dear SDCC users among the XC800 programmers,

today the first Release Candidate (RC1) for SDCC 3.8.0 has been created.
As always it has been put online in our SourceForge File section.
https://sourceforge.net/projects/sdcc/files/

If you have the time, please verify it and report back with the positive
or negative results.

In previous release 3.7.0, no binaries were released. 3.8.0 has binaries
gain, though the list of binary platforms changed. For 3.8.0, binaries
are released for GNU/Linux on amd64, Windows on amd64, macOS on amd64,
Windows on x86.
However: Unlike previous binary releases, the windwos installer have not
been checked by the Release Manager (my only machine with a Windows
installed needs a new poer supply, which hasn't arrived yet).

There have been various of improvements, both features and bug fixes
since SDCC 3.7.0. The full ChangeLog is at
https://sourceforge.net/p/sdcc/code/...sdcc/ChangeLog.

The following is a list of particularly noticeable new features.

* Additional general utility function: bsearch()
* Support for rematerialization in the stm8 backend reduces register pressure and stack usage
* Merged upstream GNU binutils 2.30
* All Python code is now fully compatible with both Python 2.7 and Python 3.6, so Python 3 can be used instead of Python 2.
* Regression testing for diagnostics.
* Improved handling of local bool variables in the mcs51 backend substantially reduces code size.
* Large memory model for stm8 for 24-bit codespace allows using more than 32KB of Flash for code.
* New optimizations for calls to some standard library function (printf(), puts(), strcpy()).
* The type of true and false from stdbool.h change from int to bool.
* New C2X mode (--std-c2x, --std-sdcc2x, #pragma std_c2x) adds support for one-argument static_assert variant.
* Intermingling of declarations and statements (ISO C99).
* Support headers for AX8052 devices.
* Adopted GCC 8.2 regression tests (execute part of the GCC C torture tests).

Philipp Klaus Krause
SDCC 3.8.0 Release Manager


P.S.: Apart from the improvements in standard compliance, and the better handling of local bool, there is no "big" new feature relevant to mcs51 / xc800 programming. But there some smaller improvements in code generation and many bugfixes.

E_EEPROM without using dave apps for XMC1404

$
0
0
Hi,
I have search about this emulating an eeprom using flash memory. What I have found is using this E_EEPROM library via DAVE Apps. Do you have a sample code for this library without using DAVE apps(but rather including only the header files for the library).

Thank you

Regards,
Ilde

How to make a DMA cirular Ringbuffer

$
0
0
Hi,

You can implement a circular buffer using the linked list feature of the DMA channels 0 and 1.
See code below
Code:

#include <xmc_gpio.h>
#include <xmc_dma.h>
#include <xmc_uart.h>

// 1ms task which reads from the ring buffer and copies to the working buffer
#define TICKS_PER_SECOND 1000

#define BUFFER_SIZE 1024
static volatile uint8_t buffer[BUFFER_SIZE];
static volatile uint32_t buffer_idx = 0;

// Ring buffer using DMA
// The ring buffer is divided into two equal sized buffers
#define RING_BUFFER_SIZE 32
static volatile uint8_t ring_buffer[RING_BUFFER_SIZE];
static volatile uint8_t ring_buffer_cur = 0;

/* DMA linked list */
static __attribute__((aligned(32))) XMC_DMA_LLI_t dma_ll[2] =
{
  {
        .block_size = RING_BUFFER_SIZE / 2,
        .src_addr = (uint32_t)&(XMC_UART0_CH0->RBUF),
        .dst_addr = (uint32_t)&ring_buffer[0],
        .llp = &dma_ll[1],
        .enable_interrupt = true,
        .dst_transfer_width = XMC_DMA_CH_TRANSFER_WIDTH_8,
        .src_transfer_width = XMC_DMA_CH_TRANSFER_WIDTH_8,
        .dst_address_count_mode = XMC_DMA_CH_ADDRESS_COUNT_MODE_INCREMENT,
        .src_address_count_mode = XMC_DMA_CH_ADDRESS_COUNT_MODE_NO_CHANGE,
        .dst_burst_length = XMC_DMA_CH_BURST_LENGTH_1,
        .src_burst_length = XMC_DMA_CH_BURST_LENGTH_1,
        .transfer_flow = XMC_DMA_CH_TRANSFER_FLOW_P2M_DMA,
        .enable_dst_linked_list = true,
        .enable_src_linked_list = true,
  },
  {
        .block_size = RING_BUFFER_SIZE / 2,
        .src_addr = (uint32_t)&(XMC_UART0_CH0->RBUF),
        .dst_addr = (uint32_t)&ring_buffer[RING_BUFFER_SIZE / 2],
        .llp = &dma_ll[0],
        .enable_interrupt = true,
        .dst_transfer_width = XMC_DMA_CH_TRANSFER_WIDTH_8,
        .src_transfer_width = XMC_DMA_CH_TRANSFER_WIDTH_8,
        .dst_address_count_mode = XMC_DMA_CH_ADDRESS_COUNT_MODE_INCREMENT,
        .src_address_count_mode = XMC_DMA_CH_ADDRESS_COUNT_MODE_NO_CHANGE,
        .dst_burst_length = XMC_DMA_CH_BURST_LENGTH_1,
        .src_burst_length = XMC_DMA_CH_BURST_LENGTH_1,
        .transfer_flow = XMC_DMA_CH_TRANSFER_FLOW_P2M_DMA,
        .enable_dst_linked_list = true,
        .enable_src_linked_list = true,
  }
};

static const XMC_DMA_CH_CONFIG_t dma_ch_config =
{
  {
        .enable_interrupt = true,
        .dst_transfer_width = XMC_DMA_CH_TRANSFER_WIDTH_8,
        .src_transfer_width = XMC_DMA_CH_TRANSFER_WIDTH_8,
        .dst_address_count_mode = XMC_DMA_CH_ADDRESS_COUNT_MODE_INCREMENT,
        .src_address_count_mode = XMC_DMA_CH_ADDRESS_COUNT_MODE_NO_CHANGE,
        .dst_burst_length = XMC_DMA_CH_BURST_LENGTH_1,
        .src_burst_length = XMC_DMA_CH_BURST_LENGTH_1,
        .transfer_flow = XMC_DMA_CH_TRANSFER_FLOW_P2M_DMA,
  },
  .block_size = RING_BUFFER_SIZE / 2,
  .src_addr = (uint32_t)&(XMC_UART0_CH0->RBUF),
  .dst_addr = (uint32_t)&ring_buffer[0],
  .linked_list_pointer = &dma_ll[0],
  .transfer_type = XMC_DMA_CH_TRANSFER_TYPE_MULTI_BLOCK_SRCADR_LINKED_DSTADR_LINKED, /* Transfer type */
  .priority = XMC_DMA_CH_PRIORITY_0, /* Priority level */
  .src_handshaking = XMC_DMA_CH_SRC_HANDSHAKING_HARDWARE, /* Source handshaking */
  .src_peripheral_request = DMA0_PERIPHERAL_REQUEST_USIC0_SR0_0, /* Source peripheral trigger */
  .dst_handshaking = XMC_DMA_CH_DST_HANDSHAKING_SOFTWARE  /* Destination handshaking */
};

static const XMC_UART_CH_CONFIG_t uart_config =
{
  .baudrate = 115200,
  .data_bits = 8,
  .stop_bits = 1,
};

uint32_t XMC_DMA_CH_GetTransferredData(XMC_DMA_t *const dma, const uint8_t channel)
{
  return (dma->CH[channel].CTLH & GPDMA0_CH_CTLH_BLOCK_TS_Msk);

}

void SysTick_Handler(void)
{
  static uint32_t start = 0;

  uint32_t end = (ring_buffer_cur * (RING_BUFFER_SIZE / 2)) + XMC_DMA_CH_GetTransferredData(XMC_DMA0, 0);

  if ((start != end) && (buffer_idx < BUFFER_SIZE))
  {
    if (start < end)
    {
      memcpy((void *)&buffer[buffer_idx], (void *)&ring_buffer[start], end - start);
      buffer_idx += end - start;
    }
    else
    {
          memcpy((void *)&buffer[buffer_idx], (void *)&ring_buffer[start], RING_BUFFER_SIZE - start);
          buffer_idx += RING_BUFFER_SIZE - start;

      memcpy((void *)&buffer[buffer_idx], (void *)&ring_buffer[0], end);
      buffer_idx += end;
    }

    start = end;
  }
}

void dma_ch0_event_handler(XMC_DMA_CH_EVENT_t event)
{
  ring_buffer_cur ^= 1;
}

void GPDMA0_0_IRQHandler(void)
{
  XMC_DMA_IRQHandler(XMC_DMA0);
}

int main(void)
{
  /* Enable DMA module */
  XMC_DMA_Init(XMC_DMA0);
  XMC_DMA_CH_Init(XMC_DMA0, 0, &dma_ch_config);
  XMC_DMA_CH_EnableEvent(XMC_DMA0, 0, XMC_DMA_CH_EVENT_BLOCK_TRANSFER_COMPLETE);
  XMC_DMA_CH_SetEventHandler(XMC_DMA0, 0, dma_ch0_event_handler);
  XMC_DMA_CH_Enable(XMC_DMA0, 0);

  /* Enable DMA event handling */
  NVIC_SetPriority(GPDMA0_0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 62, 0));
  NVIC_EnableIRQ(GPDMA0_0_IRQn);

  /* System timer configuration */
  SysTick_Config(SystemCoreClock / TICKS_PER_SECOND);

  /* UART configuration */
  XMC_UART_CH_Init(XMC_UART0_CH0, &uart_config);

  XMC_GPIO_SetMode(P1_4, XMC_GPIO_MODE_INPUT_TRISTATE);
  XMC_UART_CH_SetInputSource(XMC_UART0_CH0, XMC_UART_CH_INPUT_RXD, USIC0_C0_DX0_P1_4);

  /*Configure transmit FIFO*/
  XMC_USIC_CH_TXFIFO_Configure(XMC_UART0_CH0, 0U, XMC_USIC_CH_FIFO_SIZE_32WORDS, 0U);

  /* Set service request for receive interrupt */
  XMC_USIC_CH_SetInterruptNodePointer(XMC_UART0_CH0, XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE, 0U);
  XMC_USIC_CH_SetInterruptNodePointer(XMC_UART0_CH0, XMC_USIC_CH_INTERRUPT_NODE_POINTER_ALTERNATE_RECEIVE, 0U);
  XMC_UART_CH_EnableEvent(XMC_UART0_CH0, XMC_UART_CH_EVENT_STANDARD_RECEIVE | XMC_UART_CH_EVENT_ALTERNATIVE_RECEIVE);

  XMC_UART_CH_Start(XMC_UART0_CH0);

  XMC_GPIO_SetMode(P1_5, XMC_GPIO_MODE_OUTPUT_PUSH_PULL | P1_5_AF_U0C0_DOUT0);

  /* Placeholder for user application code. The while loop below can be replaced with user application code. */
  while(1U);
}


Does XMC4800 support EBU?

PMSM FOC Positioning with Inc

$
0
0
Hello,

we want to make a Motion-Controller with XMC4800 for PMSM. I have a problem with Motor-Control.

I'm working with the PMSM_FOC-APP which was modified for using Halls/Incremental Encoder. The Speedcontrol is working fine with Sensorless (3Phase Current measurement). I know how to implement Hall/Encoder with PLL_Estimator.RotorAngleQ31 before FOC_Controller_LIB().

Now the problem:
At the moment it is not possible to change the Rotor-Direction without Stopping the PMSM_FOC_MSM. But for Positioning it is essential to change direction of the field. Negative Torque-Values result in same motor-direction.

In the Last project we used a modified ACIM_FREQ_CTRL APP and direction-change was possible.(Without Park/Clark/PLLEstimator)

Is it possible to use the libPMSM_FOC_LIB.a for Positioning of the Motor or shut we go another way?
Are there any Examples (APPS or XMClib) for postioning with FOC?

The plan was to use Rotor-Prepositionin and activate Encoder,Positioncontrol,SpeedControl get values for build-in TorqueControl (Iq).
Is this possible?


I hope you can help me. The Controller (Position, Speed, Torque), Encoder, EtherCAT, USB, EtherNet, UART, SPI are working good, but only with one Motor-direction.

Thank you.

Alternative to AUIRS20302S (discontinued)

$
0
0
I have one customer using this item for a battered BLDC motor drive.
Battery can reach voltage as low as 7VDC and it worked fine with AUIRS20302S.
However, AUIRS20302S was discontinued at 02/07/2018.
Is there any alternative available?

Timer Mode Settings

$
0
0
Hello everyone,

I would like to know the signal curve that we get.
Please watch attached document. I would also like to know where I can find more information on Timer Mode Settings

Thank you in advance for your answer
?????

Infineon's Distance2Go Radar compilation issues

$
0
0
Good afternoon,

I have installed DAVE and the necessary files to build projects using the 24Ghz Distance2Go radar (XMC 4200 Microcontroller).

Infineon provides data extraction libraries that we can run on Dave; however, when I compile the software, the build fails because apparently the COM.c files are undefined.

All the necessary files are indeed defined and imported, however, it seems that Infineon's own software is not able to detect the radar connected to the computer.

Has anyone been able to run Infineon's data extract library in Dave and would be willing to help?

Thanks.
Viewing all 9892 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>