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

TXS0108E: VCCA connected to 2.5V ; VCCB connected to 3.3V; No load at A sides; B drove input at 3.3V why A has out put only 1.2V not 2.5V? Is it because no load?

$
0
0

Part Number: TXS0108E

Dear support,

I am testing out this voltage translator "TXS0108EPWR". VCCA has 2.5V; VCCB has 3.3V. I saw 3.3V on B4 to B8 but only saw 1.2V on A4 to A8? I did not have any thing connect to A side yet. Why 1.2V not 2.5V?

Please see attachment for schematic. 

Can you please advise?

Thank you.

Randy

Randy


DAC38RF82: DAC38RF82EVM + TSW14J56 bundle to generate sub-nanosecond pulses.

$
0
0

Part Number: DAC38RF82

Greetings,

We are interested in purchasing the DAC38RF82EVM + TSW14J56 bundle to generate pulses for amplitude modulation of optical pulses (driving an EOM) for a quantum optics experiment. We would like to know whether this bundle is able to generate sub-nanosecond (~100 ps) pulses. Further, we are interested in the bundle's ability in modifying the pulse shape it is able to generate, e.g. Gaussian, arbitrary, and whether the pulse generation can be on a trigger.

Thank you very much!

CCS/TMS320F28379D: Signal PWM in F28379D and DRV8305

$
0
0

Part Number: TMS320F28379D

Tool/software: Code Composer Studio

Good afternoon, I'm using a sinusoidal PWM signal to control the DRV8305 mosfets, so the generated signal controls the upper branch mosfet and the complementary signal controls the lower branch mosfet, 
but the generated complementary signal is not as expected. Could anyone tell me how to configure this complementary signal? The code is shown below:

Va_sin = m*sin(wt);
Vb_sin = m*sin(wt - 2*pi/3);
Vc_sin = m*sin(wt + 2*pi/3);

(motor->PwmARegs)->CMPA.bit.CMPA = (INV_PWM_HALF_TBPRD*Va_sin)+INV_PWM_HALF_TBPRD;
(motor->PwmBRegs)->CMPA.bit.CMPA = (INV_PWM_HALF_TBPRD*Vb_sin)+INV_PWM_HALF_TBPRD;
(motor->PwmCRegs)->CMPA.bit.CMPA = (INV_PWM_HALF_TBPRD*Vc_sin)+INV_PWM_HALF_TBPRD;

Thanks

TPS27S100: Choosing Rimon Value

$
0
0

Part Number: TPS27S100

Hi,

I have a customer that is looking to use the TPS27S100B and we want to make sure that R_imon is set correctly. 

They want to use R_ilm as a backup, so they have it set to 510 ohms which should correlate to ~4.8A.

They want to monitor the current via a 3.3V ADC and turn off the output via the enable pin if the current exceeds 4.5A

Equation [1] in the datasheet shows the R_imon = (V_imon * k_imon) / I_out ... since k_imon is set to 500, setting V_imon to 3.3 V and I_out to 5A (to give some margin) provides a value of 330 ohms for R_imon. Does that seem correct or is there something that I am missing?

Thanks

-Tyler

 

TPS61022: Boost converted not getting enough output current

$
0
0

Part Number: TPS61022

Hello,

I am designing a boost circuit based around the tps61022 chip.

My requirements: 

Single cell lipo (3.7v) to boost to 5V 3A (aprox 2.4 amps or so, burst for aprox 2 or less seconds when used with LED)

It is used for a high power LED light with a micro controller .

I used the workbench design tool.

During my testing bench supply as a input at 3.7v. I was able to only get about maybe 1 amp output with the output dropping down to 4.8v (drawing more current would result in the boost chip dying).

I was directed to this help page from the support page.

The components used:

TPS61022

Inductor: SRN8040-1R0Y (digikey  part: SRN8040-1R0YCT-ND)

732K resistor: ERJ-2RKF7323X (digi part: P732KLCT-ND)

100K resistor: ERJ-2RKF1003X (digi part: P100KLCT-ND)

Input cap QTY 2: 10uf (CL21A226MOCLRNC, digi part: 1276-6780-1-ND)
Output cap QTY 2: 22uf CL21A226MOCLRNCm digi part: 1276-6780-1-ND

I did try adding a 470uf electrolytic cap, that did not solve my issue.

Speaking to the help person in the original ticket, he suggest to use the parts mention in the datasheet (mainly the inductor).

I have ordered some parts to try and solve the issue:

Inductor as per datasheet: XAL7030-102MEC 

10uf ceramic cap, C0805C106K8PACTU

22uf ceramic cap, GRM188R61A226ME15D

47uf ceramic cap, GRM31CR61A476KE15L


As well these are some of my calculation from the datasheet:

Iout(CL)Vin3.7V
Equation 5IL (DC)3.649AVout5V
Equation 2Duty cycle (D)0.334%Iout3A
Equation 6IL (P-P)1.236Afsw1MHz
Equation 7IL(P)4.267n(power conversion efficiency)90%
Equation 9Vripple(ESR)Inductor inductance1uH


Also some scope references:

Measuring inductor at 600 mah load:








Inductor at no load:





Output no load:

Output at 1 amp load



This last screen cap is not great (was from last week not sure if it was accurate/labeled correctly), I can redo it tomorrow when I get the new parts in.

In the mean time:

Did I miss something or miscalculate something?

Any possible idea on why the low output?

CC2642R: Code is not Jumping to Boot loader from Application Area.

$
0
0

Part Number: CC2642R

Hi Team,

We are using the CC2642R for our "Over The Air application" and we have divided the total flash into two parts and created the two separate projects for the same.

        1. Boot Loader ( 0x0000  to 0x2000)

        2. Application(TI_RTOS + Bluetooth Layers)  ( 0x2000  to 0x58000)

We combine the both ".hex or .bin"  files and flashed into the controller. We receive the new image through Bluetooth app and loading into external flash and jumping to the boot Loader area to update the new image to application section. But application is not jumping to Boot area.

For Jumping to Boot area, we have used the TI Specific Api " SysCtrlSystemReset"

SysCtrlSystemReset( void )
{
   // Disable CPU interrupts
   CPUcpsid();
  
   // Write reset register
   HWREGBITW( AON_PMCTL_BASE + AON_PMCTL_O_RESETCTL, AON_PMCTL_RESETCTL_SYSRESET_BITN ) = 1;
   // Finally, wait until the above write propagates
   while ( 1 ) {
      // Do nothing, just wait for the reset (and never return from here)
   }
}

