Quantcast
Channel: Forums - Recent Threads
Viewing all 262198 articles
Browse latest View live

LM5069: Quiescent Current Reduction

$
0
0

Part Number:LM5069

Hello,

I am wondering if it would be possible to reduce the quiescent current of the LM5069 hotswap controller with a scheme similar to that shown for TI's diode OR controller LM5050:

The PG output signal will have to be tolerant to the shift, but other than that is there any issue with this implementation?


UCC27714: Distorted HO pulses / widths +/-1us often end up inverted or at a lower amplitude

$
0
0

Part Number:UCC27714

It seems we are unable to consistently produce a proper looking pulse width under or above 1us from MCU driven PWM generators as HI/LI are individually being delayed 40ns by UCC.

Previous system gate drivers only inserted delay matching on LO input and produced 8-80Khz PWM near 100% duty cycle on LI/HI via LO/HO. That is a joint effort requiring two UCC gate drivers and two synchronized PWM generators in Co-partner field phasing. 

Can the UCC by delaying separately LI & HI inputs 40ns maintain compatibility with TM4C1294XL PWM peripheral generators in co-partner phasing? From this point it seems the 40ns delay matching is obstructing proper pulse generation of co-partner gate drivers. When both HO/LO of co-partner gate drivers is required to develop such pulses, 1/2 the pulse generation is often MIA or being inverted upside down above supply rail, not always but more often than expected.

It appears the DC inverter in not keeping synchronous to the PWM generators at all times and produce very distorted pulses and widths in the process. Even the HO copartner that does not produce an inverted pulse at the end of each period is distorted and does not reach down to mid supply.

TM4C129CNCPDT: PinMux: Must TM4C1294 bi-SSI MOSI/MISO be DAT0/DAT1?

$
0
0

Part Number:TM4C129CNCPDT

This is a question about pin mux.

To use the SSI0 peripheral (for example) in 2-wire (legacy or advanced bi-spi), must the SSI configuration use the DAT0/DAT1 pins for MOSI/MISO, or can one use (for example) DAT1/DAT2.

As I read it, the datasheet is pretty clear about using DAT0/DAT1, and when I go to into the TI-RTOS code, the only use I see for the "portMOSI" pin in the SDSPI driver config (a layer on top of SSI) is for a specific SD-card init routine.  There are no other uses for "portMOSI" in all of the RTOS, so I don't see how the peripheral would ever know that one intended DAT2 to be MISO.

The presence of that "portMOSI" item in the SDSPI driver config is the source of one engineer's belief that 2-wire SSI can be specified to use any of the 4 DAT0-3 pins for MOSI and MISO.

I'd appreciate any feedback on this.  What's riding on this question is whether to put testing effort into a prototype board that is wired for DAT1/DAT2, and that at first crack doesn't function correctly.  If the pin mux is simply wrong, we'll fix the board; if the pin mux is correct, then I'll keep troubleshooting.

Thanks,

Bob Cram

DS250DF410: Detailed datasheet DS250D410

$
0
0

Part Number:DS250DF410

Hi,

We are looking to evaluate this device for a particular application. Can we get detailed datasheet for this device?

thanks

regards, Ranjeet

AM5708: IDK JTAG connect issue

$
0
0

Part Number:AM5708

Hi,

My customer had his IDK working and debugging  (XDS100v2) after a reboot (and a day of walking through the hardware guide).

Now this morning he is getting the same error again:

Error connecting to the target:
(Error -1180 @ 0x0)
Device is held in reset. Take the device out of reset, and retry the operation.
(Emulation package 7.0.188.0)

 I know there is a known PMIC bug with the standard demo board, but I didn't know if it was present in the IDK as well.

Since it worked once, I suspect it is a sequencing / timing / startup issue.  Any pointers on how to reliably begin debugging.

Hi ultimate goal is to run the C6xxx for benchmarking.

We have been using this as a guide http://processors.wiki.ti.com/index.php/AM572x_GP_EVM_Hardware_Setup

