TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2340R5: BLE MAC Address

Part Number:CC2340R5Other Parts Discussed in Thread:UNIFLASH

我使用

並且設定

然後分別使用IOS以及安卓手機測試,

安卓手機 : 有廣播,並且廣播顯上的address已經更改為CF,FF,FF,FF,FF,CF ,但是connect跟他連線連不上去

IOS手機: 掃描不到廣播

是否有其他能成功更改MAC Address的方法並且能夠成功掃描以及廣播

Yolande Wang:

您好,

将 Address Mode 更改为 Public Address 试试。

,

Ryan:

一樣的狀況,設定public無法連線,設定Random甚至連MAC Address都沒有修改成功

,

Ryan:

有可能是因為MAC address更新,app.connection那邊沒有更新導致無法連線嗎?

,

Yolande Wang:

是的,之前测试出来发现 iOS 端的 Simplelink Connect App 有一些 Bug 待修复。

您可以去 E2E 论坛问一下这个 Bug 现在是否已经修复好了。

,

Ryan:

是只有IOS端有問題嗎?但我測試安卓端,是可以掃描的到廣播,但是無法連線

,

Yolande Wang:

有报什么错误吗,用 LightBlue App 可以正常连接吗?

,

Ryan:

並沒有報甚麼錯誤,但是會一直在connecting的狀態,我使用的是nRF App去測試

,

Ryan:

想釐清幾個問題:

1.CC2340是否有兩個位址,

第1個是預設位址也可稱為主位址,而這個位址已經被燒錄在chip上面,所以是不能被更改的。第2個是備用位址也稱為Secondary Address,他是可以透過像是.Syscfg的Random Address模式 或是 Flash Programmer軟件 或是 HCI_EXT_SetBDADDR()這個Function等等去進行設置。

而如果有設置Secondary Address的話,CC2340就會覆蓋掉"主位址",使用"Secondary Address"當作Device Address,所以廣播上顯示的Address就會被更改為"Secondary Address",我的理解是對的嗎?2.文章我所貼的圖片,HCI_EXT_SetBDADDR()是用來更改"Secondary Address"嗎?3.如果第1跟第2點的問題成立,那麼HCI_EXT_SetBDADDR()這個API有註解,這個API只能在初始化期間使用,而且CC2340要在Standby的狀態,目前我是在"非初始化"的狀態HCI_EXT_SetBDADDR()呼叫,有可能是這個原因造成雖然廣播顯示出的Address有被更改,但無法連線的問題嗎?4.HCI_EXT_SetBDADDR()註解中提到的"初始化"期間,是指哪個初始化? 是appMain() – > BLEAppUtil_init(&criticalErrorHandler, &App_StackInitDoneHandler,&appMainParams, &appMainPeriCentParams)這一個嗎?5..如果第3點問題成立,那麼是否有任何方法可以透過code在"非初始化"的時候進行更改Address(不使用軟件或是.Syscfg)? 

例如我建置一個Function,當我透過藍芽下Command進入這個Function,就能夠進行Secondary Address的更改,並且能夠成功連線跟廣播。

,

Yolande Wang:

我将您的问题升级到 E2E 询问一下,请等候。

,

Ryan:

謝謝,我已經在E2E上面詢問。目前得到的資訊是CC2340有兩種位址1.公共位址(已經燒錄在chip上,不能被更改)

2.隨機位址(可以透過.Syscfg去設置,HCI_EXT_SetBDADDR()也是用來設置隨機位址)但是.Syscfg又分四種Address Mode,1.Public Address

2.Random Static Address3.RPA with Public ID4.RPA with Random ID也就是說,如果要自訂Address,似乎只能使用Random Static Address,因為RPA的模式會導致位址在timeout後變動。但HCI_EXT_SetBDADDR()不確定是否能在"非初始化"期間呼叫?

,

Yolande Wang:

好的,

Ryan 说:HCI_EXT_SetBDADDR()不確定是否能在"非初始化"期間呼叫?

通常是可以在非初始化期间调用的。

,

Ryan:

我目前在中斷廣播後進行這樣的操作 但是更新後還是無法連線

,

Yolande Wang:

等一下 E2E 回复吧,一般来说,文档中没有特别说明,那么 HCI_EXT_SetBDADDR() 命令是可以在非初始化期间调用的:https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1334117/cc2340r5-ble-mac-address/5079250#5079250

,

Ryan:

這個文章的回覆,似乎是不能在非初始化期間調用

,

Yolande Wang:

是的,以文档上的说明为主

,

Ryan:

了解,那麼Random Static Address即使在Syscfg中設置初始值後,只要重新開機或燒錄Address也是會跟著改變,不會一直保持在初始值?如果要讓Address在任何狀況下都不會改變,是否只能使用Public Address

,

Yolande Wang:

是的,Random Static Address 是固定的随机地址,虽然初始值设定了,但每次烧录或启动时,芯片会重新生成一个随机地址,导致地址变化。

Public Address 是唯一且固定的地址,设备每次重新启动都不会改变。

,

Ryan:

了解,

想詢問是否有其他能夠更改CC2340 Public Address的方法,例如利用軟件去修改等等?E2E上的工程師回覆說Public Address是不太容易被更改的但是我有查詢到像是CC2652 在uniFlash是可以去設定MAC address或像是Flash Programmer 2這種軟件可以去寫入MAC 

,

Yolande Wang:

MAC Address 和 Public Address 是两个不同的概念。

Ryan 说:能夠更改CC2340 Public Address的方法,例如利用軟件去修改等等?

公共地址是由蓝牙设备的固件生成的,通常需要修改芯片的配置或特定的命令来实现,如果您有这方面的需求,建议问 E2E 如何操作。

MAC Address 是设备的身份地址,一般不需要修改的。

,

Ryan:

了解,謝謝

,

Yolande Wang:

不客气

,

Ryan:

已經解決了MAC Address問題,首先要將Syscfg設置成Public Address,之後在App_StackInitDoneHandler()的開頭去呼叫HCI_EXT_SetBDADDRCmd()就可以刷新Public Address。廣播出來的MAC Address就會是修改過後的,並且也可以成功連線謝謝Yolande的協助 ! 

赞(0)
未经允许不得转载:TI中文支持网 » CC2340R5: BLE MAC Address
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1