But using above function it is not going to boot loader address(0x0000). Is there any other way to jump to boot area from TI_RTOS application layer.

Project settings used in Boot and Application Projects:

1. #define SET_CCFG_IMAGE_VALID_CONF_IMAGE_VALID 0x0000    in CCFG FILE

2. Both projects have mapped the  ".intvec" section at start of memory area, means in boot loader at 0x0000 and in App 0x2000 , both are reflected in .map files.

 Is that  Interrupt vector tables required in both the projects or any one project is sufficient ?

3. m3Hwi.resetVectorAddress  = 0x0000;    in TI-RTOS  Cfg File.

4. .ccfg section is required in both the projects or only in application is sufficient ?

5. By using same reset function is working fine with Non Rtos application, but with RTOS application is not working.

6. --drv_vector_table_base=0x00002000(App), --drv_vector_table_base=0x0000000(Boot loader) is this setting required in Both app and Boot Debugger Extra Options tab.

Are there any special settings required in both the projects(Boot and Application) apart from above settings, like in Linker, debug tabs from IAR options and any additional .ccfg settings required.

Could anyone help me on this issue, it's on very high priority to deliver the build to customer.

Regards,

Srinivas.V

Compiler/TDA2EX17EVM: TI-RTOS for Camera Parallel interface

$
0
0

Part Number: TDA2EX17EVM

Tool/software: TI C/C++ Compiler

Hi, Sirs

I will get TDA2EX17EVM for testing after a month and now I have successfully built "PROCESSOR_SDK_VISION 03_06_00_00" image for rtos only.My camera module (Aptina AR0230-parallel bus) with TI 913 and TI 914 will connect to camera parallel interface of TDA2EX17EVM.Base on hardware structure and I will need to implement 720p  image preview to HDMI LCD.I refer and trace to "/vision_sdk/apps/src/rtos/usecases/vip_single_cam_frame_copy/chains_vipSingleCameraFrameCopy.c".Do I need to modify or notice which parts of codes for parallel interface?

Additionally,I don't need to handle Aptina AR0230 module by I2C and it produces the 720p image streaming by its firmware.I just only handle to get the image streaming.

Thanks a lot.
Best Regards,
Jacob Lin

CC3220SF: Error [-2005] SL_API_ABORTED fixed with updated SDK

$
0
0

Part Number: CC3220SF

Hello,

I just wanted to let you know that I updated my Simplelink SDK from version 3_20_00_06 to the newly released 3_30_00_04 and I no longer received the -2005 driver error or exceptions described in my previous thread: https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/t/837348

I used to get the SimpleLink driver error and exceptions about 2-5 times in a 24 hour period on a single device.  I have been running the new SDK for 4 days now with 12 devices and not a single error.

Looking at the release notes, it looks like you fixed some issues related sync object handling and various bugs in the NWP.  Thank you for fixing - this bug was driving me crazy.


CCS/TM4C123GH6PM: PWM pins in TM4C to drive motor

$
0
0

Part Number: TM4C123GH6PM

Tool/software: Code Composer Studio

Hi,

I am new to TM4C123GH6PM. 

The pin out lists multiple functionality of TM4C board. Which 6 pwm pins I can configure as digital , to generate digital outputs.

PD0 and PB6  are connected together as AnalogIn , what does it means and can I use both pins to generate digital signals and how?

Please explain in brief about how to use different functionality of pins and what to avoid/

Thanks,

Ayushi

CCS/IWR6843: Nature of LVDS in IWR6843..

$
0
0

Part Number: IWR6843

Tool/software: Code Composer Studio

Dear community,

We're very interested in develop some applications with microprocessor using IWR6843 to process its signals. Nonetheless I have not founded any detailed reference about the nature of LVDS lanes in this chip.

I'd like to know if there is a documentation of LVDS at IWR6843 to know:

1.- What to expect in every lane at moment of debuggin IWR6843 with LVDS

2.- How to access by programming these lines to get signals from chip (registers, programming documentation, etc).

3.- Can these signals be used to get processing values from DSP? or DSP processed values only can be accesed by UART ?

I need to clarify we want to work directly with IWR6843 without DCA1000EVM, due to we have our own processor and need a very space reduced option.

Thanks in advance.

TPA3116D2: TPA3116D2 Master/Slave mode?

$
0
0

Part Number: TPA3116D2

Greetings,

I have some pre-stuffed TPA3116R2 boards from overseas that is set up as a single channel mono PBTL amp.

However, they have the mode setting as 26dB Slave, with the SYNC input grounded.

It seems to be working fine...just want to make sure it is ok.

It is set up as follows:

AVCC =PVCC = +12V

MODSEL = GND (BD mode)

SDZ = FAULTZ with 100k pullup to PVCC

PLIMIT = GVDD with 1uF to GND

GAIN/SLV = R1=75k, R2=47k (26dB Slave)

LINP=LINN = GND (PBTL)

AM0 thru AM2 = GND

SYNC = GND

Output Inductor and caps: 10uH with 1uF to GND, 0.22uF bootstraps, 3.3ohm and 10n snubbers.

Driving single 4 ohm speaker with ~12in leads.

Questions:

1. Is Slave mode correct for a stand alone PBTL amp?? Should I use Master and open the SYNC pin?

2. Should I be using 1SPW mode? (a little more distortion is tolerable, but I would like to minimize standby current).

EV2400: EV2400 or bqStudio communication problems

$
0
0

Part Number: EV2400

I’m running Windows 10 on a 64-bit system with 8 GB of RAM and a 4.2 GHz processor. I just purchased an EV2400 and BQ27441EVM-G1B. I was able to successfully run 0.28 firmware update, however when I open Battery Management Studio with the BQ27441EVM-G1B connected it automatically comes in the bqStudio Supported Targets window. When I select any of the bq27441.bqz targets I get a message stating “The detected device is not compatible with this application! Some actions could cause the device to lose communication permanently and enter an unrecoverable state. Proceed at your own risk.” When I Cancel out of this bqStudio closes. What am I doing wrong?

SN74LVT245B: Ensuring high-impedance state during start-up, power up

$
0
0

Part Number: SN74LVT245B

Hi,

That datasheet says the following: 

"To ensure the high-impedance state during power up or power down, OE should be tied to VCC through a pullup resistor; the minimum value of the resistor is determined by the current-sinking capability of the driver."

