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.

CC1352R: Unable to receive data from Sub-1GHz "Sensor" example using the "CoProcessor" example.

Part Number: CC1352R


Hello!

I'm trying to connect and receive the data sent by a CC1352 running the "sensor" example, by using another CC1352 running the "coprocessor" example. However, I never receive the sensor data through the serial port.

P.S.: I am aware of the existence of a Texas Instruments-made example for running the "collector" example in a BeagleBone connected to a "coprocessor", however it is not 100% clear to me what exactly that code is doing, in terms of the bytes sent through serial communication.

Setup:

  • 1 CC1352 running coprocessor example connected through the serial port to a Windows PC running a Python script;
  • 1 CC1352 running the Sensor example.

I have developed the following Python 3 code to interact with the "coprocessor" example through the serial port. This is not the complete code, so, please, take this as just a pseudo code reference for what is happening. The code basically configures the "coprocessor", opens a network, accepts a connection and then "waits forever" (basically just printing out whatever it receives).

MAC_EXTENDED_ADDRESS = [0x00, 0x12, 0x4b, 0x00, 0x0b, 0xc9, 0xcb, 0x06]
MAC_PHY_CURRENT_DESCRIPTOR_ID = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]
MAC_CHANNEL_PAGE = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09]
MAC_RX_ON_WHEN_IDLE = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]
MAC_SHORT_ADDRESS = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xbb]
CONFIG_RANGE_EXT_MODE = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
MAC_TRANSACTION_PERSISTENCE_TIME = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0]
MAC_PHY_TRANSMIT_POWER_SIGNED = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e]
MAC_MIN_backoffExponent = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03]
MAC_MAX_backoffExponent = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05]
MAC_MAX_CSMA_BACKOFFS = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04]
MAC_MAX_FRAME_RETRIES = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03]

START_TIME = [0x00, 0x00, 0x00, 0x00]
PAN_ID = [0xff, 0xff]
LOGICAL_CHANNEL = [0]
CHANNEL_PAGE = [9]
PHY_ID = [1]
BEACON_ORDER = [15]
SUPER_FRAME_ORDER = [15]
PAN_COORDINATOR = [1]
BATTERY_LIFE_EXT = [0]
COORD_REALIGNMENT = [0]
REALIGN_KEY_SOURCE = [0x00]*8 # ?
REALIGN_SECURITY_LEVEL = [0x00] # ?
REALIGN_KEY_ID_MODE = [0x00] # ?
REALIGN_KEY_INDEX = [0x00] # ?
BEACON_KEY_SOURCE = [0x00]*8 # ?
BEACON_SECURITY_LEVEL = [0x00] # ?
BEACON_KEY_ID_MODE = [0x00] # ?
BEACON_KEY_INDEX = [0x00] # ?
START_FH = [1]
ENH_BEACON_ORDER = [15]
OFS_TIME_SLOT = [10] # Minimum value
NON_BEACON_ORDER = [0x3f, 0xff]
NUM_I_ES = [0]
IEID_LIST = []

send(s, SYS_RESET_REQ_SREQ([0]))
wait_for(s, SYS_RESET_IND)

# Begin
send(s, SYS_VERSION_REQ_SREQ())
wait_for(s, SYS_VERSION_REQ_SRSP)

send(s, MAC_RESET_REQ_SREQ(SetDefault=[1]))
wait_for(s, MAC_RESET_REQ_SRSP)

send(s, MT_UTIL_GET_EXT_ADDR_SREQ(Type=[1]))
wait_for(s, MT_UTIL_GET_EXT_ADDR_SRSP)

send(s, MT_UTIL_GET_EXT_ADDR_SREQ(Type=[2]))
wait_for(s, MT_UTIL_GET_EXT_ADDR_SRSP)

