千本樱大白 发表于 2020-11-30 18:25

用BlueNRG-X Flasher Utility批量烧写blueNRG-1更改MAC问题

<p>MAC location :设置的是 0x10044BCC</p>

<p>******FLASH OPERATION******</p>

<p>Connected N.1 device by ST Link</p>

<p>17:57:53.953: Waiting device to flash -&gt; Device connected<br />
17:57:54.967: Device Identification -&gt; BlueNRG-1<br />
17:57:55.674: Mass Erase Operation -&gt; SUCCESS<br />
17:57:57.049: Device Flash Programming -&gt; FAILED<br />
17:58:00.917: Device Disconnection -&gt;SUCCESS</p>

<p>17:58:02.009: Flash operation finished!</p>

<p><br />
******END FLASH OPERATION******<br />
发现是写不进去的,想问下那个MAC地址写入是在那个位置的呢?麻烦大佬们了。</p>

littleshrimp 发表于 2020-11-30 19:35

<p></p>

<p>&nbsp;</p>

<p></p>

千本樱大白 发表于 2020-12-1 09:53

<p>#if SERVER<br />
&nbsp; uint8_t role = GAP_PERIPHERAL_ROLE;<br />
&nbsp; uint8_t bdaddr[] = {0xaa, 0x00, 0x00, 0xE1, 0x80, 0x01};<br />
<br />
#else<br />
&nbsp; uint8_t role = GAP_CENTRAL_ROLE;<br />
&nbsp; uint8_t bdaddr[] = {0xbb, 0x00, 0x00, 0xE1, 0x80, 0x02};<br />
#endif&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp; /* Configure Public address */<br />
&nbsp;ret = aci_hal_write_config_data(CONFIG_DATA_PUBADDR_OFFSET, CONFIG_DATA_PUBADDR_LEN, bdaddr);<br />
&nbsp; if(ret != BLE_STATUS_SUCCESS){<br />
&nbsp; &nbsp; printf(&quot;Setting BD_ADDR failed: 0x%02x\r\n&quot;, ret);<br />
&nbsp; &nbsp; return ret;<br />
&nbsp; }</p>

<p>&nbsp;</p>

<p>烧写是成功了,但是MAC仍然是aa, 00, 00, E1, 80, 01这个地址,用的是BLE_Examples\BLE_Chat的代码</p>

littleshrimp 发表于 2020-12-7 12:42

千本樱大白 发表于 2020-12-1 09:53
#if SERVER
&nbsp; uint8_t role = GAP_PERIPHERAL_ROLE;
&nbsp; uint8_t bdaddr[] = {0xaa, 0x00, 0x00, ...

<p>BlueNRG-X Flasher Utility是将你要定义的地址写到FLASH的指定位置</p>

<p>在你的代码里bdaddr使用了内存定义好的地址,所以BlueNRG-X Flasher Utility写入的地址不会使你的程序发生变化</p>

<p>如果要使用BlueNRG-X Flasher Utility烧写的地址,你的代码里要把对应FLASH地址的数据映射到bdaddr上</p>

<p>比如可以这样</p>

<p></p>

<p>然后再通过BlueNRG-X Flasher Utility烧写固件,地址才会发生变化</p>

<p></p>

千本樱大白 发表于 2020-12-9 09:54

littleshrimp 发表于 2020-12-7 12:42
BlueNRG-X Flasher Utility是将你要定义的地址写到FLASH的指定位置

在你的代码里bdaddr使用了内存定义 ...

<p>好的,谢谢啦</p>

aldlkd 发表于 2022-7-19 20:16

<p></p>

aldlkd 发表于 2022-7-19 20:20

<div class='shownolgin' data-isdigest='no'>littleshrimp 发表于 2020-11-30 19:35
&nbsp;

<p>您好,我使用BLUNRG-2,也是需要批量烧写采用Utility设置MAC地址,但是无法设置成功,可以帮忙看看什么原因吗,谢谢</p></div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

littleshrimp 发表于 2022-7-19 23:32

<div class='shownolgin' data-isdigest='no'><p>你可以先看一下这个文档</p>

<p></p>
</div><script>showreplylogin();</script>

aldlkd 发表于 2022-7-20 09:50

<div class='shownolgin' data-isdigest='no'>littleshrimp 发表于 2022-7-19 23:32
你可以先看一下这个文档

<p>您好,不用Utility,直接在代码里修改物理地址,也无法修改成功,这是什么原因?</p>
</div><script>showreplylogin();</script>

littleshrimp 发表于 2022-7-22 09:56

<div class='shownolgin' data-isdigest='no'>aldlkd 发表于 2022-7-20 09:50
您好,不用Utility,直接在代码里修改物理地址,也无法修改成功,这是什么原因?

<p>你用的官方例程还是自己写的代码?</p>
</div><script>showreplylogin();</script>

aldlkd 发表于 2022-7-23 08:58

<div class='shownolgin' data-isdigest='no'>littleshrimp 发表于 2022-7-22 09:56
你用的官方例程还是自己写的代码?

<p>感谢虾哥帮忙,我们用的历程中直接修改,不过这个问题我们使用其他方式解决,通过广播数据来分辨不同蓝牙物理地址。</p>

<p>现在还有一个问题,就是我们的休眠功耗降不下来,达到了1mA</p>

<p>1.首先是休眠时仍然存在广播,我们利用aci_gap_set_non_discoverable()关闭广播,然后aci_gap_set_discoverable开启广播,但是发现无法开启广播,看了文档,进入待机状态,是不是无法通过设置的唤醒源进行唤醒,那应该如何关闭广播?</p>

<p>2.其次通过设置gpio的 Mode 来降低功耗</p>
</div><script>showreplylogin();</script>

littleshrimp 发表于 2022-7-23 11:58

<div class='shownolgin' data-isdigest='no'>aldlkd 发表于 2022-7-23 08:58
感谢虾哥帮忙,我们用的历程中直接修改,不过这个问题我们使用其他方式解决,通过广播数据来分辨不同蓝牙 ...

<p>我在私信里的回复看了吗 那里有一个低功耗大赛的链接 那里有很多例程 你可以看看</p></div><script>showreplylogin();</script>

raymanshf 发表于 2023-8-15 18:12

<div class='shownolgin' data-isdigest='no'><p>虾哥,我看看可以吧</p>
</div><script>showreplylogin();</script>
页: [1]
查看完整版本: 用BlueNRG-X Flasher Utility批量烧写blueNRG-1更改MAC问题