Also he asks:

Can you also ask if these are required as listed in ‘AM572x GP EVM Hardware Setup’?

I don’t even really know where to get these gel files.

  • IcePick_D: AM572x_ICEPickD_Utility.gel
  • CS_DAP_DebugSS: AM572x_dap_startup.gel
  • CS_DAP_PC: AM572x_CS_DAP_PC_Utility.gel
  • A15_0: AM572x_cortexa15_cpu0_startup.gel
  • A15_1: AM572x_cortexa15_cpu1_startup.gel
  • C66x_0: AM572x_dsp_startup.gel
  • C66x_1: AM572x_dsp_startup.gel
  • M4_IPU_1_C0: AM572x_cortexM4_startup.gel
  • M4_IPU_1_C1: AM572x_cortexM4_startup.gel
  • M4_IPU_2_C0: AM572x_cortexM4_startup.gel
  • M4_IPU_2_C1: AM572x_cortexM4_startup.gel
  • IVAHD: AM572x_ivahd_startup.gel

Thanks! 

Blake

AFE4410: Application note on how to use the AFE4410 FIFO?

LMG1020EVM-006: Important Note

$
0
0

Part Number:LMG1020EVM-006

Hi Team,

I would like to know the meaning of the following comments.

Important Note”LMG1020EVM-006 is a prototype evaluation module and is available in limited quantities.”

www.ti.com/.../LMG1020EVM-006 is a prototype&tisearch=Search-EN-Everything

Is it possible to purchase an evaluation board?

Best Regards,

Kenji

CC1310: RF settings for LRM mode

$
0
0

Part Number:CC1310

HI TI team,

I am using the CC1310 with Contiki in 915MHz, the current RF is running at 50kbps, i am trying to run the CC1310 in long range mode (LRM).

what are the minimum software changes needed to run in lrm mode at 625 bps?

regards, 

Taher, 


TMS320F2812: FFT execution time - higher while using external RAM?

$
0
0

Part Number:TMS320F2812

Can one define which RAM blocks has to be used for fetch, read, and write.

Say in the IDE, (CCS) could all be defined as internal, different RAM blocks

Any help appreciated

TMS320F28377S: Count PWM Cycles for Stepper Motor

$
0
0

Part Number:TMS320F28377S

Hi -

I'm using the F28377S to drive stepper motors by converting a trajectory/profile velocity into a PWM frequency during each position control interrupt.  This works fairly well, but  does not end the move at exactly the correct number of steps (which may be okay for the application or not - not sure yet).  I would like to count the PWM cycles as the move is progressing.  Looking through the reference manual and forum, I see that this could be possible.  I would like to do this in hardware with one of the on-board modules (eCAP, TZ, capture/compare system, XBAR, etc.), but need some guidance on how to do this.  I would like to avoid using an interrupt to increment a counting variable.

Thanks-

Mary

CCS/TDC1000: TDC1000 read error flags register

$
0
0

Hi,

I am trying to read the TDC1000 error flags, but I can't get it to work as I always read the flags as 0. This is the following code in the main.c file of the TDC1000-7200 EVM demo code:

while (1) // Main loop
  {
//    __bis_SR_register(LPM0_bits + GIE);                                        // Enter LPM0, enable interrupts
    __no_operation();                                                          // For debugger 

    USBCommunicationTask(); // for GUI and UART


    if (next_trigger_time)
    {
      //Read RX-signal errors
      uint8_t errors;
      errors = TI_TDC1000_SPIByteReadReg(TI_TDC1000_ERROR_FLAGS_REG);
      sprintf((char *)outString, "%u \n", errors); // I have tried with %x as well
      putsUART((unsigned char *)outString,strlen((char *)outString));

      next_trigger_time = 0;
      if (TDC1000_MSP430Timer_TDC)
        MSP430Timer_tdc_trigger_measure();
      else
        tdc_trigger_measure();
      __no_operation();                                                        // For debugger     
    }
  }