What driver is this referring to when saying "current-sinking capability of the driver?" Can we get more detail on calculating this pull-up resistor? 

We are seeing issue with these signals during start-up so I am questioning if these signals are staying in a high-impedance condition during power on.

TMS320F28335: ECAN: Is it necessary to wait for transmit acknowledge?

$
0
0

Part Number: TMS320F28335

Hello,

My application transmits CAN message every 3 to 4ms in an ISR.  I also have a lot of other high priority task running in my application, so I would rather not have my application wait for the CAN transmit acknowledge.

Is it necessary to wait for the CAN transmit acknowledge?  are there be any reasons the application should wait for the CAN transmit acknowledge? 

I was thinking about not waiting for the ack and just clearing the acknowledge bit before transmitting.

Is there any reason I shouldn't do it that way?

How long does it take the CAN transmit to acknowledge?

Stephen

TCA9803: Rise Time Accelerator

$
0
0

Part Number: TCA9803

Hi!

I am wondering if the TCA9803 has rise time accelerators? My customer is in need for an I2C buffer without the accelerators. If there is another device you recommend, please let me know.

Thanks!
Reed


ADS114S08B: Overdriving affects

$
0
0

Part Number: ADS114S08B

Hello,

The last sentence on page 23 of the datasheet says, "Overdriving an unselected input on the device can affect conversions taking place on the other input pins." 

We are limiting the input current to 5mA with a series resistor, in our design, and I am wondering how overdriving one pin can affect the other data conversions, and if we need external Schottky clamps as well?

Also, if we use a 3-terminal voltage regulator to power the chip will we need to add a resistor so that the voltage will not rise when the current rises?

Thanks

CC2640: How to get contiki-os ble advertising on the cc2640F128 4x4mm chip on custom board

$
0
0

Part Number: CC2640

Hello,

Due to tirtos not being supported on Linux, I have been trying to get contiki to work on my cc2640f128 on my custom board. Specifically, the cc26x0-demo example from their platform-specific code: https://github.com/contiki-ng/contiki-ng/blob/develop/examples/platform-specific/cc26x0-cc13x0/cc26x0-demo.c.
Now I have been running into a few problems but most importantly the fact that i can see my chip boot-up and yet not advertise, the changes i made where as follows:

- Used the srf06 platform with the cc2640 board as a base and started removing any button/led hal related code on there since i am using my custom board (which to start is only powering my chip, no buttons or leds are being used)

- Altered the board.h file since the contiki one defines it for a 7x7mm packageand therefore used https://github.com/contiki-os/contiki/issues/2114 this post to guide me on the changes i need to make.

- Turned off the rom bootloader just as has been done on tirtos in order to eliminate any problems going wrong over there.

the platform.c file i used is shown below:

/*
 * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the copyright holder nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/*---------------------------------------------------------------------------*/
/**
 * \addtogroup cc26xx-platforms
 * @{
 *
 * \defgroup cc26xx-srf-tag SmartRF+CC13xx/CC26xx EM, SensorTags and LaunchPads
 *
 * This platform supports a number of different boards:
 * - A standard TI SmartRF06EB with a CC26xx EM mounted on it
 * - A standard TI SmartRF06EB with a CC1310 EM mounted on it
 * - The TI CC2650 SensorTag
 * - The TI CC1350 SensorTag
 * - The TI CC2650 LaunchPad
 * - The TI CC1310 LaunchPad
 * - The TI CC1350 LaunchPad
 * @{
 */
#include "ti-lib.h"
#include "contiki.h"
#include "contiki-net.h"
#include "lpm.h"
#include "dev/leds.h"
#include "dev/gpio-hal.h"
#include "dev/oscillators.h"
#include "ieee-addr.h"
#include "ble-addr.h"
#include "vims.h"
#include "dev/cc26xx-uart.h"
#include "dev/soc-rtc.h"
#include "dev/serial-line.h"
#include "rf-core/rf-core.h"
#include "sys_ctrl.h"
#include "uart.h"
#include "sys/clock.h"
#include "sys/rtimer.h"
#include "sys/node-id.h"
#include "sys/platform.h"
#include "lib/random.h"
#include "lib/sensors.h"
#include "button-sensor.h"
#include "dev/serial-line.h"
#include "dev/button-hal.h"
#include "net/mac/framer/frame802154.h"
#include "board-peripherals.h"

#include "driverlib/driverlib_release.h"

#include <stdio.h>
/*---------------------------------------------------------------------------*/
/* Log configuration */
#include "sys/log.h"
#define LOG_MODULE "CC26xx/CC13xx"
#define LOG_LEVEL LOG_LEVEL_MAIN
/*---------------------------------------------------------------------------*/
/** \brief Board specific iniatialisation */
void board_init(void);
/*---------------------------------------------------------------------------*/
#ifdef BOARD_CONF_HAS_SENSORS
#define BOARD_HAS_SENSORS BOARD_CONF_HAS_SENSORS
#else
#define BOARD_HAS_SENSORS 1
#endif
/*---------------------------------------------------------------------------*/
// static void
// fade(leds_mask_t l)
// { //*** you fade
//   volatile int i;
//   int k, j;
//   for (k = 0; k < 800; ++k)
//   {
//     j = k > 400 ? 800 - k : k;