# MAC_EXTENDED_ADDRESS
send(s, MAC_SET_REQ_SREQ(AttributeID=[0xe2], AttributeValue=MAC_EXTENDED_ADDRESS))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_PHY_CURRENT_DESCRIPTOR_ID
send(s, MAC_SET_REQ_SREQ(AttributeID=[0xe8], AttributeValue=MAC_PHY_CURRENT_DESCRIPTOR_ID))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_CHANNEL_PAGE
send(s, MAC_SET_REQ_SREQ(AttributeID=[0xe7], AttributeValue=MAC_CHANNEL_PAGE))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_RX_ON_WHEN_IDLE
send(s, MAC_SET_REQ_SREQ(AttributeID=[0x52], AttributeValue=MAC_RX_ON_WHEN_IDLE))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_SHORT_ADDRESS
send(s, MAC_SET_REQ_SREQ(AttributeID=[0x53], AttributeValue=MAC_SHORT_ADDRESS))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_TRANSACTION_PERSISTENCE_TIME
send(s, MAC_SET_REQ_SREQ(AttributeID=[0x55], AttributeValue=MAC_TRANSACTION_PERSISTENCE_TIME))
wait_for(s, MAC_SET_REQ_SRSP)

# rangeExtender
send(s, MAC_SET_REQ_SREQ(AttributeID=[0xf5], AttributeValue=CONFIG_RANGE_EXT_MODE))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_PHY_TRANSMIT_POWER_SIGNED
send(s, MAC_SET_REQ_SREQ(AttributeID=[0xe0], AttributeValue=MAC_PHY_TRANSMIT_POWER_SIGNED))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_MIN_backoffExponent
send(s, MAC_SET_REQ_SREQ(AttributeID=[0x4f], AttributeValue=MAC_MIN_backoffExponent))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_MAX_backoffExponent
send(s, MAC_SET_REQ_SREQ(AttributeID=[0x57], AttributeValue=MAC_MAX_backoffExponent))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_MAX_CSMA_BACKOFFS
send(s, MAC_SET_REQ_SREQ(AttributeID=[0x4e], AttributeValue=MAC_MAX_CSMA_BACKOFFS))
wait_for(s, MAC_SET_REQ_SRSP)

# MAC_MAX_FRAME_RETRIES
send(s, MAC_SET_REQ_SREQ(AttributeID=[0x59], AttributeValue=MAC_MAX_FRAME_RETRIES))
wait_for(s, MAC_SET_REQ_SRSP)

print('Opening PAN network...')
send(s, MAC_START_REQ_SREQ(
    StartTime=START_TIME,
    PanId=PAN_ID,
    LogicalChannel=LOGICAL_CHANNEL,
    ChannelPage=CHANNEL_PAGE,
    PhyId=PHY_ID,
    BeaconOrder=BEACON_ORDER,
    SuperFrameOrder=SUPER_FRAME_ORDER,
    PanCoordinator=PAN_COORDINATOR,
    BatteryLifeExt=BATTERY_LIFE_EXT,
    CoordRealignment=COORD_REALIGNMENT,
    RealignKeySource=REALIGN_KEY_SOURCE,
    RealignSecurityLevel=REALIGN_SECURITY_LEVEL,
    RealignKeyIdMode=REALIGN_KEY_ID_MODE,
    RealignKeyIndex=REALIGN_KEY_INDEX,
    BeaconKeySource=BEACON_KEY_SOURCE,
    BeaconSecurityLevel=BEACON_SECURITY_LEVEL,
    BeaconKeyIdMode=BEACON_KEY_ID_MODE,
    BeaconKeyIndex=BEACON_KEY_INDEX,
    StartFH=START_FH,
    EnhBeaconOrder=ENH_BEACON_ORDER,
    OfsTimeSlot=OFS_TIME_SLOT,
    NonBeaconOrder=NON_BEACON_ORDER,
    NumIEs=NUM_I_ES,
    IEIDList=IEID_LIST,
))
wait_for(s, MAC_START_REQ_SRSP)
wait_for(s, MAC_START_CNF)
print('PAN network openned.')

send(s, MAC_SET_REQ_SREQ(AttributeID=[0x41], AttributeValue=[0x01])) # open network
wait_for(s, MAC_SET_REQ_SRSP)

print('Waiting for connection...')
p = wait_for(s, MAC_ASSOCIATE_IND)

send(s, MAC_ASSOCIATE_RSP_SREQ(
    ExtendedAddress=p[3:3+8][::-1],
    AssocShortAddress=[0xac, 0xb1], # I created this address
    AssocStatus=[0x00],
    KeySource=p[12:12+8][::-1],
    SecurityLevel=[p[20]],
    KeyIdMode=[p[21]],
    KeyIndex=[p[22]],
))
wait_for(s, MAC_ASSOCIATE_RSP_SRSP)
print('Connection accepted.')

print('Waiting forever.')
wait_for(s, WAIT_FOREVER)