Thanks in advance!

Regards,
Thibault

TPS2549: Device operation check

$
0
0

Part Number:TPS2549

Hi Team,

I have some questions from customers.

1. I would like to know the device type name tested by TI under the DIVIDER 3 mode of the DCP.

2. I would like to know the device type name tested by TI under the 1.2V mode of the DCP.

3. I would like to know the device type name tested by TI under short circuit mode of DCP (conforming to BC 1.2 and YD / T 1591-2009)

4. Is it possible to use the APPLE tablet in the CDP mode that allows simultaneous communication and charging?

Best Regards,

Kenji

J6EVM5777: Need allocation release to get ordered board.

$
0
0

Part Number:J6EVM5777

We have ordered the board and it is ready to go and Spectrum Digital is waiting on an allocation release to ship to us. We do not have a local sales person, and need help.

thanks

EK-TM4C1294XL: Trouble reading pulse width

$
0
0

Part Number:EK-TM4C1294XL

Hi,

I am trying to read the length of a pulse I providing to TM4C. I am having a lot of trouble and I am not sure how to proceed, suggestions would be very helpful. I think I might have a couple issues, If I am connected to ground there is no problem and will print out end = 0, start = zero and length = zero as expected. However, when I connect to my PWM (not the one in the code but one generated by another source) I get random values. I am not sure what is going on or how to fix it. The frequency of the signal I will eventually want to measure is anywhere from 3kHz to 5 kHz. Additionally, I think there might be a problem the order of how its reading my pulses - meaning it might be reading falling and then the rising edge, which inst a problem now as I am using a 50% PWM as my test signal but will be a problem in the future - so if anyone has any suggestions. I was trying to figure out a way to have my clock start at a rising edge but I am having trouble trying to figure out how to do that.

Any help would be appreciated.

#include <stdint.h>
#include <stdbool.h>
#include <math.h>
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_gpio.h"
#include "inc/hw_pwm.h"
#include "driverlib/debug.h"
#include "driverlib/fpu.h"
#include "driverlib/gpio.h"
#include "driverlib/pwm.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/timer.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"


// Global variable declaration for clock
uint32_t g_ui32SysClock;

// Global variable for Pulse
uint32_t  start = 0, end = 0, length = 0;


// Function Prototypes
void configureUART (void);
void Pulse_Length (void);
void DummyDelay(uint32_t Count);
void configurePWM(void);
void FallingEdge (void);
void RisingEdge (void);


//***********************************************************************************************************************//
// This section contains UART communication dependencies - this is used as a check for the code written but will most    //
// be commented out of the final code - it is going to remain as a comment and not deleted to allow editor of program to //
// utilize UART to provide checks of values and functions                                                                //
//***********************************************************************************************************************//

void
configureUART(void)
{
    //
    // Enable GPIO and UART 0
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); //ROM emsa7
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

    //
    // Configure UART Pins for UART MODE
    //
    GPIOPinConfigure(GPIO_PA0_U0RX);
    GPIOPinConfigure(GPIO_PA1_U0TX);
    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);


    //UARTClockSourceSet(UART0_BASE, UART_CLOCK_SYSTEM);


    //
    // Initialize the UART for console I/O.
    //
    UARTStdioConfig(0, 115200, g_ui32SysClock);
}

//***********************************************************************************************************************//
// This section will set up the timer to measure the length of the pulse into the controller. I will attempt to achieve  //
// by setting PD0 and PD1 as timer pins. These pins will both be connected to the comparator. PD0 will "look for" the    //
// rising-edge while PD1 will "look for" the falling-edge. Each will capture the timer value to start and end variables  //
// the difference between the two will be the pulse length which can be used to find the inductance --> Math section     //
//***********************************************************************************************************************//