//     leds_on(l);
//     for (i = 0; i < j; ++i)
//     {
//       __asm("nop");
//     }
//     leds_off(l);
//     for (i = 0; i < 400 - j; ++i)
//     {
//       __asm("nop");
//     }
//   }
// }
/*---------------------------------------------------------------------------*/
static void
set_rf_params(void)
{
  uint8_t ext_addr[8];

#if MAC_CONF_WITH_BLE
  ble_eui64_addr_cpy_to((uint8_t *)&ext_addr);
  NETSTACK_RADIO.set_object(RADIO_PARAM_64BIT_ADDR, ext_addr, 8);
#else
  uint16_t short_addr;
  ieee_addr_cpy_to(ext_addr, 8);

  short_addr = ext_addr[7];
  short_addr |= ext_addr[6] << 8;

  NETSTACK_RADIO.set_value(RADIO_PARAM_PAN_ID, IEEE802154_PANID);
  NETSTACK_RADIO.set_value(RADIO_PARAM_16BIT_ADDR, short_addr);
  NETSTACK_RADIO.set_value(RADIO_PARAM_CHANNEL, IEEE802154_DEFAULT_CHANNEL);
  NETSTACK_RADIO.set_object(RADIO_PARAM_64BIT_ADDR, ext_addr, 8);
#endif
}
/*---------------------------------------------------------------------------*/
void platform_init_stage_one()
{
  /* Enable flash cache and prefetch. */
  ti_lib_vims_mode_set(VIMS_BASE, VIMS_MODE_ENABLED);
  ti_lib_vims_configure(VIMS_BASE, true, true);

  ti_lib_int_master_disable();

  /* Set the LF XOSC as the LF system clock source */
  oscillators_select_lf_xosc();

  lpm_init();

  board_init();

  gpio_hal_init();

  // leds_init();
  // fade(LEDS_RED);

  /*
   * Disable I/O pad sleep mode and open I/O latches in the AON IOC interface
   * This is only relevant when returning from shutdown (which is what froze
   * latches in the first place. Before doing these things though, we should
   * allow software to first regain control of pins
   */
  ti_lib_aon_ioc_freeze_disable();
  HWREG(AON_SYSCTL_BASE + AON_SYSCTL_O_SLEEPCTL) = 1;
  ti_lib_sys_ctrl_aon_sync();

  ti_lib_int_enable(INT_AON_GPIO_EDGE);
  ti_lib_int_master_enable();

  soc_rtc_init();
  // fade(LEDS_YELLOW);
}
/*---------------------------------------------------------------------------*/
void platform_init_stage_two()
{
  random_init(0x1234);

  /* Character I/O Initialisation */
#if CC26XX_UART_CONF_ENABLE
  cc26xx_uart_init();
#endif

  serial_line_init();

#if BUILD_WITH_SHELL
  cc26xx_uart_set_input(serial_line_input_byte);
#endif

  /* Populate linkaddr_node_addr */
#if MAC_CONF_WITH_BLE
  uint8_t ext_addr[8];
  ble_eui64_addr_cpy_to((uint8_t *)&ext_addr);
  memcpy(&linkaddr_node_addr, &ext_addr[8 - LINKADDR_SIZE], LINKADDR_SIZE);
#else
  ieee_addr_cpy_to(linkaddr_node_addr.u8, LINKADDR_SIZE);
#endif

  // button_hal_init();

  //fade(LEDS_GREEN);
}
/*---------------------------------------------------------------------------*/
void platform_init_stage_three()
{
  radio_value_t chan = 0;
  radio_value_t pan = 0;

  set_rf_params();

  NETSTACK_RADIO.get_value(RADIO_PARAM_CHANNEL, &chan);

  LOG_DBG("With DriverLib v%u.%u\n", DRIVERLIB_RELEASE_GROUP,
          DRIVERLIB_RELEASE_BUILD);
  // LOG_INFO(BOARD_STRING "\n");
  LOG_DBG("IEEE 802.15.4: %s, Sub-GHz: %s, BLE: %s, Prop: %s\n",
          ti_lib_chipinfo_supports_ieee_802_15_4() == true ? "Yes" : "No",
          ti_lib_chipinfo_chip_family_is_cc13xx() == true ? "Yes" : "No",
          ti_lib_chipinfo_supports_ble() == true ? "Yes" : "No",
          ti_lib_chipinfo_supports_proprietary() == true ? "Yes" : "No");
  // LOG_INFO(" RF: Channel %d", chan);

  if (NETSTACK_RADIO.get_value(RADIO_PARAM_PAN_ID, &pan) == RADIO_RESULT_OK)
  {
    // LOG_INFO_(", PANID 0x%04X", pan);
  }
  // LOG_INFO_("\n");

  // #if BOARD_HAS_SENSORS
  //   process_start(&sensors_process, NULL);
  // #endif

  //fade(LEDS_ORANGE);
}
/*---------------------------------------------------------------------------*/
void platform_idle()
{
  /* Drop to some low power mode */
  lpm_drop();
}
/*---------------------------------------------------------------------------*/
/**
 * @}
 * @}
 */

The application example code that i am using is shown below:

/*
 * Copyright (c) 2014, Texas Instruments Incorporated - http://www.ti.com/
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the copyright holder nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/*---------------------------------------------------------------------------*/
/**
 * \addtogroup cc26xx-platforms
 * @{
 *
 * \defgroup cc26xx-examples CC26xx Example Projects
 *
 * Example projects for CC26xx-based platforms.
 * @{
 *
 * \defgroup cc26xx-demo CC26xx Demo Project
 *
 *   Example project demonstrating the CC13xx/CC26xx platforms
 *
 *   This example will work for the following boards:
 *   - cc26x0-cc13x0: SmartRF06EB + CC13xx/CC26xx EM
 *   - CC2650 and CC1350 SensorTag
 *   - CC1310, CC1350, CC2650 LaunchPads
 *
 *   This is an IPv6/RPL-enabled example. Thus, if you have a border router in
 *   your installation (same RDC layer, same PAN ID and RF channel), you should
 *   be able to ping6 this demo node.
 *
 *   This example also demonstrates CC26xx BLE operation. The process starts
 *   the BLE beacon daemon (implemented in the RF driver). The daemon will
 *   send out a BLE beacon periodically. Use any BLE-enabled application (e.g.
 *   LightBlue on OS X or the TI BLE Multitool smartphone app) and after a few
 *   seconds the cc26xx device will be discovered.
 *
 * - etimer/clock : Every CC26XX_DEMO_LOOP_INTERVAL clock ticks the LED defined
 *                  as CC26XX_DEMO_LEDS_PERIODIC will toggle and the device
 *                  will print out readings from some supported sensors
 * - sensors      : Some sensortag sensors are read asynchronously (see sensor
 *                  documentation). For those, this example will print out
 *                  readings in a staggered fashion at a random interval
 * - Buttons      : CC26XX_DEMO_TRIGGER_1 button will toggle CC26XX_DEMO_LEDS_BUTTON
 *                - CC26XX_DEMO_TRIGGER_2 turns on LEDS_REBOOT and causes a
 *                  watchdog reboot
 *                - The remaining buttons will just print something
 *                - The example also shows how to retrieve the duration of a
 *                  button press (in ticks). The driver will generate a
 *                  sensors_changed event upon button release
 * - Reed Relay   : Will toggle the sensortag buzzer on/off
 *
 * @{
 *
 * \file
 *     Example demonstrating the cc26xx platforms
 */
#include "contiki.h"
#include "sys/etimer.h"
#include "sys/ctimer.h"
#include "dev/leds.h"
#include "dev/watchdog.h"
#include "dev/button-hal.h"
#include "random.h"
#include "button-sensor.h"
#include "batmon-sensor.h"
#include "board-peripherals.h"
#include "rf-core/rf-ble.h"

