This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1120EM-868-915-RD: Packet Tx with different CC1120 revisions

Part Number: CC1120EM-868-915-RD
Other Parts Discussed in Thread: CC1120

Hi, 

I have two CC1120 modules:

  • fisrt one identified in smartRF studio with rev # 2.1
  • the second identified in smartRF studio with rev # 2.3 and it has addtional note on its sticker "for Evaluation only; Not FCC approved..."

while trying to send a simple packet using perl script the CC1120 rev. 2.1 works fine and all packets receievd on but when I'm using the CC1120 rev. 2.3 I get nothing

is there any change in Perl commands i'm not aware of? 

can someone explain what is the issue or help ,me find a solution? 

Thanks. 

Here's the perl script i'm using: 

#!c:/Perl/bin/perl.exe
# *****************************************************************************
#
#    File:     dal_send.pl
#
#    Brief:    This script emulates the Packet TX function in SmartRF Studio.
#
# *****************************************************************************
#
use dal_eb;

# This script works AS IS with all IEEE 802.15.4 compatible devices. To use it
# with other RF devices, you must include a file that contains the register 
# settings you want to use (uncomment the line below, and adapt the file to your
# needs). Register settings files can be generated by SmartRF Studio 7, Device
# Control Panel -> Register Export. Select PERL as template, and export to the
# file you want to use with this script (default dal_registers.pl).
#
require "CC1120.pl";
my $Packet = @ARGV[0];
my $F2 = @ARGV[1];
my $F1 = @ARGV[2];
my $F0 = @ARGV[3];
my $Power = @ARGV[4];
my $amount = @ARGV[5];
my $Interval = @ARGV[6];
my $HexPacket = $Packet;
$HexPacket =~ s/(.)/sprintf("%x",ord($1))/eg;
print "The Packet is $Packet $HexPacket\n";
print "The Frequancy is $F2$F1$F0\n";
print "The Power is $Power dBm\n";
print "The Interval is $Interval mSec\n";

# Start application
my $dal= new dal_ext::DALExt(); # Create DAL object
my $status= $dal->getStatus();
print "DAL creation status: $status\n";
die unless $status eq 0;

# Select the EB that will act as transmitter (index in enumeration list). The list
# is ordered by USB Device ID (ascending order).
my $ebDevIndex = 0;
my $packetInterval = 1; # Second

# Enumerate devices
$devicename= &DalEb::deviceEnum($dal,$ebDevIndex);

if ($devicename)
{
  # A device is found at the requested EB index
  $dev= new dal_ext::DALExtDevice($devicename);
  print $dal->getErrorMessage() . "\n";

  die unless &DalEb::connectEB($dev,$ebDevIndex) eq 0;
   
    
  # Using custom register settings
  writeRegisters($dev, $F2, $F1, $F0) if $fRegsDefined;
  $dev->writeRegister("PA_CFG2", $Power);

  
  
    
  # Place RF device in TX mode
  print "$ebDevIndex: TX enable ";
  $dev->setRegPacketTx();
  die "Init TX failed" unless $dev->initTx() eq 0;
  print "OK\n";

  
  # my $regname = "PA_CFG2";
  # $value = $dev->readRegister($regname);
  #    print "MARCSTATE = $value\n";

  if ($devicename eq "CC1200")
  {
    # Make sure it is in IDLE state 
    my $regname = "MARCSTATE";
    my $value = 0;
    my $count = 0;
    while (($value != 65) && ($count < 100))
    {
      $value = $dev->readRegister($regname);
      print "MARCSTATE = $value\n";
      $count++;
    }
    
    die "Device not in IDLE state." unless $count < 100;
  }

my $regname = "PA_CFG2";
   $value = $dev->readRegister($regname);
      print "PA_CFG2 = $value requested $Power\n\n";

  $dev->setPktInterval($Interval); 
    
  # Start packet transmission
  
  my $i= 0;
  while ($i<$amount)
  {
    print "$ebDevIndex: send #$i $Packet ...\n";
    #$buf= $dev->sendPacket($Packet,0);
    $buf= $dev->sendPacket($HexPacket,0);
    
    $i++;
  }
    
  $dev->DESTROY();
}

$dal->DESTROY();