void Pulse_Length (void)
{
    //
    // Enable GPIO and Timer 0
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);

    //
    //Configure GPIO Timer Pins in
    //
    GPIOPinConfigure(GPIO_PD0_T0CCP0);
    GPIOPinConfigure(GPIO_PD1_T0CCP1);
    GPIOPinTypeTimer(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1);

    //
    // Initialize timer A and B to count up in edge time mode
    //
    TimerConfigure(TIMER0_BASE, (TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_TIME_UP | TIMER_CFG_B_CAP_TIME_UP));

    //
    //Timer Load Value
    //
    TimerLoadSet(TIMER0_BASE, TIMER_BOTH, g_ui32SysClock);

    //
    //Synchronize both timers
    //
    TimerSynchronize(TIMER0_BASE, TIMER_0A_SYNC | TIMER_0B_SYNC);

    //
    // Timer A records positive edge time and Timer B records negative edge time
    //
    TimerControlEvent(TIMER0_BASE, TIMER_A, TIMER_EVENT_POS_EDGE);
    TimerControlEvent(TIMER0_BASE, TIMER_B, TIMER_EVENT_NEG_EDGE);

    // Registers a interrupt function to be called when timer as hits positive edge trig int
    IntRegister(INT_TIMER0A, RisingEdge);
    // Makes sure the interrupt is cleared
    TimerIntClear(TIMER0_BASE, TIMER_CAPA_EVENT);
    // Enable the indicated timer interrupt source.
    TimerIntEnable(TIMER0_BASE, TIMER_CAPA_EVENT);
    // The specified interrupt is enabled in the interrupt controller.
    IntEnable(INT_TIMER0A);

    // Registers a interrupt function to be called when timer as hits neg edge trig int
    IntRegister(INT_TIMER0B, FallingEdge);
    // Makes sure the interrupt is cleared
    TimerIntClear(TIMER0_BASE, TIMER_CAPB_EVENT);
    // Enable the indicated timer interrupt source.
    TimerIntEnable(TIMER0_BASE, TIMER_CAPB_EVENT);
    // The specified interrupt is enabled in the interrupt controller.
    IntEnable(INT_TIMER0B);
}

void RisingEdge (void)
{
    TimerIntClear(TIMER0_BASE, TIMER_CAPA_EVENT);
    start = TimerValueGet(TIMER0_BASE, TIMER_A);
}

void FallingEdge (void)
{
    TimerIntClear(TIMER0_BASE, TIMER_CAPB_EVENT);
    end = TimerValueGet(TIMER0_BASE, TIMER_B);
}

//***********************************************************************************************************************//
//***********************************************************************************************************************//
//***********************************************************************************************************************//

// DummyDelay() will only be used when debugging
void DummyDelay(uint32_t Count)
{
    volatile uint32_t x;

    for (x = 0;x<Count;x++)
    {
        x = x | 0;
    }
}
//***********************************************************************************************************************//
// This section contains the PWM function needed create the PWM function                                                 //
// Note: Any changes to the SysCtlPWMClockSet(SYSCTL_PWMDIV_1); will require changes in the above math section!!!!!!!!!  //
//***********************************************************************************************************************//
void
configurePWM(void)
{

    uint32_t Ticks;
    Ticks = 50; //Number_Ticks_Freq();
    //
    // Enable the GPIO Peripheral used by PWM (PF0, and eventually PF1)
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

    //
    // Enable PWM0
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);

    //
    //Dividing the clock for PWM use - Will use one for now
    //
    SysCtlPWMClockSet(SYSCTL_PWMDIV_1);

    //
    //Unlocking the pins
    //
    HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
    HWREG(GPIO_PORTF_BASE + GPIO_O_CR) = 0x01;

    //
    // Configure GPIO pin for PWM
    //
    GPIOPinConfigure(GPIO_PF0_M0PWM0);
    GPIOPinConfigure(GPIO_PF1_M0PWM1);

    GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_0 | GPIO_PIN_1);

    //
    // Configure PWM
    //
    PWMGenConfigure(PWM0_BASE, PWM_GEN_0, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);

    //
    //Setting PWM Period
    //
    PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, ceil(Ticks));

    //
    //Setting duty cycle
    //
    PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0 , ceil(Ticks/2));
    PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1 , ceil(Ticks/2));

    //
    // Enable PWM
    //
    PWMGenEnable(PWM0_BASE, PWM_GEN_0);
    PWMOutputInvert(PWM0_BASE, PWM_OUT_1_BIT, true);
    PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT | PWM_OUT_1_BIT, true);

}

