Other Parts Discussed in Thread: UNIFLASH
我使用
並且設定
然後分別使用IOS以及安卓手機測試,
安卓手機 : 有廣播,並且廣播顯上的address已經更改為CF,FF,FF,FF,FF,CF ,但是connect跟他連線連不上去
IOS手機: 掃描不到廣播
是否有其他能成功更改MAC Address的方法並且能夠成功掃描以及廣播
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.
是的,之前测试出来发现 iOS 端的 Simplelink Connect App 有一些 Bug 待修复。
您可以去 E2E 论坛问一下这个 Bug 现在是否已经修复好了。
想釐清幾個問題:
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的更改,並且能夠成功連線跟廣播。
謝謝,我已經在E2E上面詢問。
目前得到的資訊是CC2340有兩種位址
1.公共位址(已經燒錄在chip上,不能被更改)
2.隨機位址(可以透過.Syscfg去設置,HCI_EXT_SetBDADDR()也是用來設置隨機位址)
但是.Syscfg又分四種Address Mode,
1.Public Address
2.Random Static Address
3.RPA with Public ID
4.RPA with Random ID
也就是說,如果要自訂Address,似乎只能使用Random Static Address,因為RPA的模式會導致位址在timeout後變動。
但HCI_EXT_SetBDADDR()不確定是否能在"非初始化"期間呼叫?
等一下 E2E 回复吧,一般来说,文档中没有特别说明,那么 HCI_EXT_SetBDADDR() 命令是可以在非初始化期间调用的:https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1334117/cc2340r5-ble-mac-address/5079250#5079250
了解,
那麼Random Static Address即使在Syscfg中設置初始值後,只要重新開機或燒錄Address也是會跟著改變,不會一直保持在初始值?
如果要讓Address在任何狀況下都不會改變,是否只能使用Public Address
是的,Random Static Address 是固定的随机地址,虽然初始值设定了,但每次烧录或启动时,芯片会重新生成一个随机地址,导致地址变化。
Public Address 是唯一且固定的地址,设备每次重新启动都不会改变。
了解,
想詢問是否有其他能夠更改CC2340 Public Address的方法,例如利用軟件去修改等等?
E2E上的工程師回覆說Public Address是不太容易被更改的
但是我有查詢到像是CC2652 在uniFlash是可以去設定MAC address
或像是Flash Programmer 2這種軟件可以去寫入MAC
MAC Address 和 Public Address 是两个不同的概念。
能夠更改CC2340 Public Address的方法,例如利用軟件去修改等等?
公共地址是由蓝牙设备的固件生成的,通常需要修改芯片的配置或特定的命令来实现,如果您有这方面的需求,建议问 E2E 如何操作。
MAC Address 是设备的身份地址,一般不需要修改的。
已經解決了MAC Address問題,首先要將Syscfg設置成Public Address,之後在App_StackInitDoneHandler()的開頭去呼叫HCI_EXT_SetBDADDRCmd()就可以刷新Public Address。廣播出來的MAC Address就會是修改過後的,並且也可以成功連線
謝謝Yolande的協助 !