#include "ti-lib.h"

#include <stdio.h>
#include <stdint.h>
/*---------------------------------------------------------------------------*/
#define CC26XX_DEMO_LOOP_INTERVAL (CLOCK_SECOND * 20)
#define CC26XX_DEMO_LEDS_PERIODIC LEDS_YELLOW
#define CC26XX_DEMO_LEDS_BUTTON LEDS_RED
#define CC26XX_DEMO_LEDS_REBOOT LEDS_ALL
/*---------------------------------------------------------------------------*/
// #define CC26XX_DEMO_TRIGGER_1 BOARD_BUTTON_HAL_INDEX_KEY_LEFT
// #define CC26XX_DEMO_TRIGGER_2 BOARD_BUTTON_HAL_INDEX_KEY_RIGHT

// #if BOARD_SENSORTAG
// #define CC26XX_DEMO_TRIGGER_3 BOARD_BUTTON_HAL_INDEX_REED_RELAY
// #endif
/*---------------------------------------------------------------------------*/
static struct etimer et;
/*---------------------------------------------------------------------------*/
PROCESS(cc26xx_demo_process, "cc26xx demo process");
AUTOSTART_PROCESSES(&cc26xx_demo_process);
/*---------------------------------------------------------------------------*/
#if BOARD_SENSORTAG
/*---------------------------------------------------------------------------*/
/*
 * Update sensor readings in a staggered fashion every SENSOR_READING_PERIOD
 * ticks + a random interval between 0 and SENSOR_READING_RANDOM ticks
 */
#define SENSOR_READING_PERIOD (CLOCK_SECOND * 20)
#define SENSOR_READING_RANDOM (CLOCK_SECOND << 4)

// #define printf ()

static struct ctimer bmp_timer, opt_timer, hdc_timer, tmp_timer, mpu_timer;
/*---------------------------------------------------------------------------*/
static void init_bmp_reading(void *not_used);
static void init_opt_reading(void *not_used);
static void init_hdc_reading(void *not_used);
static void init_tmp_reading(void *not_used);
static void init_mpu_reading(void *not_used);
/*---------------------------------------------------------------------------*/
static void
print_mpu_reading(int reading)
{
  if (reading < 0)
  {
    printf("-");
    reading = -reading;
  }

  printf("%d.%02d", reading / 100, reading % 100);
}
/*---------------------------------------------------------------------------*/
static void
get_bmp_reading()
{
  int value;
  clock_time_t next = SENSOR_READING_PERIOD +
                      (random_rand() % SENSOR_READING_RANDOM);

  value = bmp_280_sensor.value(BMP_280_SENSOR_TYPE_PRESS);
  if (value != CC26XX_SENSOR_READING_ERROR)
  {
    printf("BAR: Pressure=%d.%02d hPa\n", value / 100, value % 100);
  }
  else
  {
    printf("BAR: Pressure Read Error\n");
  }

  value = bmp_280_sensor.value(BMP_280_SENSOR_TYPE_TEMP);
  if (value != CC26XX_SENSOR_READING_ERROR)
  {
    printf("BAR: Temp=%d.%02d C\n", value / 100, value % 100);
  }
  else
  {
    printf("BAR: Temperature Read Error\n");
  }

  SENSORS_DEACTIVATE(bmp_280_sensor);

  ctimer_set(&bmp_timer, next, init_bmp_reading, NULL);
}
/*---------------------------------------------------------------------------*/
static void
get_tmp_reading()
{
  int value;
  clock_time_t next = SENSOR_READING_PERIOD +
                      (random_rand() % SENSOR_READING_RANDOM);

  value = tmp_007_sensor.value(TMP_007_SENSOR_TYPE_ALL);

  if (value == CC26XX_SENSOR_READING_ERROR)
  {
    printf("TMP: Ambient Read Error\n");
    return;
  }

  value = tmp_007_sensor.value(TMP_007_SENSOR_TYPE_AMBIENT);
  printf("TMP: Ambient=%d.%03d C\n", value / 1000, value % 1000);

  value = tmp_007_sensor.value(TMP_007_SENSOR_TYPE_OBJECT);
  printf("TMP: Object=%d.%03d C\n", value / 1000, value % 1000);

  SENSORS_DEACTIVATE(tmp_007_sensor);

  ctimer_set(&tmp_timer, next, init_tmp_reading, NULL);
}
/*---------------------------------------------------------------------------*/
static void
get_hdc_reading()
{
  int value;
  clock_time_t next = SENSOR_READING_PERIOD +
                      (random_rand() % SENSOR_READING_RANDOM);

  value = hdc_1000_sensor.value(HDC_1000_SENSOR_TYPE_TEMP);
  if (value != CC26XX_SENSOR_READING_ERROR)
  {
    printf("HDC: Temp=%d.%02d C\n", value / 100, value % 100);
  }
  else
  {
    printf("HDC: Temp Read Error\n");
  }

  value = hdc_1000_sensor.value(HDC_1000_SENSOR_TYPE_HUMID);
  if (value != CC26XX_SENSOR_READING_ERROR)
  {
    printf("HDC: Humidity=%d.%02d %%RH\n", value / 100, value % 100);
  }
  else
  {
    printf("HDC: Humidity Read Error\n");
  }

  ctimer_set(&hdc_timer, next, init_hdc_reading, NULL);
}
/*---------------------------------------------------------------------------*/
static void
get_light_reading()
{
  int value;
  clock_time_t next = SENSOR_READING_PERIOD +
                      (random_rand() % SENSOR_READING_RANDOM);

  value = opt_3001_sensor.value(0);
  if (value != CC26XX_SENSOR_READING_ERROR)
  {
    printf("OPT: Light=%d.%02d lux\n", value / 100, value % 100);
  }
  else
  {
    printf("OPT: Light Read Error\n");
  }

  /* The OPT will turn itself off, so we don't need to call its DEACTIVATE */
  ctimer_set(&opt_timer, next, init_opt_reading, NULL);
}
/*---------------------------------------------------------------------------*/
static void
get_mpu_reading()
{
  int value;
  clock_time_t next = SENSOR_READING_PERIOD +
                      (random_rand() % SENSOR_READING_RANDOM);

  printf("MPU Gyro: X=");
  value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_GYRO_X);
  print_mpu_reading(value);
  printf(" deg/sec\n");

  printf("MPU Gyro: Y=");
  value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_GYRO_Y);
  print_mpu_reading(value);
  printf(" deg/sec\n");

  printf("MPU Gyro: Z=");
  value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_GYRO_Z);
  print_mpu_reading(value);
  printf(" deg/sec\n");

  printf("MPU Acc: X=");
  value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_ACC_X);
  print_mpu_reading(value);
  printf(" G\n");

  printf("MPU Acc: Y=");
  value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_ACC_Y);
  print_mpu_reading(value);
  printf(" G\n");

  printf("MPU Acc: Z=");
  value = mpu_9250_sensor.value(MPU_9250_SENSOR_TYPE_ACC_Z);
  print_mpu_reading(value);
  printf(" G\n");

  SENSORS_DEACTIVATE(mpu_9250_sensor);

  ctimer_set(&mpu_timer, next, init_mpu_reading, NULL);
}
/*---------------------------------------------------------------------------*/
static void
init_bmp_reading(void *not_used)
{
  SENSORS_ACTIVATE(bmp_280_sensor);
}
/*---------------------------------------------------------------------------*/
static void
init_opt_reading(void *not_used)
{
  SENSORS_ACTIVATE(opt_3001_sensor);
}
/*---------------------------------------------------------------------------*/
static void
init_hdc_reading(void *not_used)
{
  SENSORS_ACTIVATE(hdc_1000_sensor);
}
/*---------------------------------------------------------------------------*/
static void
init_tmp_reading(void *not_used)
{
  SENSORS_ACTIVATE(tmp_007_sensor);
}
/*---------------------------------------------------------------------------*/
static void
init_mpu_reading(void *not_used)
{
  mpu_9250_sensor.configure(SENSORS_ACTIVE, MPU_9250_SENSOR_TYPE_ALL);
}
#endif
/*---------------------------------------------------------------------------*/
// static void
// get_sync_sensor_readings(void)
// {
//   int value;