int
main(void)
{
    g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
                                                 SYSCTL_OSC_MAIN |
                                                 SYSCTL_USE_PLL |
                                                 SYSCTL_CFG_VCO_480), 120000000);


    configurePWM();
    configureUART();
    IntMasterEnable(); // Enable the processor to respond to interrupts.
    Pulse_Length();

    TimerEnable(TIMER0_BASE, TIMER_BOTH);

    while(1)
    {
        length = end - start;
        UARTprintf("\nSTART = %d\n", start);
        UARTprintf("\nEND = %d\n", end);
        UARTprintf("\nLENGTH = %d\n", length);

    }
}

CC2640: single-ended current consumption at +2dBm

$
0
0

Part Number:CC2640

Team, what is the static current consumption in the cc2640 during transmit with single-ended operation (nominal +2 dBm), vs. with differential operation (nominal +5 dBm)? The datasheet lists 6.1 mA for SE @ 0 dBm, and 9.1 mA for Diff @ 5 dBm. So, what's Idd for SE @ 2 dBm?


CC2530: Clone coordinator network settings

$
0
0

Part Number:CC2530

Hello,

I'm trying to upgrade a coordinator from the stack 1.2.2a to the stack 3.0.0 but I have a small issue that I've not figured out yet.

When I upgrade the firmware I don't touch the NV items and when it finishes I need to do a power cycle to all the routers in order to be able to comunicate with them again.

The pairing doesn't get lost but something is not quite working since the power cycle shouldn't be needed.

The aproach I was thinking consisted in following:

-> Save the network settings and do the update afterwards

-> Erase all the nv items and restore only the network settings with the correct information.

My question is what NV items do I need to copy in order to clone a coordinator?

CC1350: CC1350 RF Design and PCB Antenna 'Request for Comments'

$
0
0

Part Number:CC1350

All,

I am working on a design utilizing a CC1350F128RHBR with BLE only wireless communication.  I have followed several TI App notes and reference designs are would like to share the RF side of my design in the hopes that the community would have some feedback.

I am modeling this question off this post. 

https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/t/613636?tisearch=e2e-sitesearch&keymatch=CC1350%20BLE%20antenna

My use of the CC1350 is intended to be BLE only at this time.  A future spin of the project may make the jump to Sub 1GHz and thus the SW folks wanted to start with the CC1350 instead of the CC2650.

The overall board size is 16.5mm X 58mm.  The desired BLE range for this initial board spin is <10' .  The board will be packaged inside an electrically floating metal housing (not my idea) and communicating with a tablet sitting next to the case.  Brief testing of a cheap BLE fitness tracker placed in the housing shows communication to the tablet.  Off of that (admittedly limited) basis, we jumped into the design.

For my schematic design, I referenced the CC2650 Datasheet (specifically Figure 7-1, shown below).  My schematic implements differential operation.

My antenna design is copied from AN043, Small Size 2.4 GHz PCB antenna (swra117d.pdf).  I copied the Inverted F Antenna from the files provided by TI and imported it into my design.  The antenna fits perfectly into the space I have available on my board and thus I have not modified the layout or dimensions it in any way. 

I am using the Solidworks PCB package.  I am usually a Cadence guy but my new gig uses Solidworks PCB.  It drives like Altium in most ways but not all.

My board is 6 layers, SIG/GND/SIG/CORE/PWR/GND/SIG.  0.031" thick.  1oz copper.  Top and bottom of the board are flooded and tied to GND.

