PSOC 6 BLE Bluetooth address duplication

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
MaSa_4283876
Level 1
Level 1

I have 2 PSOC 6 Proto boards and am advertising with both.  I am also using CySmart to look at the advertisements.

The problem is that they Both have the same Bluetooth Address of 80:CD:AB:CD:AB:80 and CySmart will only scan one of them.  How do I get the address to be unique?

Changing the Public Address field of the GAP Settings->General settings seems to make no difference.

Mark

0 Likes
1 Solution

1 is for public address and 0 is for random address.

For your original question, we will update our FW and correct it in the next update.

View solution in original post

0 Likes
7 Replies
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

Are you using the Creator for your development? Could you check the following KBA to see if there is something wrong with your configuration?

Setting Bluetooth Device Address - KBA211407

If it still doesn't work, could you share your project for us?

0 Likes

Sorry this took so long.  I have been sidelined off this project for a bit.

I am attaching a project zip file that is a very stripped down version of what I am trying to do.

The KBA was using a PSOC 4 which is a different interface but should have been similar.

0 Likes

There are some initial data in the sflash BD Address aera. You can use the API Cy_BLE_GAP_SetBdAddress to set the BD_ADDR.

0 Likes

I can change the address with the API call but who does PSoC Creator have a field for setting the address but doesn't do anything with it.

0 Likes

I checked the code and it may not be the problem I mentioned before. It seems the problem only happens when you choose broadcaster only. I am checking this problem with our FW team and need some time for the answer.

I also isolated the following the problem.

I Generate a Random address using This code in the stack handler.

        case CY_BLE_EVT_STACK_ON:

            cy_stc_ble_stack_random_num_param_t seed;  // whatever is in the stack is good enough for me.

            apiResult = Cy_BLE_GenerateRandomNumber(&seed);

            break;

        case CY_BLE_EVT_RANDOM_NUM_GEN_COMPLETE:

            AddrInfo.addrType = CY_BLE_GAP_RANDOM_STATIC_ADDR;

            Cy_BLE_GAP_GenerateBdAddress(&AddrInfo);

            break;

           

        case CY_BLE_EVT_GAP_DEVICE_ADDR_GEN_COMPLETE:

            memcpy(Address.bdAddr, AddrInfo.gapBdAddr.bdAddr, 6);

            Address.type = 0;

            Cy_BLE_GAP_SetBdAddress(&Address);

If I set Address.type to 1 nothing gets set and I see the default address being broadcast,

If I set Address.type to 0 I get my generated address labeled as public.

Mark

0 Likes

1 is for public address and 0 is for random address.

For your original question, we will update our FW and correct it in the next update.

0 Likes