//   printf("-----------------------------------------\n");

//   value = batmon_sensor.value(BATMON_SENSOR_TYPE_TEMP);
//   printf("Bat: Temp=%d C\n", value);

//   value = batmon_sensor.value(BATMON_SENSOR_TYPE_VOLT);
//   printf("Bat: Volt=%d mV\n", (value * 125) >> 5);

// #if BOARD_SMARTRF06EB
//   SENSORS_ACTIVATE(als_sensor);

//   value = als_sensor.value(0);
//   printf("ALS: %d raw\n", value);

//   SENSORS_DEACTIVATE(als_sensor);
// #endif

//   return;
// }
/*---------------------------------------------------------------------------*/
// static void
// init_sensors(void)
// {
//   SENSORS_ACTIVATE(batmon_sensor);
// }
/*---------------------------------------------------------------------------*/
// static void
// init_sensor_readings(void)
// {
// #if BOARD_SENSORTAG
//   SENSORS_ACTIVATE(hdc_1000_sensor);
//   SENSORS_ACTIVATE(tmp_007_sensor);
//   SENSORS_ACTIVATE(opt_3001_sensor);
//   SENSORS_ACTIVATE(bmp_280_sensor);

//   init_mpu_reading(NULL);
// #endif
// }
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(cc26xx_demo_process, ev, data)
{

  PROCESS_BEGIN();

  // printf("CC26XX demo\n");

  // init_sensors();

  /* Init the BLE advertisement daemon */
  rf_ble_beacond_config(0, BOARD_STRING);
  rf_ble_beacond_start();

  etimer_set(&et, CC26XX_DEMO_LOOP_INTERVAL);
  //get_sync_sensor_readings();
  //init_sensor_readings();

  while (1)
  {

    PROCESS_YIELD();

    if (ev == PROCESS_EVENT_TIMER)
    {
      if (data == &et)
      {
        // leds_toggle(CC26XX_DEMO_LEDS_PERIODIC);

        //get_sync_sensor_readings();

        etimer_set(&et, CC26XX_DEMO_LOOP_INTERVAL);
      }
    }
    // else if (ev == button_hal_periodic_event)
    //{
    // button_hal_button_t *button = data;

    // printf("%s periodic event, duration %d seconds\n",
    //        BUTTON_HAL_GET_DESCRIPTION(button),
    //        button->press_duration_seconds);
    //}
    //else if (ev == button_hal_release_event)
    //{
    //   button_hal_button_t *btn = (button_hal_button_t *)data;

    // printf("%s release event\n", BUTTON_HAL_GET_DESCRIPTION(btn));

    //       if (btn->unique_id == CC26XX_DEMO_TRIGGER_1)
    //       {
    //         // leds_toggle(CC26XX_DEMO_LEDS_BUTTON);
    //       }
    //       else if (btn->unique_id == CC26XX_DEMO_TRIGGER_2)
    //       {
    //         // leds_on(CC26XX_DEMO_LEDS_REBOOT);
    //         // watchdog_reboot();
    // #if BOARD_SENSORTAG
    //       }
    //       else if (btn->unique_id == CC26XX_DEMO_TRIGGER_3)
    //       {
    //         if (buzzer_state())
    //         {
    //           buzzer_stop();
    //         }
    //         else
    //         {
    //           buzzer_start(1000);
    //         }
    //       }
    //     }
    //     else if (ev == sensors_event)
    //     {
    //       if (data == &bmp_280_sensor)
    //       {
    //         get_bmp_reading();
    //       }
    //       else if (data == &opt_3001_sensor)
    //       {
    //         get_light_reading();
    //       }
    //       else if (data == &hdc_1000_sensor)
    //       {
    //         get_hdc_reading();
    //       }
    //       else if (data == &tmp_007_sensor)
    //       {
    //         get_tmp_reading();
    //       }
    //       else if (data == &mpu_9250_sensor)
    //       {
    //         get_mpu_reading();
    // #endif
    //  }
    //}
  }

  PROCESS_END();
}
/*---------------------------------------------------------------------------*/
/**
 * @}
 * @}
 * @}
 */

I am not sure why my chip is not advertising, I have hooked it up and downloaded tirtos stack and simple periphiral app in windows and got it to work, yet I have not been successful on linux/contiki, can anyone offer any help/direction on what to try? I am running out of ideas!

Thanks guys!

Asma

AM3351: DDR2 signal integrity and timing not according to JEDEC compliance measurements

$
0
0

Part Number: AM3351

Hi!