Impedance calculations for the NetANT1_1 trace between C13 and the feed point come back as 83.8Ω.  That seems a little high to me but to get it down required a flood between C13 and the antenna and that is not what I am seeing in reference designs.

Questions:

In my schematic I have most things tied to GND and the antenna connections to AGND.  In the layout these are implemented as the same net.  Does anyone see value in keeping them separate and tying them together at one point?  I know this depends a lot on the reset of the design but I am less sure what to do related to the RF part.

Has anyone laid out a Differential Operation Antenna as shown in the CC2650 datasheet and then later DNP and 0Ω components to change to Single Ended Operation?   I started with differential for the better performance but may want to cost and size reduce to single ended if possible.  It seems like I could pop some parts off a board and 0Ω some others and have a crude conversion.  Just wondering if anyone has tried this and can share what they found. 

Am I missing anything glaring?  I have a few ARM core micro designs under my belt but this is my first RF design and the first project where I was the sole person working on the layout. 

Any help is greatly appreciated. 

TPS74801: Is it safe to apply an external voltage to the output of a disabled regulator?

$
0
0

Part Number:TPS74801

I am using the TPS74801 (DRC package) to generate 1.15V, with IN pins at 1.6V and BIAS pin at 3.3V.  I need to connect an external 1.1V source to the regulator's output net for a test.  I would remove the regulator from the board if not for the thermal pad (can't remove the part in-house).  Is it safe to disable the part (ground EN pin) and then connect my external source (all other regulator inputs still active), or could this damage the regulator?  Nothing in the data sheet appears to address this.  Thanks

AWR1243: For osiSyncObjWait(osiSyncObj_t* pSyncObj, osiTime_t Timeout), what does it mean to have a timeout of zero?

$
0
0

Part Number:AWR1243

I am trying to integrate the AWR1243 to the software and I noticed osiSyncObjWait() callback function will get call with Timeout equal to the ackTimeout or 0. 

With Timeout > 0, sem_timedwait() is being used and for Timeout == 0, should I use sem_trywait() or should the function return immediately without doing anything? 

Thanks, 

 

CCS/TMS320F28034: How can I unlock my flash using code.

$
0
0

Part Number:TMS320F28034

Tool/software: Code Composer Studio

I used the On-Chip Flash Option under the Tools menu in Code Composer studio to set a password and lock my flash.  I then call the code that I have pasted below in my app but my flash

remains locked.  Can you please suggest what could be the problem?

#define STATUS_FAIL 0
#define STATUS_SUCCESS 1

Uint16 CsmUnlock()
{
volatile Uint16 temp;

// Load the key registers with the current password. The 0xFFFF's are dummy
// passwords. User should replace them with the correct password for the DSP.

asm(" EALLOW");
CsmRegs.KEY0 = 0x1111;
CsmRegs.KEY1 = 0x2222;
CsmRegs.KEY2 = 0x3333;
CsmRegs.KEY3 = 0x4444;
CsmRegs.KEY4 = 0x5555;
CsmRegs.KEY5 = 0x6666;
CsmRegs.KEY6 = 0x7777;
CsmRegs.KEY7 = 0x8888;
__asm(" EDIS");

// Perform a dummy read of the password locations
// if they match the key values, the CSM will unlock

temp = CsmPwl.PSWD0;
temp = CsmPwl.PSWD1;
temp = CsmPwl.PSWD2;
temp = CsmPwl.PSWD3;
temp = CsmPwl.PSWD4;
temp = CsmPwl.PSWD5;
temp = CsmPwl.PSWD6;
temp = CsmPwl.PSWD7;

// If the CSM unlocked, return succes, otherwise return
// failure.
if (CsmRegs.CSMSCR.bit.SECURE == 0)
return STATUS_SUCCESS;
else
return STATUS_FAIL;

}

Viewing all 262198 articles
Browse latest View live


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