The output of the program, containing every message exchanged between the computer and the "coprocessor" in hexadecimal ("OUT" meaning leaving the computer, "IN" meaning being received by the computer), is the following:

[       SYS_RESET_REQ_SREQ] OUT: 0x1 0x41 0x0 0x0
[            SYS_RESET_IND]  IN: 0x6 0x41 0x80 0x1 0x3 0x1 0x2 0x2 0x0
[     SYS_VERSION_REQ_SREQ] OUT: 0x0 0x21 0x2
[     SYS_VERSION_REQ_SRSP]  IN: 0x5 0x61 0x2 0x3 0x1 0x2 0x2 0x0
[       MAC_RESET_REQ_SREQ] OUT: 0x1 0x22 0x1 0x1
[       MAC_RESET_REQ_SRSP]  IN: 0x1 0x62 0x1 0x0
[MT_UTIL_GET_EXT_ADDR_SREQ] OUT: 0x1 0x27 0xee 0x1
[MT_UTIL_GET_EXT_ADDR_SRSP]  IN: 0x9 0x67 0xee 0x1 0x22 0x94 0xa1 0x1c 0x0 0x4b 0x12 0x0
[MT_UTIL_GET_EXT_ADDR_SREQ] OUT: 0x1 0x27 0xee 0x2
[MT_UTIL_GET_EXT_ADDR_SRSP]  IN: 0x9 0x67 0xee 0x2 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
[         MAC_SET_REQ_SREQ] OUT: 0x9 0x22 0x9 0xe2 0x6 0xcb 0xc9 0xb 0x0 0x4b 0x12 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0xe8 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0xe7 0x9 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0x52 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0x53 0xbb 0xaa 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0x55 0xd0 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0xf5 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0xe0 0xe 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0x4f 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0x57 0x5 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0x4e 0x4 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
[         MAC_SET_REQ_SREQ] OUT: 0x11 0x22 0x9 0x59 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
Opening PAN network...
[       MAC_START_REQ_SREQ] OUT: 0x2a 0x22 0x3 0x0 0x0 0x0 0x0 0xff 0xff 0x0 0x9 0x1 0xf 0xf 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0xf 0xa 0xff 0x3f 0x0
[       MAC_START_REQ_SRSP]  IN: 0x1 0x62 0x3 0x0
[            MAC_START_CNF]  IN: 0x1 0x42 0x8e 0x0
PAN network openned.
[         MAC_SET_REQ_SREQ] OUT: 0x2 0x22 0x9 0x41 0x1
[         MAC_SET_REQ_SRSP]  IN: 0x1 0x62 0x9 0x0
Waiting for connection...
[        MAC_ASSOCIATE_IND]  IN: 0x14 0x42 0x81 0x22 0x91 0xa1 0x1c 0x0 0x4b 0x12 0x0 0x80 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[   MAC_ASSOCIATE_RSP_SREQ] OUT: 0x16 0x22 0x50 0x22 0x91 0xa1 0x1c 0x0 0x4b 0x12 0x0 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
[   MAC_ASSOCIATE_RSP_SRSP]  IN: 0x1 0x62 0x50 0x0
Connection accepted.
Waiting forever.
[             WAIT_FOREVER]  IN: 0xc 0x42 0x91 0x3 0x22 0x91 0xa1 0x1c 0x0 0x4b 0x12 0x0 0xff 0xff 0x1
 IN: 0x21 0x42 0x8d 0x0 0x2 0xbb 0xaa 0x0 0x0 0x0 0x0 0x0 0x0 0x3 0x22 0x91 0xa1 0x1c 0x0 0x4b 0x12 0x0 0xff 0xff 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0xc 0x42 0x91 0x2 0xb1 0xac 0x0 0x0 0x0 0x0 0x0 0x0 0xff 0xff 0x1
 IN: 0x13 0x42 0x8a 0x22 0x91 0xa1 0x1c 0x0 0x4b 0x12 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0

The last message you see (last line of the output) is, according to C:\ti\simplelink_cc13x2_26x2_sdk_3_10_01_11\docs\ti154stack\ti-15.4-stack-cop-interface-guide.pdf, a MAC_ORPHAN_IND, which I believe means the sensor got disconnected for some reason.

What am I missing here? Why does the sensor get disconnected? Why am I unable to receive the periodical sensor data?