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的協助 !