It has been a while on the DDR2 topic, before our equipment was not good and also time was limited to analyze in-depth, but lately we have had time to measure integrity and timing of the DDR2. The previous question about the Vswing is not applicable anymore, we solved the amplitude with an parallel termination on the clock differential and series termination. (Not sure why this is not added in the datasheet as a requirement on the differential clock to the DDR2 device.)

Now we almost finalized the qualification successfully but we run into a few points which are not okay yet. (Below the measurement I'll share details about the design).

1.  When measuring read bursts timing fails on:

- tAC-Diff, CK, DQ which is required to be +/- 500 ps. Measurement results show between -628.75 ps and -282.71 ps.

Histogram hits tAC-Diff

Where the signals are (all measured close to the CPU):

- C1 -> CK_p/n

- C2 -> DQS1_p/n

- C3 -> DQ8

2. Second measurement on read burst where timing fails:

- tDQSQ-Diff, DQ, DQS which is required to be less than +300ps. Measurement results show +396.45ps (with an average of 288.93ps and a low of -387.77ps).

Signals are same as the previous measurement.

3. The third measurement is an signal integrity measurement where we do not meet the JEDEC:

- Vox(ac)DQS, DQS, DQS# where the low limit is 775mV and high limit 1.025V. From the measurement result we see the low limit is not met and results in 421.89mV.

As shown in the histogram we do not meet this JEDEC spec.

Can you advice on these measurements and fails?

The design consist of a DDR2 (ISSI) device (IS43DR16640C-25DBLI) connected to the CPU (AM3351).

The DDR2 settings in the Sitara CPU are as follow:

arch/arm/include/asm/arch-am33xx/ddr_defs.h:28:#define IS43DR16640C25DBLI_EMIF_READ_LATENCY   0x100306
arch/arm/include/asm/arch-am33xx/ddr_defs.h:29:#define IS43DR16640C25DBLI_EMIF_SDCFG                   0x43845732
arch/arm/include/asm/arch-am33xx/ddr_defs.h:30:#define IS43DR16640C25DBLI_EMIF_SDREF                   0x2000040d
arch/arm/include/asm/arch-am33xx/ddr_defs.h:31:#define IS43DR16640C25DBLI_EMIF_TIM1                       0x0666a392
arch/arm/include/asm/arch-am33xx/ddr_defs.h:32:#define IS43DR16640C25DBLI_EMIF_TIM2                       0x142431ca
arch/arm/include/asm/arch-am33xx/ddr_defs.h:33:#define IS43DR16640C25DBLI_EMIF_TIM3                       0x0000021f
arch/arm/include/asm/arch-am33xx/ddr_defs.h:34:#define IS43DR16640C25DBLI_INVERT_CLKOUT            0x0
arch/arm/include/asm/arch-am33xx/ddr_defs.h:35:#define IS43DR16640C25DBLI_IOCTRL_VALUE               0x373
arch/arm/include/asm/arch-am33xx/ddr_defs.h:36:#define IS43DR16640C25DBLI_PHY_FIFO_WE                0x5d
arch/arm/include/asm/arch-am33xx/ddr_defs.h:37:#define IS43DR16640C25DBLI_PHY_WR_DATA               0x40
arch/arm/include/asm/arch-am33xx/ddr_defs.h:38:#define IS43DR16640C25DBLI_RATIO                              0x80
arch/arm/include/asm/arch-am33xx/ddr_defs.h:39:#define IS43DR16640C25DBLI_RD_DQS                          0x40
arch/arm/include/asm/arch-am33xx/ddr_defs.h:40:#define IS43DR16640C25DBLI_WR_DQS                         0x6

PCB trace lengths between CPU (U2000) and DDR2 (U4001) are as follow:

NetLengthTime
DDR2_ADD030.654
U2000.F3:U4001.M830.6540.18765
DDR2_ADD129.890
U2000.J2:U4001.M329.8890.18297
DDR2_ADD230.391
U2000.D1:U4001.M730.3910.18604
DDR2_ADD329.966
U2000.B3:U4001.N229.9660.18344
DDR2_ADD430.377
U2000.E5:U4001.N830.3770.18596
DDR2_ADD530.258
U2000.A2:U4001.N330.2580.18523
DDR2_ADD630.559
U2000.B1:U4001.N730.5590.18707
DDR2_ADD730.033
U2000.D2:U4001.P230.0320.18385
DDR2_ADD830.570
U2000.C3:U4001.P830.5700.18714
DDR2_ADD930.016
U2000.B2:U4001.P330.0160.18375
DDR2_ADD1030.270
U2000.E2:U4001.M230.2700.1853
DDR2_ADD1129.976
U2000.G4:U4001.P729.9760.1835
DDR2_ADD1229.727
U2000.F4:U4001.R229.7270.18198
DDR2_ADD1330.044
U2000.H1:U4001.R830.0440.18392
DDR2_BA029.997
U2000.A3:U4001.L229.9970.18363
DDR2_BA130.262
U2000.E1:U4001.L330.2620.18525
DDR2_BA230.175
U2000.B4:U4001.L130.1750.18472
DDR2_CAS_N30.260
U2000.F1:U4001.L730.2600.18524
DDR2_CKE30.046
U2000.G3:U4001.K230.0460.18394
DDR2_CK_N29.028
U2000.C1:U4001.K829.0290.1774
DDR2_CK_P30.298
U2000.C2:U4001.J830.2980.18515
DDR2_CS0_N30.306
U2000.H2:U4001.L830.3060.18552
DDR2_ODT29.862
U2000.G1:U4001.K929.8620.18281
DDR2_RAS_N30.384
U2000.F2:U4001.K730.3840.186
DDR2_WE_N30.282
U2000.A4:U4001.K330.2830.18538
DDR2_BYTE0(11)
DDR2_DAT017.647
U2000.N4:U4001.C817.6470.10803
DDR2_DAT116.709
U2000.P4:U4001.C216.7090.10229
DDR2_DAT216.851
U2000.P2:U4001.D716.8510.10316
DDR2_DAT317.329
U2000.P1:U4001.D317.3290.10608
DDR2_DAT416.085
U4001.D1:U2000.P316.0850.09847
DDR2_DAT517.386
U2000.T1:U4001.D917.3860.10643
DDR2_DAT615.816
U2000.T2:U4001.B115.8160.09682
DDR2_DAT718.325
U2000.R3:U4001.B918.3250.11218
DDR2_DQM016.827
U2000.N3:U4001.B316.8270.10301
DDR2_DQS0_N15.926
U2000.R2:U4001.A815.9260.09733
DDR2_DQS0_P15.876
U2000.R1:U4001.B715.8760.09703
DDR2_BYTE1(11)
DDR2_DAT816.606
U2000.K2:U4001.G816.6060.10166
DDR2_DAT915.269
U2000.K1:U4001.G215.2690.09347
DDR2_DAT1016.170
U2000.M3:U4001.H716.1700.09899
DDR2_DAT1115.871
U2000.M4:U4001.H315.8710.09716
DDR2_DAT1214.279
U2000.M2:U4001.H114.2790.08741
DDR2_DAT1316.648
U2000.M1:U4001.H916.6480.10192
DDR2_DAT1414.158
U2000.N2:U4001.F114.1580.08667
DDR2_DAT1516.420
U2000.N1:U4001.F916.4200.10052
DDR2_DQM116.364
U2000.K3:U4001.F316.3640.10017
DDR2_DQS1_N15.674
U2000.L2:U4001.E815.6740.0958
DDR2_DQS1_P15.727
U2000.L1:U4001.F715.7270.09612

Thank you in advance!

Francois.

CCS/LAUNCHXL-CC26X2R1: Specific BLE Channels for Data

$
0
0

Part Number: LAUNCHXL-CC26X2R1

Tool/software: Code Composer Studio

Hello,

For the RTLS projects, is it possible to control the channels that is being used and use only specific channels?

If this is possible, where can I find it in the code to modify?

For example, let's say in the picture above, I want to limit it so that it does not use channel 4 or 12.

Is this possible?

Thank you,

Stefano

CCS/AM6548: Example SYSBIOS project for AM6548 ARM A53 won't build

$
0
0

Part Number: AM6548

Tool/software: Code Composer Studio

"C:\\ti\\ccs910\\ccs\\utils\\bin\\gmake" -k -j 8 all -O

Building file: "../app.cfg"
Invoking: XDCtools
"C:/ti/ccs910/xdctools_3_55_02_22_core/xs" --xdcpath="C:/ti/bios_6_75_02_00/packages;" xdc.tools.configuro -o configPkg -t gnu.targets.arm.A53F -p ti.platforms.cortexA:AM6548 -r release -c "C:/ti/ccs910/ccs/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32" "../app.cfg"
making package.mak (because of package.bld) ...
generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ...
configuring app.xa53fg from package/cfg/app_pa53fg.cfg ...
generating custom ti.sysbios library makefile ...
Starting build of library sources ...
making C:/asi/sw/AsiAes67/test/rtp_enc_dec_mem_test/am6548_arm/src/sysbios/sysbios.aa53fg ...
asma53fg C:/ti/bios_6_75_02_00/packages/ti/sysbios/family/arm/IntrinsicsSupport_asm_gnu.sv8A ...
Build of libraries failed.
subdir_rules.mk:12: recipe for target 'build-396579569-inproc' failed
arm-none-eabi-gcc.exe: error: unrecognized argument in option '-mcpu=cortex-a53+fp+simd'
arm-none-eabi-gcc.exe: note: valid arguments to '-mcpu=' are: arm1020e arm1020t arm1022e arm1026ej-s arm10e arm10tdmi arm1136j-s arm1136jf-s arm1156t2-s arm1156t2f-s arm1176jz-s arm1176jzf-s arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm70 arm700 arm700i arm710 arm7100 arm710c arm710t arm720 arm720t arm740t arm7500 arm7500fe arm7d arm7di arm7dm arm7dmi arm7m arm7tdmi arm7tdmi-s arm8 arm810 arm9 arm920 arm920t arm922t arm926ej-s arm940t arm946e-s arm966e-s arm968e-s arm9e arm9tdmi cortex-a12 cortex-a15 cortex-a15.cortex-a7 cortex-a17 cortex-a17.cortex-a7 cortex-a32 cortex-a35 cortex-a5 cortex-a53 cortex-a57 cortex-a57.cortex-a53 cortex-a7 cortex-a72 cortex-a72.cortex-a53 cortex-a73 cortex-a73.cortex-a35 cortex-a73.cortex-a53 cortex-a8 cortex-a9 cortex-m0 cortex-m0.small-multiply cortex-m0plus cortex-m0plus.small-multiply cortex-m1 cortex-m1.small-multiply cortex-m23 cortex-m3 cortex-m33 cortex-m4 cortex-m7 cortex-r4 cortex-r4f cortex-r5 cortex-r52 cortex-r7 cortex-r8 ep9312 exynos-m1 fa526 fa606te fa626 fa626te fa726te fmp626 generic-armv7-a iwmmxt iwmmxt2 marvell-pj4 mpcore mpcorenovfp native strongarm strongarm110 strongarm1100 strongarm1110 xgene1 xscale; did you mean 'cortex-a53'?
arm-none-eabi-gcc.exe: error: unrecognized argument in option '-mabi=lp64'
arm-none-eabi-gcc.exe: note: valid arguments to '-mabi=' are: aapcs aapcs-linux apcs-gnu atpcs iwmmxt
arm-none-eabi-gcc.exe: error: unrecognized command line option '-mcmodel=large'
arm-none-eabi-gcc.exe: error: unrecognized command line option '-mstrict-align'; did you mean '-Wstrict-aliasing'?
arm-none-eabi-gcc.exe: error: unrecognized command line option '-mfix-cortex-a53-835769'; did you mean '-mfix-cortex-m3-ldrd'?
arm-none-eabi-gcc.exe: error: unrecognized command line option '-mfix-cortex-a53-843419'; did you mean '-mfix-cortex-m3-ldrd'?

I feel like I am using the wrong compiler?

main.c contains

/*
 *  ======== main.c ========
 */

#include <xdc/std.h>

#include <xdc/runtime/System.h>

#include <ti/sysbios/BIOS.h>

#include <ti/sysbios/knl/Task.h>

/*
 *  ======== taskFxn ========
 */
Void taskFxn(UArg a0, UArg a1)
{
    System_printf("enter taskFxn()\n");
	
    Task_sleep(10);
	
    System_printf("exit taskFxn()\n");
}

/*
 *  ======== main ========
 */
Int main()
{ 
    /*
     * use ROV->SysMin to view the characters in the circular buffer
     */
    System_printf("enter main()\n");
	
    BIOS_start();    /* does not return */
    return(0);
}

Viewing all 262198 articles
Browse latest View live


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